1C. Поиск «Объект не найден» в регистре и удаление

Иногда в ИБ можно встретить ссылки на объекты <Объект не найден> (75:a353ac9e17b7bc7111e60238e0dc59c6), это ссылки на удаленные объекты. Получаются такие ссылки в ходе сбоев ИБ, РИБ(Распределенных Информационных Баз) или других механизмов создающих ссылки не записанных объектов(разбирал здесь).

Поиск "Объект не найден" в регистре и удаление

В любом случае — это не есть хорошо, будем исправлять! Разберем пример поиска таких ссылок в регистре сведений «Данные для обработки» некой конфигурации, регистр имеет одно измерение «Номенклатура«, тип Справочник.Номенклатура.

В рамках задачи необходимо удалить записи регистра с битыми ссылками, в статье не будет разбираться тестирование и исправление ИБ, или другое восстановление ссылок.

Поиск ссылок <Объект не найден>

Сама ссылка считается валидной, а вот если обратиться к ее реквизиту в запросе, то получим NULL. Из этого пишем запрос получающий наименование из ссылки в измерении «номенклатура» регистра сведений «Данные для обработки» и отбираем записи у которых значение запрашиваемого реквизита равно NULL. Если измерений по которым необходимо производить поиск больше одного, то объединяем условия через ИЛИ.

А для удаления таких записей просто создадим наборы записей указав отборы и запишем.

&НаСервере
Процедура УдалитьПлохиеЗаписиДанныхДляОбработки()

	// Найдем записи с <Объект не найден>
	Запрос = Новый Запрос;
	Запрос.Текст = 
	"ВЫБРАТЬ
	|	ДанныеДляОбработки.Номенклатура КАК Номенклатура
	|ИЗ
	|	РегистрСведений.ДанныеДляОбработки КАК ДанныеДляОбработки
	|ГДЕ
	|	ДанныеДляОбработки.Номенклатура.Наименование ЕСТЬ NULL";
	
	Выборка = Запрос.Выполнить().Выбрать();
	
	// Удаление записей с <Объект не найден>
	Пока Выборка.Следующий() Цикл 
		
		НаборЗаписей = РегистрыСведений.ДанныеДляОбработки.СоздатьНаборЗаписей();
		
		НаборЗаписей.Отбор.Номенклатура.Установить(Выборка.Номенклатура);
		
		НаборЗаписей.Записывать = Истина;
		НаборЗаписей.Записать(Истина);	
				
	КонецЦикла;
	
КонецПроцедуры

После выполнения данного кода из регистра сведений будут удалены все записи со ссылками <Объект не найден>.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *