Как очистить справочник удалив все не используемые элементы? Очень часто менеджеры дублируют информацию в справочниках и время от времени их приходится чистить.
Но как удалить только те элементы справочника, которые не используются в документах?
Следующий пример кода поможет это сделать(в примере обрабатывается 4 справочника: Сотрудники, ФизЛица, Договора и Контрагенты) Скачать: Обработка для УТ 10 :
Код 1C v 8.х сп= Новый СписокЗначений;
сп. Добавить( "СотрудникиОрганизаций" ) ;
сп. Добавить( "ФизическиеЛица" ) ;
сп. Добавить( "ДоговорыКонтрагентов" ) ;
сп. Добавить( "Контрагенты" ) ;
Для Каждого стр из сп Цикл
текСпр= стр. Значение;
Запрос = Новый Запрос;
Текст =
"ВЫБРАТЬ
| СотрудникиОрганизаций.Ссылка
|ИЗ
| Справочник.%текСпр% КАК СотрудникиОрганизаций
|ГДЕ
| НЕ СотрудникиОрганизаций.ПометкаУдаления И НЕ СотрудникиОрганизаций.ЭтоГруппа" ;
Запрос. Текст = СтрЗаменить( Текст, "%текСпр%" , текСпр) ;
РезультатЗапроса = Запрос. Выполнить( ) ;
ВыборкаДетальныеЗаписи = РезультатЗапроса. Выбрать( ) ;
итЗаписей = Строка( ВыборкаДетальныеЗаписи. Количество( ) ) ;
ном= 0 ;
Пока ВыборкаДетальныеЗаписи. Следующий( ) Цикл
ном= ном+ 1 ; Состояние( текСпр+ ": " + Строка( ном) + " из " + итЗаписей) ;
СсылкаНаУдаляемыйЭлемент = ВыборкаДетальныеЗаписи. Ссылка;
МассивСсылок = Новый Массив;
МассивСсылок. Добавить( СсылкаНаУдаляемыйЭлемент) ;
НайденныеСсылки = НайтиПоСсылкам( МассивСсылок) ;
Если НайденныеСсылки. Количество( ) > 0 Тогда
Сообщить( "Нельзя удалять элемент:" + Строка( СсылкаНаУдаляемыйЭлемент) + ", на него имеются ссылки" , СтатусСообщения. Внимание) ;
Иначе
Сообщить( "Удаляем элемент:" + Строка( СсылкаНаУдаляемыйЭлемент) , СтатусСообщения. Информация) ;
УдаляемыйЭлемент = СсылкаНаУдаляемыйЭлемент. ПолучитьОбъект( ) ;
УдаляемыйЭлемент. Удалить( ) ;
КонецЕсли ;
КонецЦикла ;
КонецЦикла ;
Категория:
Справочники