Профессия — 1С

Рукопашный бой Карташ

Категории

Циклы в языке программирования 1С

рубрики: Язык программирования 1С | Дата: 8 Май, 2017

В этой статье рассмотрим такую конструкцию языка прогрммирования 1С как Циклы.




Существует три способа организации циклов.

  1. Циклы с использованием переменной — счетчика цикла
  2. Циклы с использование логического выражения (выполняются до тех пор пока логическое выражение истинно)
  3. Обход коллекций в цикле

Рассмотрим каждый из этих способов.

Циклы с использованием переменной — счетчика цикла

Синтаксис:




Для <Переменная> = <НачальноеЗначение> По <КонечноеЗначение> Цикл

КонецЦикла;

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




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




Для Счетчик = 0 По 1000 Цикл

КонецЦикла;

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




Для Счетчик = 0 По 1000 Цикл
	Счетчик = Счетчик + 10;
КонецЦикла;

Циклы с использование логического выражения

Синтаксис:




Пока <ЛогическоеВыражение> Цикл

КонецЦикла;

Пример:




Отказ		= Ложь;
ГенераторСЧ	= Новый ГенераторСлучайныхЧисел(1);

Пока НЕ Отказ Цикл

	СлучайноеЧисло = ГенераторСЧ.СлучайноеЧисло(0, 10);

	Если СлучайноеЧисло > 5 Тогда
		Отказ = Истина;
	КонецЕсли;

КонецЦикла;

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

Обход коллекций в цикле

В языке программирования 1С существует такое понятие как коллекция. Она представляет собой набор элементов, содержащихся внутри какого-то объекта.




К коллекции мы можем отнести такие объекты как: массив, таблица значений, выборка из результата запроса, метаданные и т.д. Понятие это достаточно условное, но в синтакс-помощнике встречается на каждом шагу. Очень часто встречается задача, когда нам надо последовательно перебрать все элементы коллекции, чтобы совершить над ними какие-то действия. Для этого и существует синтаксическая конструкция:




Для каждого <ЭлементКоллекции> Из <Коллекция> Цикл

КонецЦикла;

Здесь <ЭлементКоллекции> — это переменная в которую последовательно помещаются элементы из коллекции. И внутри цикла она соответствующим образом обрабатывается.
В качестве примера приведу обход в цикле строк таблицы значений. Пусть она называется ТаблицаТовары и выглядит вот таким образом:

Наименование Цена
Яблоки 50.00
Апельсины 100.00

Обойдем в цикле эту таблицу и для каждой строки выведем сообщение с наименованием и ценой товара:




Для каждого СтрокаТаблицы Из ТаблицаТовары Цикл

	Наименование	= СтрокаТаблицы.Наименование;
	Цена			= СтрокаТаблицы.Цена;

	Сообщение = Новый СообщениеПользователю;
	Сообщение.Текст = "Наименование товара: " + Наименование + "; Цена: " + Цена;
	Сообщение.Сообщить();

КонецЦикла;

На самом деле то же самое можно проделать и воспользовавшись первым вариантом, т.е в цикле с использованием счетчика:




КоличествоСтрок = ТаблицаТовары.Количество();
Для Счетчик = 0 По КоличествоСтрок - 1 Цикл

	СтрокаТаблицы = ТаблицаТовары[Счетчик];

	Наименование	= СтрокаТаблицы.Наименование;
	Цена			= СтрокаТаблицы.Цена;

	Сообщение = Новый СообщениеПользователю;
	Сообщение.Текст = "Наименование товара: " + Наименование + "; Цена: " + Цена;
	Сообщение.Сообщить();

КонецЦикла;

Но как видим использовать обход элементов коллекции гораздо проще и удобней

Вспомогательные операторы

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




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




Для Счетчик = 0 По 100 Цикл

	Если Счетчик = 0 Тогда
		Продолжить;
	КонецЕсли;

	Если Счетчик = 4 Тогда
		Прервать;
	КонецЕсли;

	Результат = 1 / Счетчик;

	Сообщение = Новый СообщениеПользователю;
	Сообщение.Текст = Строка(Результат);
	Сообщение.Сообщить();

КонецЦикла;

Ноль пропускаем, т.к. на ноль делить нельзя. И всего цикл выполниться пять раз, для значений переменной Счетчик от 0 до 4

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *

   

2018г. Профессия — 1С. Обмен опытом по программированию в 1С