Про циклы в 1С:Предприятие 8 с примерами

Про циклы в 1С:Предприятие 8 с примерами

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

Содержание

Цикл «Пока»

Синтаксис цикла «Пока» представлен ниже:

Пока Условие Цикл
//Здесь должен быть ваш код 
КонецЦикла;

Пока условие равно Истина, код, написанный после ключевого слова Цикл, будет выполняться.

Например, цикл, указанный ниже будет выполняться до тех пор, пока значение в счетчике не станет меньше 1:

//Данный цикл выводит значения в счетчике: 5,4,3,2,1.
Счетчик = 5;
Пока Счетчик >= 1 Цикл
	Сообщить ("Значение в счетчике: " + Счетчик); 
	Счетчик = Счетчик - 1;
КонецЦикла;

Если в цикле указанном выше отсутствовала бы запись:

«Счетчик = Счетчик — 1;», то цикл длился бы вечно.

Цикл «Для»

Синтаксис цикла «Для» представлен ниже:

Для ИмяПеременной = <Выражение1> По <Выражение2> Цикл
//Здесь должен быть ваш код 
КонецЦикла;

<Выражение1> — начальное числовое значение, которое мы задаем для счетчика.

<Выражение2> — максимальное числовое значение счетчика, которое нельзя изменить внутри цикла.

По – служит для связки Выражения1 и Выражения2.

В данном случае нам не надо писать в программном коде:

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

//Данный цикл выводит значения в счетчике: 1,2,3,4,5.
Для Счетчик = 1 По 5 Цикл
        Сообщить(Счетчик); 
КонецЦикла;

Цикл «Для Каждого»

Синтаксис цикла «Для Каждого» представлен ниже:

Для Каждого <ИмяПеременной1> Из <ИмяПеременной2> Цикл
//Здесь должен быть ваш код 
КонецЦикла;

<ИмяПеременной1> — при каждом повторении цикла, присваивается значение очередного элемента коллекции.

<ИмяПеременной2> — коллекция, из которой мы хотим получить элемент.

Из – служит для связки параметров <ИмяПеременной1> и <ИмяПеременной2>.

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

Например, цикл, указанный ниже будет выполнятся до тех пор, пока не обойдет всю коллекцию:

//Данный цикл перебирает все элементы массива и выводит их. 
//На экран пользователя выведется числа: 5,10.
МассивЧисел = Новый Массив;
МассивЧисел.Добавить(5);
МассивЧисел.Добавить(10);
Для Каждого ЭлементМассива Из МассивЧисел Цикл
	Сообщить ("Элемент массива: " + ЭлементМассива);
КонецЦикла;

Операторы циклов

Оператор «Прервать»

Данный оператор позволяет прервать выполнение цикла.

Примеры:

//Данный цикл счетчика остановиться и выведет на экран число: 1.
Для Счетчик = 1 По 5 Цикл
	Сообщить(Счетчик);
	Прервать;
КонецЦикла;
//Данный цикл счетчика остановиться и выведет на экран число: 5.
Счетчик = 5;
Пока Счетчик >= 1 Цикл
	Сообщить ("Значение в счетчике: " + Счетчик); 
	Прервать;
	Счетчик = Счетчик - 1;
КонецЦикла;

Оператор «Продолжить»

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

Пример:

//Данный цикл выведет числа: 5,4,3,2,1. 
//Программный код, который написан после оператора Продолжить; не будет исполнен.
Счетчик = 5;
Операция = 1;
Пока Счетчик >= 1 Цикл
	Сообщить (Счетчик); 
	Счетчик = Счетчик - 1;
	Продолжить;
	Сообщить ("Операция в цикле №: " + Операция);
	Операция = Операция + 1;
КонецЦикла;

 

Примеры использования циклов

Цикл по табличной части документа из формы обработки

Про циклы в 1С:Предприятие 8 с примерами

 

Обработка имеет табличную часть товары с реквизитами: Номенклатура и количество, задача сложить все количество в табличной части

КолИтог = 0;
Для каждого Стр из Объект.Товары Цикл
	КолИтог = КолИтог + Стр.Количество;
КонецЦикла;

 

Цикл по документам

Предположим, мы захотели перебрать все документы (с именем Задание) и добавить в комментарий произвольный текст, то это можно сделать так:

ДатаНач = НачалоГода(ТекущаяДата());   	//Начало этого года
ДатаКон = КонецГода(ТекущаяДата());		//Конец этого года
Выборка = Документы.Задание.Выбрать(ДатаНач,ДатаКон);     //Выбираем документы за нужный период, период можно не указывать, тогда цикл будет по всем документам
Пока Выборка.Следующий() Цикл
	
	ДокОбъект = Выборка.ПолучитьОбъект();  							//Получаем документ как объект
	ДокОбъект.Комментарий = ДокОбъект.Комментарий + " Я тут был";   //В Комментарий добавляем текст
	ДокОбъект.Записать();                                           //Записываем документ
	
КонецЦикла;

Цикл по дням

Цикл выводит выведет все дни в этом году:

ТекДата = НачалоГода(ТекущаяДата());
КонПериода = КонецГода(ТекДата);
Пока ТекДата <= КонПериода Цикл		
	Сообщить(ТекДата);
	ТекДата = ТекДата + 86400;    //86400, это количество секунд в дне
КонецЦикла;

Как прервать цикл

Пример цикла на 5 секунд:

КонДата = ТекущаяДата() + 5;
Пока Истина Цикл

	Если ТекущаяДата() > КонДата Тогда		
		 Прервать;		
	КонецЕсли;

КонецЦикла;

Цикл по всем документам, которые есть в базе

Для каждого ТипДок из Метаданные.Документы Цикл
	
	Выборка = Документы[ТипДок.Имя].Выбрать();
	Пока Выборка.Следующий() Цикл
		
		Сообщить(Выборка.Ссылка);	
		
	КонецЦикла;
	
КонецЦикла;

 

Оставьте комментарий

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