Ошибки и особенности циклов в 1С

Алгоритмы многих программ зачастую предполагают циклическое повторение определённых действий. 1С в этом случае не является исключением. Циклы в 1С позволяют:

  • Перебрать элементы справочника;
  • Заполнить области макета;
  • Выполнить определенные действия с выборкой документов;
  • И многое многое другое.

Типы циклов

В 1С принято различать три типа циклов в зависимости от набора слов, входящих в конструкцию:

  1. Для каждого «Переменная» из «Коллекция значений»;
  2. Для «Переменная» = «Нач. значение» По «Кон. Значение»;
  3. Пока «Выражение».

Рассмотрим их подробнее.

Для каждого из

Этот обходчик подходит для коллекций значений (выборка документов или элементов справочника, сток таблицы значений). Выполнение будет происходить до тех пор, пока последний элемент коллекции не будет пройден. В строке должны быть указаны:

  • Переменная, определяющая текущий элемент коллекции;
  • Определение коллекции значений.

Наиболее часто возникающая ошибка в этом случае показана на рис.1

Рис.1

Чаще всего она возникает, когда программист не до конца понимает разницу между объектом (документом, справочником) и коллекцией (выборкой) значений, получаемой с помощью оператора Выбрать().

Для  по

В качестве параметров, передаваемых в строку, в этом случае выступают:

  1. Имя переменной – итератора;
  2. Начальное значение переменной;
  3. Конечное значение переменной.

Повторение блока операторов, входящих в тело цикла будет осуществляться до тех пор, пока переменная не сравняется или первый раз не превысит конечное значение. При этом итератор будет каждый шаг увеличиваться на 1. Значения сравниваются до выполнения следующего шага.

Такая конструкция очень часто используется при обходе табличных частей.

При использовании данного обходчика важно различать количество строк табличной части и индекс отдельной взятой строки. В первом случае начальное значение будет равно 1, конечное можно получить с помощью оператора Количество(). Индексы начинаются с 0 и заканчиваются Количество()-1. В противном случае можно получить ошибку (Рис.2).

Рис.2

Пока

Здесь всего один параметр – логическое выражение, которое перед каждым следующим шагом цикла проверяется на истинность.  Как только логическое выражение не будет выполнено, обработчик завершит обход.

Очень важно понимать, что в некоторых случаях проверяемое выражение может постоянно находиться в значении Истина, тем самым обход будет совершаться бесконечное количество раз, подвешивая систему.

В таких случаях необходимо внутри тела цикла прописать один из двух вариантов прерывания выполнения.

Иногда может сложиться ситуация, когда истинность проверяемого выражения не наступит никогда. Это может привести к бесполезным поискам ошибки в коде и потере времени.

Прерывание выполнения нажатием комбинации клавиш

Если в теле цикла прописать процедуру ОбработкаПрерыванияПользователя(), то в любой момент его выполнения, нажав комбинацию клавиш Ctrl+PauseBreakможно остановить его работу. В этом случае в окне сообщений будет выведена строка (Рис.3).

Рис.3

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

Прерывание по условию

Достаточно часто алгоритм программы предполагает остановку цикличной обработки, если выполняется то или иное условие. Заложить эту процедуру в тело цикла можно с помощью оператора Прервать.

Правильно записанный в код программы этот оператор выделяется красным цветом.

Перескакивание некоторых операций цикла

Зачастую в цикле необходимо проверять выполнение какого-либо условия и в случае, если это условие не выполняется, проскакивать основной обработчик. Такие конструкции могут быть реализованы двумя способами:

  • В первом способе мы ставим условие и внутри конструкции Если Тогда КонецЕсли прописываем исполняемый код, если условие не выполнено, код соответственно выполняться не будет. Очевидным минусом такого подхода является то, что она достаточно громоздка и в случае большого количества условий легко ошибиться, где берется начало одного «Если» и где заканчивается другое;
  • Гораздо правильнее использовать конструкцию, где вместо утверждения условия берется его отрицание (вместо равно, берется неравно и т.д.) и помещение внутри конструкции оператора Продолжить;

Оператор «Продолжить» в теле кода выделяется красным цветом и переносит выполнение цикла в его начало.


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

Ваш e-mail не будет опубликован.

*

code


Оснащение для магазина с доставкой от компании Ru-Holod
Выбор оборудования зависит от цели его эксплуатации. В магазине оборудование для реализации продуктов питания, условия хранения которых требуют поддержания особой ...
Проверка отчетности 6-НДФЛ и 2-НДФЛ в 1С ЗУП 3.1
Какие проверки необходимо произвести для успешной сдачи отчетов 6-НДФЛ и 2-НДФЛ и какие средства в 1С ЗУП 3.1 в этом ...
Как сократить издержки в производственной компании малого бизнеса. Вебинар
18 февраля 2020 г. состоялся вебинар «Как сократить издержки в производственной компании малого бизнеса. Планирование, фактическая себестоимость, анализ в 1С:Управление ...
Интервью с Сергеем Кукановым
На предприятии есть производство, но вы ещё не доросли до крупных систем управления? Тогда вполне можете попробовать обойтись решением 1С:Управление ...
Годовая отчетность за 2019 г.: бухгалтерская и налоговая
Оформить заявку на участие в онлайн-семинаре "Годовая отчетность за 2019 г.: бухгалтерская и налоговая" https://buhexpert8.ru/dostup#buh ПРОГРАММА СЕМИНАРА НАЛОГОВАЯ ОТЧЕТНОСТЬ: • ...
Новое в ЗУП за 5 мин [выпуск от 17.02.2020]
Выпуск на нашем сайте - https://buhexpert8.ru/1s-zup#tt-5min В этом выпуске: • Разместили ответы на вопросы с семинара по СЗВ-ТД • Обновили ...
1С:ERP Урок 55. Исполнение заказа на производство
Пятьдесят пятый видеоурок вводного курса по «1С:ERP Управление предприятием». Тема на сегодня – исполнение заказа на производство (без использования пооперационного ...
Новое в учете и отчетности по НДФЛ в 2020 году
Изменения по НДФЛ в 2020 году. Изменения сроков и порядка представления отчетности по НДФЛ. Как представить отчетность по доходам по ...
Ошибки при учете договоров ГПХ в 1С ЗУП 3.1
Кого считать работниками по договорам ГПХ. Ошибки квалификации договоров ГПХ. Выплаты по договорам ГПХ в 1С ЗУП 3.1. Смотрите тест-драйва ...
Ответы на популярные вопросы по ЭТК - часть 2
Фрагмент вебинара по электронным трудовым от 11.02.2020 - Если все оставляют бумажные трудовые, можно ли не сдавать СЗВ-ТД? - Нужно ...
Юридическая и организационная (управленческая) структура Компании в 1С:ЗУП КОРП
✔️ Как настроить в 1С:ЗУП КОРП юридическую и организационную (управленческую) структуру Компании? ✔️ Какой отчет показывает сотрудников в разрезе оргструктуры? ...
1С:Электронные трудовые книжки - бесплатный сервис от фирмы 1С
Если вы не используете программу 1С, предлагаем вам воспользоваться сервисом для формирования отчета СЗВ-ТД совершенно бесплатно. Переходите по ссылке etk.1c.ru ...
Сведения о среднесписочной численности работников в 1С 8.3 ЗУП
Кем и в какие сроки сдаются сведения по среднесписочной численности. Что входит в понятие среднесписочная численность и как она рассчитывается ...