понедельник, 10 июля 2017 г.

Удаление строк табличной части по отбору

Чтобы удалить строки из табличной части по отбору нужно использовать след алгоритм


Для начала нужно собрать все удаляемые строки в массив:
МассивБитыхТегов = Новый Массив;
Для Каждого СТР Из Объект.Теги Цикл
Если НЕ  ЗначениеЗаполнено(СТР.Тег) Тогда
МассивБитыхТегов.Добавить(СТР.ИсходныйНомерСтроки-1);
КонецЕсли;
КонецЦикла;

Затем сортируем массив по убыванию для корректного удаления:
// Отсортировать элементы в массиве
СписокЗначений = Новый СписокЗначений;
СписокЗначений.ЗагрузитьЗначения(МассивБитыхТегов);
СписокЗначений.СортироватьПоЗначению(НаправлениеСортировки.Убыв);
МассивБитыхТегов = СписокЗначений.ВыгрузитьЗначения();  

И удаляем объекты в цикле:
Для Каждого Элемент Из МассивБитыхТегов Цикл                 
Объект.Теги.Удалить(Элемент);
КонецЦикла;

Общий листинг:
МассивБитыхТегов = Новый Массив;
Для Каждого СТР Из Объект.Теги Цикл
Если НЕ  ЗначениеЗаполнено(СТР.Тег) Тогда
МассивБитыхТегов.Добавить(СТР.ИсходныйНомерСтроки-1);
КонецЕсли;
КонецЦикла;

// Отсортировать элементы в массиве
СписокЗначений = Новый СписокЗначений;
СписокЗначений.ЗагрузитьЗначения(МассивБитыхТегов);
СписокЗначений.СортироватьПоЗначению(НаправлениеСортировки.Убыв);
МассивБитыхТегов = СписокЗначений.ВыгрузитьЗначения();  

Для Каждого Элемент Из МассивБитыхТегов Цикл                 
Объект.Теги.Удалить(Элемент);
КонецЦикла;

Комментариев нет:

Отправить комментарий