Для

Встроенный язык · For

Оператор цикла Для предназначен для циклического повторения операторов, находящихся внутри конструкции Цикл – КонецЦикла. Перед началом выполнения цикла значение <Выражение 1> присваивается переменной <Имя переменной>. Значение <Имя переменной> автоматически увеличивается при каждом проходе цикла. Величина приращения счетчика при каждом выполнении цикла равна 1. Цикл выполняется, пока значение переменной <Имя_переменной> меньше или равно значению <Выражение 2>. Условие выполнения цикла всегда проверяется в начале, перед выполнением цикла.

Синтаксис

Для <Имя переменной> = <Выражение 1> По <Выражение 2> Цикл
// Операторы
[Прервать;]
// Операторы
[Продолжить;]
// Операторы
КонецЦикла;
Полное описание, параметры и ограничения

Для (For)

Для (For)

Синтаксис:
Для <Имя переменной> = <Выражение 1> По <Выражение 2> Цикл
// Операторы
[Прервать;]
// Операторы
[Продолжить;]
// Операторы
КонецЦикла;

Параметры:
<Имя переменной>
Идентификатор переменной (счетчика цикла), значение которой автоматически увеличивается на 1 при каждом повторении цикла. Так называемый счетчик цикла. Значение переменной также может быть изменено внутри самого цикла.

<Выражение 1>
Числовое выражение, которое задает начальное значение, присваиваемое счетчику цикла при первом проходе цикла.

По
Синтаксическая связка для параметра <Выражение 2>.

<Выражение 2>
Максимальное значение счетчика цикла. Когда переменная <Имя переменной> становится больше чем <Выражение 2>, выполнение оператора цикла Для прекращается. Данное значение вычисляется однократно перед началом цикла и не может быть изменено внутри цикла.

Цикл
Операторы, следующие за ключевым словом Цикл выполняются, пока значение переменной <Имя переменной> меньше или равно значения <Выражение 2>.

// Операторы
Исполняемый оператор или последовательность таких операторов.

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

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

КонецЦикла
Ключевое слово, которое завершает структуру оператора цикла.

Описание:
Оператор цикла Для предназначен для циклического повторения операторов, находящихся внутри конструкции Цикл – КонецЦикла. Перед началом выполнения цикла значение <Выражение 1> присваивается переменной <Имя переменной>. Значение <Имя переменной> автоматически увеличивается при каждом проходе цикла. Величина приращения счетчика при каждом выполнении цикла равна 1. Цикл выполняется, пока значение переменной <Имя_переменной> меньше или равно значению <Выражение 2>. Условие выполнения цикла всегда проверяется в начале, перед выполнением цикла.

Использование в версии:

Доступен, начиная с версии 8.0.

Методическая информация

Практические примеры

Для: сложить собственные цены по индексам массива

Индексы массива начинаются с нуля, последняя позиция равна Количество()-1. Пустую коллекцию проверяем заранее.

Где и как запускать

Полный серверный общий модуль учебной базы. Собственные значения в памяти, без чтения или записи рабочих данных.

Подготовка

  1. Используйте отдельную учебную базу без рабочих данных. Создайте серверный общий модуль УчебныйЯзык с флагом Сервер, без Привилегированный.

  2. Вставьте весь модуль выбранного примера, а не одну процедуру внутрь другой. Из своей серверной команды учебной обработки вызовите УчебныйЯзык.ВыполнитьПример().

  3. Все числа, строки и коллекции созданы в самом примере. Документы, регистры, файловая система и сеть не используются; никаких зависимостей от КА2/УНФ/УТ/БП нет.

  4. Браузер показывает код, но не исполняет BSL. Проверки результата нужно выполнить вручную на платформе 8.5.1.1343 в учебной базе.

Процедура ВыполнитьПример() Экспорт
    Цены = Новый Массив;
    Цены.Добавить(100);
    Цены.Добавить(50);
    Цены.Добавить(250);
    Сумма = 0;
    Если Цены.Количество() > 0 Тогда
        Для Индекс = 0 По Цены.Количество() - 1 Цикл
            Сумма = Сумма + Цены[Индекс];
        КонецЦикла;
    КонецЕсли;
    Сообщить(Сумма = 400);
    Сообщить(Цены.Количество() = 3);
КонецПроцедуры

Разбор по шагам

  1. Создать собственный массив трёх чисел. Сумма первоначально 0.

  2. Для последовательно задаёт Индекс=0,1,2; граница По включительна.

  3. На каждой итерации прибавлять одно значение и после последней выйти из цикла.

  4. Удалите все три Добавить: защита пустого массива пропустит цикл, Сумма останется 0.

Как проверить результат

  1. В исходном варианте два сообщения Истина, итог 400.

  2. Для пустого массива первой проверке соответствует Ложь: она специально ожидает исходные данные.

Ожидаемый результат

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

На что обратить внимание

  1. Количество() — размер, не последний индекс.

  2. Не обращайтесь к Цены[3] при трёх элементах.

  3. Если индекс не нужен, используйте Для Каждого.

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

Продолжить и Прервать: пропустить ошибочную цену и остановиться на лимите

Продолжить переходит к следующей итерации; Прервать завершает ближайший цикл целиком.

Где и как запускать

Полный серверный общий модуль учебной базы. Собственные значения в памяти, без чтения или записи рабочих данных.

Подготовка

  1. Используйте отдельную учебную базу без рабочих данных. Создайте серверный общий модуль УчебныйЯзык с флагом Сервер, без Привилегированный.

  2. Вставьте весь модуль выбранного примера, а не одну процедуру внутрь другой. Из своей серверной команды учебной обработки вызовите УчебныйЯзык.ВыполнитьПример().

  3. Все числа, строки и коллекции созданы в самом примере. Документы, регистры, файловая система и сеть не используются; никаких зависимостей от КА2/УНФ/УТ/БП нет.

  4. Браузер показывает код, но не исполняет BSL. Проверки результата нужно выполнить вручную на платформе 8.5.1.1343 в учебной базе.

Процедура ВыполнитьПример() Экспорт
    Цены = Новый Массив;
    Цены.Добавить(100);
    Цены.Добавить(-1);
    Цены.Добавить(200);
    Цены.Добавить(500);
    Сумма = 0;
    Обработано = 0;
    Для Каждого Цена Из Цены Цикл
        Если Цена <= 0 Тогда
            Продолжить;
        КонецЕсли;
        Если Сумма + Цена > 400 Тогда
            Прервать;
        КонецЕсли;
        Сумма = Сумма + Цена;
        Обработано = Обработано + 1;
    КонецЦикла;
    Сообщить(Сумма = 300);
    Сообщить(Обработано = 2);
КонецПроцедуры

Разбор по шагам

  1. Обработать цену 100: сумма 100, счётчик 1.

  2. Для -1 выполнить Продолжить: нижняя часть тела не исполнится.

  3. Прибавить 200: сумма 300, счётчик 2.

  4. Для 500 будущая сумма 800 выше лимита. Прервать выходит из цикла до прибавления.

Как проверить результат

  1. Две проверки Истина, сумма 300 и две принятые цены.

  2. Поставьте четвёртую цену 50: цикл дойдёт до конца, итог 350 и три принятые цены.

Ожидаемый результат

Различие пропуска и прекращения показано на двух разных событиях одного обхода.

На что обратить внимание

  1. Оба оператора относятся к ближайшему окружающему циклу.

  2. Прервать не заменяет Возврат из функции.

  3. Правило лимита здесь учебное, не алгоритм реального подбора товаров.

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

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.