1С 8.3 Циклы - Программист 1С Минск. Автоматизация бизнеса.

Перейти к контенту

1С 8.3 Циклы

Циклы в 1С 8.3 - это способ повторить несколько строк программного кода нужное количество раз. Циклы применяются для выполнения каких-либо повторяющихся действий и/или нужная условная операция. В циклах часто используются условия, например: созданные с помощью оператора Если.

Существует три вида циклов:
  • Для - циклическое повторение операторов внутри "Цикл ... КонецЦикла", где можно использовать итератор с указываемыми границами (шаг всегда равен единице). При этом границы можно регулировать внутри самого цикла. Главное не забывать, что границы должны быть типа Число.
  • Для Каждого - обход коллекции значений. Каждая итерация - последующий элемент коллекции, обход будет до тех пор, пока элементы в коллекции не закончатся. Каждый элемент коллекции - это либо элемент, либо строка с элементами. Например, для Массива - это Элемент, для Таблицы значений - это Строка (обращение к элементу в строке будет через точку).
  • Пока - циклическое повторение, пока выполняется условие в выражении. Например, "Пока Итератор <> 100 Цикл". Для исключения рекурсии рекомендуется после создания цикла сразу вписать изменение выражения, например, "Итератор = Итератор + 1;".

Для работы циклов существуют два оператора:
  • Прервать - используется для выхода из цикла на любом моменте выполнения.
  • Продолжить - используется для перехода в начало цикла пропуская все, что находится после оператора Продолжить.
Создание цикла (Для ... По ... Цикл) в 1С 8.3:
&НаКлиенте
Процедура СозданиеЦиклаДляПо(Команда)

    Для
А = 1 По 10 Цикл
       
Сообщить(А); // 1 2 3 4 5 6 7 8 9 10
   
КонецЦикла;

КонецПроцедуры
Создание цикла (Для Каждого ... Из ... Цикл) в 1С 8.3:
&НаКлиенте
Процедура СозданиеЦиклаДляКаждогоИз(Команда)

   
Месяцы = Новый Массив();
   
Месяцы.Добавить("Март");
   
Месяцы.Добавить("Апрель");
   
Месяцы.Добавить("Май");
   
Месяцы.Добавить("Июнь");

    Для Каждого
Месяц Из Месяцы Цикл
       
Сообщить(Месяц); // Март Апрель Май Июнь
   
КонецЦикла;

КонецПроцедуры
Создание цикла (Пока ... Цикл) в 1С 8.3:
&НаКлиенте
Процедура СозданиеЦиклаПока(Команда)

   
Месяцы = Новый Массив();
   
Месяцы.Добавить("Март");
   
Месяцы.Добавить("Апрель");
   
Месяцы.Добавить("Май");
   
Месяцы.Добавить("Июнь");

   
А = 0;
    Пока
А < Месяцы.Количество() Цикл
       
Сообщить(Месяцы[А]); // Март Апрель Май Июнь

       
А = А + 1;// Увеличиваем счетчик
   
КонецЦикла;

КонецПроцедуры
Создание обратного цикла (Пока ... Цикл) в 1С 8.3:
&НаКлиенте
Процедура СозданиеОбратногоЦиклаПока(Команда)

   
Месяцы = Новый Массив();
   
Месяцы.Добавить("Март");
   
Месяцы.Добавить("Апрель");
   
Месяцы.Добавить("Май");
   
Месяцы.Добавить("Июнь");

   
Б = Месяцы.Количество() - 1;
    Пока
Б >= 0 Цикл
       
Сообщить(Месяцы[Б]); // Июнь Май Апрель Март

       
Б = Б - 1;// Уменьшаем счетчик
   
КонецЦикла;

КонецПроцедуры
Цикл по таблице значений в 1С 8.3:
&НаКлиенте
Процедура ЦиклПоТаблицеЗначений(Команда)

   
ТЗ = Новый ТаблицаЗначений();
   
ТЗ.Колонки.Добавить("Год");

   
// Заполняем ТЗ значениями
   
Стр = ТЗ.Добавить();
   
Стр.Год = 2020;

   
Стр = ТЗ.Добавить();
   
Стр.Год = 2021;

   
Стр = ТЗ.Добавить();
   
Стр.Год = 2022;

   
// Цикл по строкам ТЗ
   
Для Каждого СтрокаТЗ из ТЗ Цикл
       
Сообщить(СтрокаТЗ.Год); //2020 2021 2022
   
КонецЦикла;

КонецПроцедуры
Цикл по результату запроса в 1С 8.3:
&НаКлиенте
Процедура ЦиклПоРезультатуЗапроса(Команда)

   
Запрос = Новый Запрос("ВЫБРАТЬ Наименование ИЗ Справочник.Контрагенты");
   
Результат = Запрос.Выполнить().Выгрузить();

   
// Цикл по списку Результата запроса
   
Для Каждого Строка из Результат Цикл
       
Сообщить(Строка.Наименование);//Наименование контрагента
   
КонецЦикла;

КонецПроцедуры
Прерывание цикла в 1С 8.3:
&НаКлиенте
Процедура ПрерываниеЦикла(Команда)

    Для
В = 1 По 10 Цикл
        Если
В > 3 Тогда
            Прервать;
// Переход в конец цикла ***
       
КонецЕсли;

       
Сообщить(В); // 1 2 3
   
КонецЦикла;
   
//***

КонецПроцедуры
Принудительное продолжение цикла в 1С 8.3:
&НаКлиенте
Процедура ПринудительноеПродолжениеЦикла(Команда)

    Для
П = 1 По 10 Цикл //***
       
Если П <> 4 Тогда
            Продолжить;
// Возврат в начало цикла ***
       
КонецЕсли;

       
Сообщить(П); // 4
   
КонецЦикла;

КонецПроцедуры
0
комментарии
____________________
Copyright©, «Программист 1С в г.Минске», 14.04.2020
Перепечатка текста и фотографий разрешена при наличии прямой ссылки на источник
Назад к содержимому