Перейти к содержанию

Удаление элемента при обходе коллекции посредством оператора "Для каждого ... Из ... Цикл" (DeletingCollectionItem)

Тип Поддерживаются
языки
Важность Включена
по умолчанию
Время на
исправление (мин)
Теги
Ошибка BSL
OS
Важный Да 5 standard
error

Описание диагностики

Не следует непосредственно удалять элементы коллекции при ее обходе через синтаксическую конструкцию Для каждого ... Из ... Цикл. Т.к. при удалении элемента сдвигается индекс следующего элемента.

Например:

Для Каждого Элемент Из Коллекция Цикл
   Коллекция.Удалить(Элемент)
КонецЦикла;

Как вариант удаляйте элементы с конца:

ТекущийИндекс = Числа.ВГраница();
Пока ТекущийИндекс >= 0 Цикл
    Если Числа[ТекущийИндекс] < 10 Тогда
        Числа.Удалить(ТекущийИндекс);
    КонецЕсли;
    ТекущийИндекс = ТекущийИндекс  1;
КонецЦикла;

Источники

Сниппеты

Экранирование кода

// BSLLS:DeletingCollectionItem-off
// BSLLS:DeletingCollectionItem-on

Параметр конфигурационного файла

"DeletingCollectionItem": false