Ошибки и особенности циклов в 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


Развертывание http-сервиса OneScript на Raspberry Pi
В статье описан процесс настройки, а также процесс развертывания http-сервиса (web-приложения) OneScript на Raspbian (Raspberry Pi 2) ...
Неоптимальный план запросов
Шпаргалка к экзамену "Эксперт по технологическим вопросам" ...
Омский государственный технический университет
Шевелева Ольга Геннадьевна Старший преподаватель кафедры Математические методы и информационные технологии в экономике ...
Омский государственный технический университет
Кравченко Ксения Владимировна Старший преподаватель кафедры Математические методы и информационные технологии в экономике ...
Торгово-экономический колледж им. Г.Д.Зуйковой
Вера Михайловна Орлова Заведующая отделением (Отделение права и экономической информатики) ...
Веб-разработка на 1Script. Глава 2
Продолжение учебника по веб-разработке с помощью фреймворка Oscript.Web. Структура приложения, основные объекты, URL-маршрутизация, универсальная консоль серверов 1С ...
Приглашаем на вебинар 16 мая "1C:Управление нашей фирмой для интернет-магазинов"
16 мая 2018 г. в 11-00 приглашаем руководителей малого и среднего бизнеса на бесплатный вебинар "1C:Управление нашей фирмой для интернет-магазинов" ...
Российские студенты – безусловные победители международных олимпиад
На прошедшем в Пекине Всемирном соревновании по программированию ICPC (International Collegiate Programming Contest) Россия взяла два первых призовых места. С ...
Цифровой смотритель: никто не пройдет незамеченным
Привлекают внимание новости о системах распознавания лиц. Проводятся пилотные проекты в московском аэропорту, питерском торговом центре... В связи с этим ...
ТОРГ-12 в валюте документа, а также в рублях и валюте одновременно для 1С:Бухгалтерия 3.0
Существуют разные мнения по поводу правомерности использования ТОРГ-12 в иностранной валюте, однако бухгалтера часто просят реализовать такую возможность и в ...
Автоматическая ширина колонок в СКД
Случай, когда настроек по максимальной и минимальной ширины колонок в условном оформлении недостаточно ...