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

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

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

Типы циклов

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

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

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

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

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

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

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

Рис.1

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

Для  по

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

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

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

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

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

Рис.2

Пока

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

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

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

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

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

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

Рис.3

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

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

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

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

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

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

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

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



Джон фон Нейман

УСН

УСН
Любое имущество рано или поздно придется ремонтировать, основные средства не исключение. Если упрощенец выбрал объект обложения "доходы минус расходы", он ...
Тест 1С:Зарплата и управление персоналом 8 (Ред. 3.1)  - 7 вопросов от 24.1.2018
Проверь свои профессиональные навыки по программе "1С:Зарплата и управление персоналом 8 (Ред. 3.1)". Пройди тест! Всего 7 вопросов:В предъявленном сотрудницей ...
Тест 1С:ERP Управление предприятием (Ред. 2.2)  - 5 вопросов от 24.1.2018
Проверь свои профессиональные навыки по программе "1С:ERP Управление предприятием (Ред. 2.2)". Пройди тест! Всего 5 вопросов:Отчет Ведомость по денежным средствам ...
Тест 1С:Бухгалтерия 8.3  - 10 вопросов от 24.1.2018
Проверь свои профессиональные навыки по программе "1С:Бухгалтерия 8.3". Пройди тест! Всего 10 вопросов:В 1С:Бухгалтерии 8 справочник Параметры выработки ОС предназначен ...
Тест Платформа 1С:Предприятия 8  - 7 вопросов от 24.1.2018
Проверь свои профессиональные навыки по программе "Платформа 1С:Предприятия 8". Пройди тест! Всего 7 вопросов:Какие синтаксические конструкции можно группировать?...В каком свойстве ...
Тест 1С:Управление нашей фирмой 8  - 5 вопросов от 24.1.2018
Проверь свои профессиональные навыки по программе "1С:Управление нашей фирмой 8". Пройди тест! Всего 5 вопросов:С помощью каких средств программы можно ...
Тест 1С:Управление торговлей 8 (ред. 11.2)  - 5 вопросов от 24.1.2018
Проверь свои профессиональные навыки по программе "1С:Управление торговлей 8 (ред. 11.2)". Пройди тест! Всего 5 вопросов:Оказание работ(услуг) клиенту может оформляться ...
Тест 1С:Документооборот 8 (Ред. 2.0)  - 10 вопросов от 24.1.2018
Проверь свои профессиональные навыки по программе "1С:Документооборот 8 (Ред. 2.0)". Пройди тест! Всего 10 вопросов:Срок действия договора может быть изменен ...
Новые коды операций НДС
Новые коды операций НДС Письмо ФНС от 16.01.2018 № СД-4-3/532@ ...
Собираем желтую банду
Что, как и зачем делать, если хочется эффективности, удовольствия и развития. Для всей банды ...
Сайты федеральных ведомств подключат к единому информационному порталу
В феврале все министерства РФ подключатся к новому информационному порталу, который должен стать единой точкой входа на сайты всех органов ...
Джон фон Нейман

1С:ИТС

1С:ИТС
НК РФ разрешает применять к норме амортизации ОС специальный коэффициент (не выше двух) в отношении объектов (с 01.01.2018 за исключением ...