[Alimir_BootModal_Login]

Внутренний язык программирования 1С 8.3 для начинающих программистов: циклы в 1С часть 3

Автор уроков и преподаватель школы: Владимир Милькин

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

Теперь, когда мы уже знаем что такое коллекция и для чего она нужна - время пришло.

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

Конструкция цикла выглядит вот так:

Для Каждого Имя Из ИмяКоллекции Цикл
  Команда1();
  Команда2();
  ...
КонецЦикла;

Команды, заключенные между словами  Цикл и КонецЦикла называются телом цикла и выполняются  столько раз, сколько элементов содержит в себе коллекция.

При этом Имя программист придумывает сам и с этим именем  связывается значение очередного элемента коллекции. Сейчас разберем на примере и всё станет ясно.

Предположим, что у нас есть такой массив:

Числа = Новый Массив;
Числа.Добавить(128);
Числа.Добавить(256);
Числа.Добавить(512);

И мы хотим написать цикл, который выводит элементы этого массива от первого до последнего.

Сначала давайте напишем такой обход при помощи обычного цикла Для:

Для Шаг = 0 По Числа.Количество() - 1 Цикл
  Сообщить(Числа[Шаг]);
КонецЦикла;

Да, этот код хорош, но в нём легко допустить ошибку, например:

  • мы можем по ошибке указать в качестве начального значения цикла не 0, а 1
  • мы можем забыть отнять 1 от количества для верного определения индекса последнего элемента

И это будет очень коварная ошибка, так как программист (из-за замыливания глаза)  сможет долго не замечать и не находить её.

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

Вот как будет выглядеть обход нашего массива при помощи цикла Для Каждого:

Для Каждого Элемент Из Числа Цикл
  Сообщить(Элемент);
КонецЦикла;

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

Пройдите тест

Начать тест

Мы отлично поработали, пора отдохнуть!

Продолжить обучение в школе программирования в 1С

Для учеников

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

Обязательно выполняйте все тесты и домашние задания, старайтесь улучшить свои результаты. Сверяйтесь с эталонными решениями только после самостоятельного выполнения задач.

На вопросы учеников — отвечаю по почте,  но прежде загляните в ЧАВО (ссылка) .

С уважением, Владимир Милькин

[Alimir_BootModal_Login]