Выборка=Объект.ТабличнаяЧасть1.Выгрузить();
Для Каждого ЭлементВыборки из Выборка Цикл
ОтборЗаявки=Новый Структура();
ОтборЗаявки.Вставить("НомерОперации",ЭлементВыборки.НомерОперации);
Выборка2=Выборка.НайтиСтроки(ОтборЗаявки);
Для каждого ЭлементУдаления Из Выборка2 Цикл
Выборка.Удалить(ЭлементУдаления);
КонецЦикла;
КонецЦикла;
Задача, хоть она к глюку особого отношения не имеет - получить в отдельную выборку (выборка2) массив строк - который сгруппирован значением в "номероперации", провести с ними определенные действия (проверка правильности заполнения), и повторно не обрабатывать данный массив.
Так вот - если я удаляю массив строк из "Выборка", цикл начинает отсчет элементов со сместившейся позиции!! Т.е. пропускает часть строк выборки! В примере:
После прохода первого цикла я удаляю первые три индекса - т.е. Значение2 смещается на индекс 0. И цикл берет из выборки не строку со "Значение2", а строку со "Значение3" - которая теперь в выборка с индексом "1".
(1) я не спрашиваю как решить задачу. Вопрос больше к отличию типов циклов - по идее, Цикл "Для каждого" должен пройти ВСЕ уникальные элементы коллекции.
Цикл, который направляешь по счетчику - тут вопросов нет, куда направил - то значение он и возьмет.
(2) ведь вам уже миллион раз говорили: нельзя удалять строки внутри цикла, индексы в таблице смещаются. А вы тупо год за годом наступаете на одни и те же грабли.
(0) Если очень хочется решить задачу именно так (хотя я бы выбрал другой путь), можно переписать на следующий код:
Выборка=Объект.ТабличнаяЧасть1.Выгрузить();
//Для Каждого ЭлементВыборки из Выборка Цикл
Пока Выборка.Количество() > 0 Цикл
ЭлементВыборки = Выборка[0];
ОтборЗаявки=Новый Структура();
ОтборЗаявки.Вставить("НомерОперации",ЭлементВыборки.НомерОперации);
Выборка2=Выборка.НайтиСтроки(ОтборЗаявки);
Для каждого ЭлементУдаления Из Выборка2 Цикл
Выборка.Удалить(ЭлементУдаления);
КонецЦикла;
КонецЦикла;
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший