19 сент. 2016 г.

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

//******************************************************************************
// ОчисткаТЗ()
// Параметры: ТЗ, которую надо очистить
// В ТЗ д.б. Колонки с идентификаторами "НадоУдалить" и "ОПС" (оригинальный порядок строк)
// Описание: очищает ТЗ от ненужных строк
Процедура глОчисткаТЗ(ТЗдляЧистки, ОПС="+ОПС", КолонкаУдалить="НадоУдалить", Режим=0) Экспорт
 
 Попытка  НадоУдалить = ТЗдляЧистки.Итог(КолонкаУдалить);
 Исключение Возврат;
 КонецПопытки;
 
 ТЗКС = ТЗдляЧистки.КоличествоСтрок();
 Если Режим <> 0 Тогда
  Сообщить("> ["+ТекущееВремя()+"]: *** удаляем "+НадоУдалить+" из "+ТЗКС+" ****"); 
 КонецЕсли;
 
 Если НадоУдалить <= 0 Тогда Возврат; КонецЕсли;
 
 Если НадоУдалить >= ТЗКС Тогда
  ТЗдляЧистки.УдалитьСтроки();
 Иначе
  ТЗРаб = СоздатьОбъект("ТаблицаЗначений"); ТЗдляЧистки.Выгрузить(ТЗРаб);
  ТЗРаб.Сортировать("+"+КолонкаУдалить); ТЗРаб.Выгрузить(ТЗдляЧистки,1,ТЗКС-НадоУдалить);
  ТЗРаб = 0;
 КонецЕсли;
 Если ПустаяСтрока(ОПС) = 1 Тогда Возврат; КонецЕсли; //сортировать не надо
 Если ОПС = "###" Тогда Возврат; КонецЕсли; //сортировать не надо
 //восстановим оригинальный порядок строк
 ТЗдляЧистки.Сортировать(ОПС);
КонецПроцедуры //глОчисткаТЗ()
 

CopyPaste Copyright © 2017 - |- Шаблон создан O Pregador - |- Отредактирован myr4ik07