Удаление неиспользуемых элементов справочника
Есть многоуровневый справочник Контрагенты. Как определить для каждого элемента этого справочника, используется ли он – где-то задействован в документах или операциях и если нет, то удалить.
Попробуйте воспользоваться процедурой НайтиСсылки(), например, вот так:
ТЗСсылок = СоздатьОбъект(“ТаблицаЗначений”); СпрК = СоздатьОбъект(“Справочник.Контрагенты”); ВсегоПомечено = 0; СпрК.ПорядокНаименований(); СпрК.ВыбратьЭлементы(); Пока СпрК.ПолучитьЭлемент()=1 Цикл Если СпрК.ЭтоГруппа()<>1 Тогда ТЗСсылок.УдалитьСтроки(); НайтиСсылки(СпрК.ТекущийЭлемент(),ТЗСсылок); Если ТЗСсылок.КоличествоСтрок()=0 Тогда Если СпрК.ПометкаУдаления()<>1 Тогда СпрК.Удалить(0); ВсегоПомечено = ВсегоПомечено + 1; КонецЕсли; КонецЕсли; КонецЕсли; КонецЦикла; Сообщить(“Итого помечено на удаление “ + СокрЛП(ВсегоПомечено)+” контрагента(ов)”);
|