Поиск неиспользуемых ссылок и пометка их на удаление (с описанием кода)

Публикация № 1031577

Администрирование - Чистка базы

Обработка чистка поиск неиспользуемых ссылок пометка удаление 1С.

3
Простая обработка по поиску неиспользуемых объектов с пометкой на удаление неиспользуемых элементов.

Возникла необходимость быстро проверить справочник и пометить неиспользуемые элементы на удаление.

Тестировалось в УПП 1.3.

В интернете встречаются решения, но они достаточно сложны и не всегда все эти функции необходимы.
Решил набросать простую обработку и описать её функционал, возможно кому пригодится. 

Смысл простой.

1) Выбираем Справочники или Документы. (С документом стоит быть аккуратным, обработка писалась для чистки справочников)

2) Нажимаем "Найти и пометить на удаление неиспользуемое". Выполняется поиск по наличию ссылок в системе на элемент. Если ссылок не найдено элемент помечается на удаление.


Основной функционал поиска, при необходимости можете доработать под ваши задачи:    

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

Можете поблагодарить, если Вам помог описанный функционал.

3

Скачать файлы

Наименование Файл Версия Размер
Поиск неиспользуемых ссылок и пометка их на удаление:
.epf 7,37Kb
30.03.19
0
.epf 1.0 7,37Kb Скачать

См. также

Специальные предложения

Избранное Подписка Сортировка: Древо
В этой теме еще нет сообщений.
Оставьте свое сообщение