При удалении элементов из таких коллекций как: табличная часть, таблица значений, массив, индексы оставшихся элементов пересчитываются. Поэтому если удалять элементы при последовательном переборе в цикле, то результат будет некорректным. Для корректного удаления можно применить обратный перебор или цикл Пока.
Пример удаления элементов из массива циклом Пока.
Процедура УдалитьЭлементы1() Массив = Новый Массив; Массив.Добавить("один"); Массив.Добавить("два"); Массив.Добавить("три"); Индекс = 0; Пока Индекс < Массив.Количество() Цикл Если Условие = Истина Тогда Массив.Удалить(Индекс); Иначе Индекс = Индекс + 1; КонецЕсли; КонецЦикла;
КонецПроцедуры
Пример удаления элементов из массива обратным перебором.
Процедура УдалитьЭлементы2() Массив = Новый Массив; Массив.Добавить("один"); Массив.Добавить("два"); Массив.Добавить("три"); ИндексПоследнего = Массив.Количество() - 1; Для Индекс = -ИндексПоследнего По 0 Цикл Если Условие = Истина Тогда Массив.Удалить(-Индекс); КонецЕсли; КонецЦикла; КонецПроцедуры
|