Индекс >= 0
↓
тело цикла
↻ обратно к условию
Пока Условие Цикл
// тело
КонецЦикла;Условие проверяется перед каждой итерацией, включая самую первую — если оно сразу Ложь, тело не выполнится ни разу. Постусловного цикла («выполнить хотя бы раз, потом проверить») в 1С нет.
Единственный вариант в языке для нисходящего счётчика или шага, отличного от 1 — то, чего не умеет Для:
// от конца к началу, шаг -1
Индекс = Массив.ВГраница();
Пока Индекс >= 0 Цикл
// ...
Индекс = Индекс - 1;
КонецЦикла;
// шаг 2
Индекс = 0;
Пока Индекс <= 10 Цикл
// ...
Индекс = Индекс + 2;
КонецЦикла;Риск бесконечного цикла
Если внутри тела забыть изменить переменную, от которой зависит Условие, — цикл не завершится сам, платформа не подстраховывает. Особенно легко упустить это в ветке Если, которая иногда пропускает нужное присваивание:
Индекс = 0;
Пока Индекс < 10 Цикл
Если Индекс <> 5 Тогда
Индекс = Индекс + 1; // при Индекс = 5 инкремент пропускается — вечный цикл
КонецЕсли;
КонецЦикла;← Циклы