Удаление элемента при обходе коллекции посредством оператора "Для каждого ... Из ... Цикл" (DeletingCollectionItem)
Тип | Поддерживаются языки |
Важность | Включена по умолчанию |
Время на исправление (мин) |
Теги |
---|---|---|---|---|---|
Ошибка |
BSL OS |
Важный |
Да |
5 |
standard error |
Не следует непосредственно удалять элементы коллекции при ее обходе через синтаксическую конструкцию Для каждого ... Из ... Цикл. Т.к. при удалении элемента сдвигается индекс следующего элемента.
Например:
Для Каждого Элемент Из Коллекция Цикл
Коллекция.Удалить(Элемент)
КонецЦикла;
Как вариант удаляйте элементы с конца:
ТекущийИндекс = Числа.ВГраница();
Пока ТекущийИндекс >= 0 Цикл
Если Числа[ТекущийИндекс] < 10 Тогда
Числа.Удалить(ТекущийИндекс);
КонецЕсли;
ТекущийИндекс = ТекущийИндекс – 1;
КонецЦикла;
// BSLLS:DeletingCollectionItem-off
// BSLLS:DeletingCollectionItem-on
"DeletingCollectionItem": false