Переменная цикла получает очередной элемент, а не номер его позиции.
Где и как запускать
Полный серверный общий модуль учебной базы. Собственные значения в памяти, без чтения или записи рабочих данных.
Подготовка
Используйте отдельную учебную базу без рабочих данных. Создайте серверный общий модуль УчебныйЯзык с флагом Сервер, без Привилегированный.
Вставьте весь модуль выбранного примера, а не одну процедуру внутрь другой. Из своей серверной команды учебной обработки вызовите УчебныйЯзык.ВыполнитьПример().
Все числа, строки и коллекции созданы в самом примере. Документы, регистры, файловая система и сеть не используются; никаких зависимостей от КА2/УНФ/УТ/БП нет.
Браузер показывает код, но не исполняет BSL. Проверки результата нужно выполнить вручную на платформе 8.5.1.1343 в учебной базе.
Процедура ВыполнитьПример() Экспорт
Цены = Новый Массив;
Цены.Добавить(100);
Цены.Добавить(50);
Цены.Добавить(250);
Сумма = 0;
КоличествоЦен = 0;
Для Каждого Цена Из Цены Цикл
Сумма = Сумма + Цена;
КоличествоЦен = КоличествоЦен + 1;
КонецЦикла;
Сообщить(Сумма = 400);
Сообщить(КоличествоЦен = 3);
КонецПроцедурыРазбор по шагам
Создать собственную коллекцию 100/50/250.
В первой итерации Цена=100, затем 50, затем 250.
Накопить сумму и число обработанных значений.
В пустой коллекции тело не исполняется; оба накопителя остаются 0.
Как проверить результат
Два сообщения Истина, обработано три значения, сумма 400.
Не подставляйте Цена в Цены[Цена]: это значение цены, не индекс.
Ожидаемый результат
Обход элементов объяснён на конкретной коллекции и сопоставлен с индексным циклом.
На что обратить внимание
Имя после Каждого — переменная элемента.
Не меняйте структуру коллекции во время обхода без проверки контракта конкретного типа.
Из указывает коллекцию, а не SQL-источник.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.