1с перебрать документы в цикле
В платформе 1С 8.3 существует три вида циклов. Это циклы «Для Цикл», «Для каждого Цикл» и «Пока Цикл». При помощи циклов «Для Цикл» и «Пока Цикл» можно осуществлять цикличное повторение произвольных операторов. А цикл «Для каждого Цикл» необходим для обхода коллекций значений (массивов, таблиц значений и т.п.). В этой статье на разберем простые примеры всех трёх видов циклов.
Цикл «Для Цикл»
Разберем самый простой вид цикла. Этот цикл имеет следующий синтаксис.
В этом цикле, переменной НазваниеПерем в самом начале присваивается выражение СчетчНачало, которое имеет числовое значение (целое число). Потом, в каждой итерации цикла переменная НазваниеПерем увеличивается на 1. Цикл будет выполняться пока переменная НазваниеПерем меньше или равно переменной СчетчКонец.
СчетчНачало и СчетчКонец могут быть как числами, так и переменными с типом число.
Причем СчетчНачало может быть меньше нуля.
Чтобы цикл корректно работал СчетчНачало должно быть меньше СчетчКонец.
Такой код будет не корректен!!
С этим циклом удобно работать, когда нам нужно линейно заполнить какие-нибудь величины. Например, заполним массив в 1С цифрами от -3 до 3.
Или когда нужно получить какие-нибудь значения, которые следуют друг за другом. Например, значения того же массива.
Цикл «Пока Цикл»
Если при помощи предыдущего цикла можно было делать линейные обходы от меньшего значения к большему, то этот вид цикла позволяет выполнять практически любые обходы.
Данный цикл имеет следующий синтаксис
ЗначениеВыражения – какое-то логическое выражение. Пока это выражение истинно, то операторы цикла будут выполняться. Если выражение принимает значение Ложь, то цикл прекращается.
При помощи данного цикла можно делать различные нестандартные обходы. Например, выше мы заполнили массив цифрами начиная от -3 до 3, но циклом «Для Цикл» мы не можем заполнить массив цифрами от 3 до -3. Но, мы можем это сделать при помощи цикла «Пока Цикл»
Этот цикл можно также использовать, когда нужно что-то заполнить датами.
В этом коде мы заполняем массив датами, начиная с 1 января и заканчивая 31 января.
Цикл «Для каждого Цикл»
Этот вид цикла предназначен для обхода различных коллекций, например, массивов, таблиц значений, табличных частей и т.д.
Этот цикл имеет следующий синтаксис:
Переменной ЭлементКоллекции присваивает очередное значение элемента коллекции.
Например, если мы напишем вот такой код.
Это массив, у него, по сути, каждый элемент это значение какого-то типа, а если будет обход более сложной коллекции? Например, таблицы значений. В том случае, если будет обход таблицы, значений, то в переменной ЭлементКоллекции будет содержать очередная строка этой таблицы значений. Мы можем получить значение колонок в этой строке через оператор «.».
Пример в этом коде
И результат работы этого кода
Прервать цикл 1С
Иногда возникают такие ситуации, когда нужно из цикла выйти. Сделать это можно при помощи оператора Прервать. Этот оператор применим ко всем тремя видам циклов.
После выполнения этого оператора Прервать все последующие операторы в теле цикла не выполняются, и следующим выполняется оператор после ключевого слова КонецЦикла.
Рассмотрим следующий пример.
В этом примере мы обходим простым циклом ряд чисел от -5 до 5, и делим 1 на обходимое число. Если же переменная счетчика равна 0, то чтобы не происходила исключительная ситуация, то выходим из цикла. Т.е. мы выполним деление только для отрицательных чисел.
Продолжить цикл 1С
А есть ситуации, когда нам не нужно выходить из цикла, но и не нужно продолжать текущую итерацию. Помочь нам в этом может оператор Продолжить. Этот оператор также применим ко всем тремя видам циклов.
Операторы после этого ключевого слова выполняться не будут, и произойдет следующая итерация цикла.
Рассмотрим такой пример.
Это измененный предыдущий пример, только когда счетчик цикла равно 0, то мы не выходим а продолжаем цикл, в этом случае деление будет выполнено как для отрицательных, так и для положительных чисел.
Более подробно и основательно начальные вопросы программирования в 1С есть в моей книге:
Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.
Вступайте в мою группу помощник программиста.
В ней мы обсуждаем программирование в 1С.
Цикл Для
Оператор цикла Для предназначен для циклического повторения операторов, находящихся внутри конструкции Цикл – КонецЦикла .
Перед началом выполнения цикла значение Выражение 1 присваивается переменной Имя_переменной . Значение Имя_переменной автоматически увеличивается при каждом проходе цикла. Величина приращения счетчика при каждом выполнении цикла равна 1.
Цикл выполняется, пока значение переменной Имя_переменной меньше или равно значению Выражение 2 . Условие выполнения цикла всегда проверяется в начале, перед выполнением цикла.
Имя_переменной | Идентификатор переменной (счетчика цикла), значение которой автоматически увеличивается на 1 при каждом повторении цикла. Так называемый счетчик цикла. |
Выражение 1 | Числовое выражение, которое задает начальное значение, присваиваемое счетчику цикла при первом проходе цикла. |
По | Синтаксическая связка для параметра Выражение 2 . |
Выражение 2 | Максимальное значение счетчика цикла. Когда переменная Имя_переменной становится больше чем Выражение 2, выполнение оператора цикла Для прекращается. |
Цикл | Операторы, следующие за ключевым словом Цикл выполняются, пока значение переменной Имя_переменной меньше или равно значения Выражение 2 . |
// Операторы | Исполняемый оператор или последовательность таких операторов. |
Прервать | Позволяет прервать выполнение цикла в любой точке. После выполнение этого оператора управление передается оператору, следующему за ключевым словом КонецЦикла . |
Продолжить | Немедленно передает управление в начало цикла, где производится вычисление и проверка условий выполнения цикла. Операторы, следующие в теле цикла за ним, на данной итерации обхода не выполняются. |
КонецЦикла | Ключевое слово, которое завершает структуру оператора цикла. |
Цикл Для Каждого
Оператор цикла Для каждого предназначен для циклического обхода коллекций значений. При каждой итерации цикла возвращается новый элемент коллекции. Обход осуществляется до тех пор, пока не будут перебраны все элементы коллекции.
Имя_переменной_1 | Переменная, которой при каждом повторении цикла присваивается значение очередного элемента коллекции. |
Из | Синтаксическая связка для параметра Имя_переменной_2 . |
Имя_переменной_2 | Переменная или выражение, предоставляющее коллекцию. Элементы этой коллекции будут присваиваться параметру Имя_переменной_1 . |
Цикл | Операторы, следующие за ключевым словом Цикл выполняются для каждого элемента коллекции. |
// Операторы | Исполняемый оператор или последовательность таких операторов. |
Прервать | Позволяет прервать выполнение цикла в любой точке. После выполнение этого оператора управление передается оператору, следующему за ключевым словом КонецЦикла . |
Продолжить | Немедленно передает управление в начало цикла, где производится вычисление и проверка условий выполнения цикла. Операторы, следующие в теле цикла за ним, на данной итерации обхода не выполняются. |
КонецЦикла | Ключевое слово, которое завершает структуру оператора цикла. |
Цикл Пока
Оператор цикла Пока предназначен для циклического повторения операторов, находящиеся внутри конструкции Цикл – КонецЦикла . Цикл выполняется, пока логическое выражение равно Истина. Условие выполнения цикла всегда проверяется вначале, перед выполнением цикла.
Читайте также: