Как выйти из цикла 1с
Вступайте в мою группу помощник программиста.
В ней мы обсуждаем программирование в 1С.
Цикл Для
Оператор цикла Для предназначен для циклического повторения операторов, находящихся внутри конструкции Цикл – КонецЦикла .
Перед началом выполнения цикла значение Выражение 1 присваивается переменной Имя_переменной . Значение Имя_переменной автоматически увеличивается при каждом проходе цикла. Величина приращения счетчика при каждом выполнении цикла равна 1.
Цикл выполняется, пока значение переменной Имя_переменной меньше или равно значению Выражение 2 . Условие выполнения цикла всегда проверяется в начале, перед выполнением цикла.
| Имя_переменной | Идентификатор переменной (счетчика цикла), значение которой автоматически увеличивается на 1 при каждом повторении цикла. Так называемый счетчик цикла. |
| Выражение 1 | Числовое выражение, которое задает начальное значение, присваиваемое счетчику цикла при первом проходе цикла. |
| По | Синтаксическая связка для параметра Выражение 2 . |
| Выражение 2 | Максимальное значение счетчика цикла. Когда переменная Имя_переменной становится больше чем Выражение 2, выполнение оператора цикла Для прекращается. |
| Цикл | Операторы, следующие за ключевым словом Цикл выполняются, пока значение переменной Имя_переменной меньше или равно значения Выражение 2 . |
| // Операторы | Исполняемый оператор или последовательность таких операторов. |
| Прервать | Позволяет прервать выполнение цикла в любой точке. После выполнение этого оператора управление передается оператору, следующему за ключевым словом КонецЦикла . |
| Продолжить | Немедленно передает управление в начало цикла, где производится вычисление и проверка условий выполнения цикла. Операторы, следующие в теле цикла за ним, на данной итерации обхода не выполняются. |
| КонецЦикла | Ключевое слово, которое завершает структуру оператора цикла. |
Цикл Для Каждого
Оператор цикла Для каждого предназначен для циклического обхода коллекций значений. При каждой итерации цикла возвращается новый элемент коллекции. Обход осуществляется до тех пор, пока не будут перебраны все элементы коллекции.
| Имя_переменной_1 | Переменная, которой при каждом повторении цикла присваивается значение очередного элемента коллекции. |
| Из | Синтаксическая связка для параметра Имя_переменной_2 . |
| Имя_переменной_2 | Переменная или выражение, предоставляющее коллекцию. Элементы этой коллекции будут присваиваться параметру Имя_переменной_1 . |
| Цикл | Операторы, следующие за ключевым словом Цикл выполняются для каждого элемента коллекции. |
| // Операторы | Исполняемый оператор или последовательность таких операторов. |
| Прервать | Позволяет прервать выполнение цикла в любой точке. После выполнение этого оператора управление передается оператору, следующему за ключевым словом КонецЦикла . |
| Продолжить | Немедленно передает управление в начало цикла, где производится вычисление и проверка условий выполнения цикла. Операторы, следующие в теле цикла за ним, на данной итерации обхода не выполняются. |
| КонецЦикла | Ключевое слово, которое завершает структуру оператора цикла. |
Цикл Пока
Оператор цикла Пока предназначен для циклического повторения операторов, находящиеся внутри конструкции Цикл – КонецЦикла . Цикл выполняется, пока логическое выражение равно Истина. Условие выполнения цикла всегда проверяется вначале, перед выполнением цикла.
Циклы
Циклы в 1С и в любом другом языке программирования используются для повторения заданной последовательности действий. Цикл может выполняться фиксированное количество раз, пока выполняется условие или при обходе элементов коллекции.
Циклы с фиксированным количеством проходов.
Циклы с фиксированным, заранее известным количеством проходов (итераций) имеют следующий синтаксис:
Цикл выполнится столько раз сколько указано в переменной НужноеКоличествоИтераций которая должна быть числовой, значение сч будет увеличиваться на каждой итерации на 1, можно самому в теле цикла указывать содержимое переменной сч управляя количеством проходом, также нужно иметь ввиду, что на каждом витке цикла содержимое этой переменной будет увеличиваться на 1 в любом случае вне зависимости от ваших действий. Можно просто указать:
если нужно что бы цикл просто сделал жестко указанное количество итераций.
Циклы по условию.
Циклы по условию имеют следующий ситаксис:
Здесь цикл будет выполняться до тех пор, пока будет выполняться условие. Очень просто организовать бесконечный цикл не допуская увеличения переменной А больше 99. Такой цикл "повешает" 1С и его разумеется имеет смысл избегать, если вы конечно не используете оператор Прервать .
Циклы для обхода коллекций.
Любую коллекцию можно обойти в цикле следующим образом:
Коллекциями могут быть: строки и колонки табличных частей документов\справочников и таблиц значений, массивы и другие типы данных.
Операторы управляющие ходом цикла.
Продолжить
Оператор Продолжить делает следующий виток цикла передавая управление на начало цикла, таким образом пропуская команды которые идут ниже. Например в следующем случае:
значение переменной а будет увеличиваться только в нечетных проходах цикла, но цикл сделает 100 проходов без исключений.
Прервать
Оператор Прервать прерывает выполнение цикла, передавая выполнение на команды которые идут после цикла не рекомендуется его использовать без необходимости, так как он затрудняет анализ кода расположенного в цикле.
Использование функций в теле цикла.
Использование функций в тебе цикла считается дурным тоном если эта функция будет каждый раз возвращать одно и то же значение. Не имеет смысла каждый раз выполнять один и тот же код если результат его выполнения не изменяется, в таких случаях функцию необходимо выполнить до цикла поместив результат в переменную и далее в цикле использовать эту переменную.
Использование запросов в теле цикла.
Использование запросов в теле цикла также считается недопустимым. Так как при каждом витке цикла делается запросе к базе данных, а использование запросов подразумевает под собой идеологию "Все нужные данные должны быть получены одним запросом". Если есть возможность, следует проанализировать какие данные будут нужны в цикле, сделать запрос до цикла и в цикле пользоваться уже результатами ранее созданного запроса. Здесь следует добавить пример.
Циклы в 1С на примерах
Цикл – это конструкция, которая предназначена для многократного исполнения неких инструкций. Во встроенном языке 1С существует три вида циклов «Пока», «Для» и «Для Каждого». Рассмотрим на примерах работу с каждым из них.
Цикл «Пока»
Синтаксис:
Пока <Логическое выражение> Цикл
// Операторы
КонецЦикла;
Принцип работы такого цикла заключается в том, что операторы находящиеся после ключевого слова «Цикл», будут выполнятся пока логическое выражение будет равно ИСТИНА.
Пример:
В результате выполнения такого цикла, в окно сообщений будут последовательно выведены цифры от 1 до 5.
Цикл «Для»
Синтаксис:
Для <Имя переменной> = <Начальное значение> По <Конечное значение> Цикл
// Операторы
КонецЦикла;
После начального присвоения значения для переменной после ключевого слова «Для», такой цикл прекратится, когда значение переменной будет меньше либо равно конечному значению после ключевого слова «По». В таком цикле приращение переменной происходит автоматически, и всегда равно «1».
Пример:
Результат:
Получите понятные самоучители по 1С бесплатно:

Цикл «Для Каждого»
Синтаксис:
Для Каждого <Элемент> Из <Коллекция> Цикл
// Операторы
КонецЦикла;
Такой вид циклов служит для обхода неких коллекций значений в 1с (массивов, таблиц значений, структур и т.д.). Цикл будет закончен, когда будут перебраны все элементы коллекции. Использование такого цикла рассмотрим на примере последовательного перебора всех элементов одномерного массива, с последующим выводом значений элементов в окно сообщений.
Пример кода:
Визуальное представление созданного массива в 1С:

Результат работы цикла:

Вложенные циклы
Во встроенном языке программирования 1С доступна возможность использования вложенных циклов. К классическому примеру использования таких конструкций можно отнести один из способов последовательного перебора всех ячеек таблицы значений.
Пример:
С помощью внешнего цикла мы последовательно получаем строки из коллекции «ТаблицаЗначений». Затем во внутреннем цикле, имея строку, получаем значение каждой ячейки из коллекции «КоллекцияКолонок».
Как организовать обратный цикл
Пример:
Результат:

Как принудительно продолжить цикл
Принудительный переход к следующей итерации в циклах 1С осуществляется с помощью оператора «Продолжить» (Continue).
Пример:
В таком примере с помощью операторов «Если» и «Продолжить» пропускаем цифру «2».
Результат:

Как прервать цикл
Полный выход из цикла (прерывание) во встроенном языке программирования 1С осуществляется с помощью оператора «Прервать» (Break).
Пример:
Такой цикл перестанет выполняться, как только значение переменной «Счётчик» будет равно «2».
Как выйти из цикла 1с
Процедура — это часть программы, имеющая имя, могущая иметь параметры, в том числе передаваемые по значению (или по ссылке).
После слова КонецПроцедуры точка с запятой не нужна, потому что это не оператор, а операторная скобка
Функция
Функция похожа на процедуру, но имеет возвращаемое значение и может использоваться в выражениях.
Функция должна обязательно возвращать результат.
Условие
После слова КонецЕсли должна быть точка с запятой, потому что так заканчивается оператор Если
Множественное условие
Если первое условие не выполняется, то проверяется второе. Если второе условие не выполняется, то третье. Если ни одно из условий не выполняется то выполняется блок Иначе.
Логическое выражение
В составном логическом выражении скобки обязательны! (в версии 8.0 необязательны)
Тернарный оператор (сокращенное Если)
Цикл Пока
Простой цикл Пока (цикл с неизвестным числом повторений).
После слова КонецЦикла должна быть точка с запятой, потому что так заканчивается оператор Пока
Цикл Для
Простой цикл Для (цикл с известным числом повторений).
Примечание: в версии 8.0 есть еще цикл Для Каждого (for each).
Безусловный переход
Так оформляются метки и оператор безусловного перехода (GOTO). Чем меньше в вашей программе будет меток, тем лучше.
Оператор Продолжить
Переход на следующий виток цикла.
Оператор Прервать
Оператор Прервать производит досрочный выход из цикла. Управление передается на операторы после цикла.
Объявление переменных
Перем Сотр; Явное объявление переменной.
Переменные можно не объявлять явно. При первом присвоении значения создается новая переменная.
Литералы
Объявление глобальной переменной в Глобальном модуле.
Такие переменные доступны в любом месте конфигурации.
Обработка исключений
Если во время выполнения операторов между словами Попытка и Исключение произошла ошибка, то управление передается на операторы между словами Исключение и КонецПопытки
Если ошибки не было, то управление передается на операторы после слова КонецПопытки.