Верно замечено, насчет упрощения
УдСтроки=Таб.НайтиСтроки(Новый Структура("ФлагУдаления",Истина));
Для Каждого Стр из УдСтроки Цикл
Таб.Удалить(Стр);
КонецЦикла;
Тут на общий случай рассматривали, когда критерий из нескольких условий и не на равенство. Например, удалить все строки из таблицы значений когда в одной из колонок число меньше А или больше Б и отбор с методом таблицы значений (или табличной части)
ТЗ.НайтиСтроки(Новый Структура ("Поле1, поле2,...", ЗначениеПоля1, ЗначениеПоля2, ...)
уже не сработает. Потому и методы именно для ТаблицыЗначений, а не для табличной части (раз были такие условия тестовой задачи).
Даже дальше стало интересно и продолжили дискуссию по обмену данными и получили забавные результаты.
http://forum.infostart.ru/forum9/topic114943/ вот эта самая дискуссия, где не по теме продолжили.
Как то метод перебора коллекции именно для удаления элементов из коллекции применять боюсь (мало ли какие изменения в платформе). Проще - но дело вкуса.
Рассмотрели в отладчике ситуацию с удалением строки:
Пример выполенения
ТЗ = Новый ТаблицаЗначений;
ТЗ.Колонки.Добавить("Колонка");
Стр1 = ТЗ.Добавить();
Стр1.Колонка = 555;
Стр2 = ТЗ.Добавить();
Стр2.Колонка = 777;
Стр3 = ТЗ.Добавить();
Стр3.Колонка = 999;
ВнутрСтрока1 = ЗначениеВСтрокуВнутр(ТЗ);
ТЗ.Удалить(Стр2);
ВнутрСтрока2 = ЗначениеВСтрокуВнутр(ТЗ);
...
А = ЗначениеВСтрокуВнутр(ТЗ[0]);
Б = ЗначениеВСтрокуВнутр(ТЗ[1]);
С = ЗначениеВСтрокуВнутр(ТЗ);
Получилось, что, до удаления, т.е ВнутрСтрока1 =
{"#",acf6192e-81ca-46ef-93a6-5a6968b78663,
{8,
{1,
{0,"Колонка",
{"Pattern"},"",0}
},
{2,1,0,0,
{1,3,
{2,0,1,
{"N",555},0},
{2,1,1,
{"N",777},0},
{2,2,1,
{"N",999},0}
},0,2}
}
}
Скрыть
После удаления, ВнутрСтрока2 =
{"#",acf6192e-81ca-46ef-93a6-5a6968b78663,
{8,
{1,
{0,"Колонка",
{"Pattern"},"",0}
},
{2,1,0,0,
{1,2,
{2,0,1,
{"N",555},0},
{2,2,1,
{"N",999},0}
},0,2}
}
}
Обратите внимание на последовательность символов "{2,0,1,{"N",555},0}", "{2,2,1,{"N",999},0}"
Можно, предположить, что это и есть строка ТЗ. Причем видно, что "{2,1,1,{"N",777},0}" - после удаления исчезло из внутреннего представления. Скорее всего выделенные символ "{2,0,1", {2,1,1" и есть идентификаторы строк ТЗ. Собственно, поэтому при использования Для Каждого Из - индексы "не сбиваются" при удалении строк. Кстати, еще интересный вывод. Передавая, например, в функцию строку ТЗ, мы на самом деле передаем всю таблицу значений (точнее, указатель)
Чем дальше в лес, тем больше дров :)