Циклы в 1С

Циклы в 1С

 

Внимание! В конце статьи ссылка на видеоурок.
Если Вы раньше не сталкивались с программированием, то вероятно не совсем понятна необходимость использования цикла в программе 1С. В этой статье я расскажу об операторах цикла, а также об их основном назначении.


Но сначала, для ясности, несколько пояснений об употребляемых в статье выражениях:
Итерация – это повторение.
Операторные скобки – зарезервированные слова, которые всегда записываются парами, открывающим оператором и закрывающим оператором. Например: Функция – КонецФункции, Если – КонецЕсли, Для – КонецЦикла и т.д.
Тело цикла – программный код находящийся внутри операторных скобок цикла.
Цикл – это конструкция, которая повторяет выполнение строк находящихся в теле цикла, количество повторений зависит от результата выполнения условий в начале цикла.

Если бы не было этого оператора, то код находящийся внутри цикла пришлось бы написать столько раз сколько итераций нам нужно. Представляете, если в документе 100 строк и их надо перебрать и, допустим, изменить значение, а если при этом их количество периодически меняется, т.е. они добавляются и удаляются. Это было бы не просто.
Цикл позволяет упростить задачу с выполнением повторяющихся строк кода.
В программе 1С 8.1 существует три конструкции цикла:
«Для .. По .. Цикл» - повторяет количество циклов с начального значения счетчика до конечного указанного значения, прибавляя 1 к переменной счетчика при каждой итерации. Используется когда известно количество итераций.

Для Счетчик = 1 По 3 Цикл
    //Тело цикла
КонецЦикла;


«Пока … Цикл» - выполняется пока вычисляемое значение равно Истина. Может использоваться в случаях, когда переменные для вычисления выражения меняются в теле цикла либо, если перебирается коллекция и у нее есть соответствующий метод возвращающий булево, который вызывается в начале цикла.

 

Пока Выборка.Следующий() Цикл
    //Тело цикла
КонецЦикла;

 

«Для Каждого … Из … Цикл» перебирает коллекцию с первого по последний элемент. Записывая в переменную(в примере: ТекЭлемент) значение элемента.

Для Каждого ТекЭлемент Из МассивЭлементов Цикл
    //Тело цикла
КонецЦикла;

Также существует обратный цикл, который можно использовать для обхода коллекций снизу вверх. Такой способ может понадобиться если нужно удалять элементы коллекции

КоличествоЭлементов = МассивЭлементов.Количество();
Для ОбратныйИндекс = 1 По КоличествоЭлементов Цикл
    ТекЭлемент = МассивЭлементов[КоличествоЭлементов - ОбратныйИндекс];
КонецЦикла;

Операторы продолжить и прервать рассматриваются в видео, ссылка ниже.

Более подробно о циклах 1C Вы можете узнать из видеоурока, скачав файл по этой ссылке.

Комментарии   

+1 #4 Administrator 15.05.2012 16:22
Александр12, если коротко, то между словами "Пока" и "Цикл" пишется выражение, результатом вычисления которого должно быть значение "Истина", чтобы программа зашла внутрь цикла. В указанном Вами примере "1=1", 1 действительно равно 1, следовательно программа зайдет внутрь цикла. Выражения могут быть любые, а не только сравнения чисел. Примеры есть в видеоуроке, ссылка на файл в конце статьи. Если что-то не понятно пишите, постараюсь объяснить.
Цитировать
0 #3 Guest 14.05.2012 19:25
Прочитал тему. Как начинающему мне непонятно как используется данный метод (ЦИКЛ), то есть "Пока 1=1 Цикл", что значит единица слева и что значит справа?. Подскажите, пожалуйста.
Цитировать
+1 #2 Administrator 03.08.2011 12:15
Можно, для помощи нужна более конкретная информация, что не получается. Задайте вопрос на форуме в разделе "Общие вопросы 1С" или напишите мне письмо.
Цитировать
0 #1 Guest 03.08.2011 05:49
Можно ли с помощью цикла решить задачку?
Изменить цены уже набранной номенклатуры для одного контрагента, на цены выбранного. (1С:Предприятие 8.1 (8.1.14.72))
Цитировать

Добавить комментарий

>>> Комментарии от незарегистрированных пользователей будут опубликованы после ПРОВЕРКИ модератора. <<<


Защитный код
Обновить


Warning: include() [function.include]: Failed opening '/home/users/m/maximea/domains/1s-portal.ru/templates/ja_beranis/tpls/blocks/home.php' for inclusion (include_path='.:/usr/local/zend-5.3/share/pear') in /home/users/m/maximea/domains/1s-portal.ru/plugins/system/t3/includes/core/template.php on line 195