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

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

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

Типы циклов

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

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

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

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

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

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

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

Рис.1

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

Для  по

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

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

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

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

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

Рис.2

Пока

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

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

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

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

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

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

Рис.3

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

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

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

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

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

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

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

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



В Петербурге построят аналог «Сколково» за 41 млрд рублей
Дмитрий Медведев подписал распоряжение о создании под Санкт-Петербургом инновационного кластера с научными центрами, лабораториями, учебными зданиями, жилыми и производственными комплексами ...
Глава Минкомсвязи признал неэффективность блокировки незаконного контента
Глава Министерства связи и массовых коммуникаций РФ Николай Никифоров, в рамках своего выступления на правительственном часе в Госдуме, назвал блокировку ...
Материальная помощь бывшему сотруднику
Организация может оказывать материальную помощь сотрудникам, бывшим сотрудникам, а также членам их семей при возникновении особых обстоятельств. Например, в связи ...
Учет по договору на информационно-технологическое сопровождение "1С:ИТС"
Официальное информационно-технологическое сопровождение (ИТС) включает в себя сервисы и услуги, которые предоставляются фирмой "1С" и ее сертифицированными партнерами. О том, ...
Новый релиз Управление небольшой фирмой, редакция 1.6
Текущая версия конфигурации "Управление нашей фирмой" предназначена для использования с версией системы 1С:Предприятие 8.3 не ниже 8.3.10.2168. Обновление предназначено для ...
Тест 1С:Бухгалтерия 8.3  - 5 вопросов от 20.10.2017
Проверь свои профессиональные навыки по программе "1С:Бухгалтерия 8.3". Пройди тест! Всего 5 вопросов:В программе 1С:Бухгалтерия 8 для оформления платежа в ...
Тест Платформа 1С:Предприятия 8  - 5 вопросов от 20.10.2017
Проверь свои профессиональные навыки по программе "Платформа 1С:Предприятия 8". Пройди тест! Всего 5 вопросов:Текст запроса, который будет фактически исполняться системой ...
Тест 1С:Управление нашей фирмой 8  - 7 вопросов от 20.10.2017
Проверь свои профессиональные навыки по программе "1С:Управление нашей фирмой 8". Пройди тест! Всего 7 вопросов:Можно ли запланировать загрузку ресурса на ...
Тест 1С:Управление торговлей 8 (ред. 11.2)  - 10 вопросов от 20.10.2017
Проверь свои профессиональные навыки по программе "1С:Управление торговлей 8 (ред. 11.2)". Пройди тест! Всего 10 вопросов:Какие варианты назначения скидок в ...
Тест 1С:Документооборот 8 (Ред. 2.0)  - 5 вопросов от 20.10.2017
Проверь свои профессиональные навыки по программе "1С:Документооборот 8 (Ред. 2.0)". Пройди тест! Всего 5 вопросов:Могут два и более пользователя открыть ...
Тест 1С:Зарплата и управление персоналом 8 (Ред. 3.1)  - 10 вопросов от 20.10.2017
Проверь свои профессиональные навыки по программе "1С:Зарплата и управление персоналом 8 (Ред. 3.1)". Пройди тест! Всего 10 вопросов:В документе Начисление ...
Тест 1С:Управление производственным предприятием 8  - 5 вопросов от 20.10.2017
Проверь свои профессиональные навыки по программе "1С:Управление производственным предприятием 8". Пройди тест! Всего 5 вопросов:Каким документом регистрируются невыходы работников организации, ...
Перенос выходных дней в 2018 году
Утвержден перенос выходных дней в 2018 году Постановление от 14 октября 2014 года № 1250 ...
Форма статистического наблюдения № 4-инновации за 2017 год (2)
Внесены изменения в форму статистического наблюдения № 4-инновация "Сведения об инновационной деятельности организации", утвержденную приказом Росстата от 30.08.2017 № 563 ...
«Альфа-банк» представил протез с чипом для бесконтактных платежей
Тренд с «вживлением» NFC-чипов для бесконтактной оплаты в различные устройства все больше набирает обороты. В этот раз свою разработку в ...