HelpF.pro

Как очистить справочник удалив все не используемые элементы?

Очень часто менеджеры дублируют информацию в справочниках и время от времени их приходится чистить.

Но как удалить только те элементы справочника, которые не используются в документах?

Следующий пример кода поможет это сделать(в примере обрабатывается 4 справочника: Сотрудники, ФизЛица, Договора и Контрагенты) Скачать: Обработка для УТ 10:

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

Опубликовано на сайте: https://HelpF.pro
Прямая ссылка: https://HelpF.pro/faq/view/1839.html