Удаление строк таблицы по условию

Ram3 3 1

Обратный цикл по таблице значений с удалением строк по условию

Для Индекс = -ТЗ.Количество()+1 По -1 Цикл
	Стр =ТЗ.Получить(-Индекс);
	Если Найти(Стр.Имя, "ПодстрокаПоиска") > 0 Тогда
		ТЗ.Удалить(Стр);
	КонецЕсли;
КонецЦикла;
3

Комментарии

Bezeus
#1, 02 июня 2016 14:33

Сколько продлится такое удаление, если таблица эдак на 500 тысяч строк. Всё это реализуется через запросы. А то, что тут оставлено - это двойка с минусом


Bezeus
#2, 02 июня 2016 16:09

Если с запросами всё сложно, то хотя бы так:

ПараметрыОтбора = Новый Структура;
ПараметрыОтбора.Вставить(ИмяКолонкиПоКоторойБудемИскать, ПодстрокаПоиска);
МассивСтрокДляУдаления = ТЗ.НайтиСтроки(ПараметрыОтбора);
Для Каждого СтрокаДляУдаления Из МассивСтрокДляУдаления Цикл
	ТЗ.Удалить(СтрокаДляУдаления);
КонецЦикла;

У тебя при любом варианте количество итераций цикла будет равно количеству колонок таблицы. В моём варианте количество итераций цикла будет равно количеству найденных по условию строк.
К примеру, если таблица на 500 строк, а количество строк, удовлетворяющих условию всего 2, то цикл у тебя будет крутиться 500 раз;
У меня цикл пройдёт всего 2 раза.


ixijixi
#3, 11 июля 2018 16:24

Нулевая строка (Индекс=0) будет пропущена


См. также

Быстрое удаление строк в таблице значений

Проверка совпадения таблиц путем сравнения полного и внутреннего соединения

Таблица значений

Раскраска строки табличной части документа (обычные формы) по условию

Заполнение "пустых" строк табличной части

НайтиСтрокиТаблицы (БСП)

Описание строки в таблице значений

УдалитьПоследниеСимволыИзСтроки (БСП)

СтрокаТаблицыЗначенийВСтруктуру (БСП)

Модератору