Типовые примеры кода для правильного удаления строк при обходе циклами.


Проблема — 1С при удалении элемента индекс смещается на -1 и при обходе проскакивают элементы удовлетворяющие услови.

Решение — использовать обход по индексам (вместо Для каждого)

Пример 1 

КоличествоСтрок = Объект.Товары.Количество();

Для Счетчик = 0 По КоличествоСтрок - 1 Цикл
	
	ТекущаяСтрока = Объект.Товары[КоличествоСтрок - Счетчик - 1];
	
	Если ВашеУсловие Тогда //укажите ваше условие
		Объект.Товары.Удалить(ТекущаяСтрока);
	КонецЕсли;
	
КонецЦикла;

Пример 2

КоличествоСтрок = Объект.Товары.Количество();
Индекс = 0;

Пока Индекс < КоличествоСтрок Цикл
	
	ТекущаяСтрока = Объект.Товары(Индекс);
	
	Если ВашеУсловие Тогда //укажите ваше условие
		Объект.Товары.Удалить(Индекс);
		КоличествоСтрок = КоличествоСтрок - 1;
	Иначе
		Индекс = Индекс + 1;
	КонецЕсли;
	
КонецЦикла;