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

2 Добавил: Ram3

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

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

Комментарии

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

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


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

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


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

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


FastCode - сервис поиска кода 1С

Уже более 1000 разработчиков используют FastCode в работе!