ПередУдалениемИдентификатораОбъектаМетаданных (БСП)

Автор: 1С
ОбщийМодуль.ДополнительныеОтчетыИОбработки
БСП

Перед удалением идентификатора объекта метаданных. Удаление ссылок подсистем перед их удалением.

// Удаление ссылок подсистем перед их удалением.
Процедура ПередУдалениемИдентификатораОбъектаМетаданных(ИдентификаторОбъектаМетаданныхОбъект, Отказ) Экспорт
	Если ИдентификаторОбъектаМетаданныхОбъект.ОбменДанными.Загрузка Тогда
		Возврат;
	КонецЕсли;
	
	ИдентификаторОбъектаМетаданныхСсылка = ИдентификаторОбъектаМетаданныхОбъект.Ссылка;
	Запрос = Новый Запрос(
		"ВЫБРАТЬ РАЗЛИЧНЫЕ
		|	РазделыОтчетовИОбработок.Ссылка
		|ИЗ
		|	Справочник.ДополнительныеОтчетыИОбработки.Разделы КАК РазделыОтчетовИОбработок
		|ГДЕ
		|	РазделыОтчетовИОбработок.Раздел = &Подсистема
		|
		|ОБЪЕДИНИТЬ ВСЕ
		|
		|ВЫБРАТЬ РАЗЛИЧНЫЕ
		|	РазделыОтчетовИОбработок.Ссылка
		|ИЗ
		|	Справочник.ДополнительныеОтчетыИОбработки.Назначение КАК РазделыОтчетовИОбработок
		|ГДЕ
		|	РазделыОтчетовИОбработок.ОбъектНазначения = &Подсистема");
	Запрос.УстановитьПараметр("Подсистема", ИдентификаторОбъектаМетаданныхСсылка);
	ИзменяемыеОбъекты = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка");
	
	НачатьТранзакцию();
	Попытка
		Блокировка = Новый БлокировкаДанных;
		Для Каждого СправочникСсылка Из ИзменяемыеОбъекты Цикл
			ЭлементБлокировки = Блокировка.Добавить(Метаданные.Справочники.ДополнительныеОтчетыИОбработки.ПолноеИмя());
			ЭлементБлокировки.УстановитьЗначение("Ссылка", СправочникСсылка);
		КонецЦикла;
		Блокировка.Заблокировать();
		
		Для Каждого СправочникСсылка Из ИзменяемыеОбъекты Цикл
			СправочникОбъект = СправочникСсылка.ПолучитьОбъект();
			
			Найденные = СправочникОбъект.Разделы.НайтиСтроки(Новый Структура("Раздел", ИдентификаторОбъектаМетаданныхСсылка));
			Для Каждого СтрокаТаблицы Из Найденные Цикл
				СправочникОбъект.Разделы.Удалить(СтрокаТаблицы);
			КонецЦикла;
			
			Найденные = СправочникОбъект.Назначение.НайтиСтроки(Новый Структура("ОбъектНазначения", ИдентификаторОбъектаМетаданныхСсылка));
			Для Каждого СтрокаТаблицы Из Найденные Цикл
				СправочникОбъект.Назначение.Удалить(СтрокаТаблицы);
			КонецЦикла;
			
			СправочникОбъект.Записать();
		КонецЦикла;
		ЗафиксироватьТранзакцию();
	Исключение
		ОтменитьТранзакцию();
		ВызватьИсключение;
	КонецПопытки;	
КонецПроцедуры

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

Рекомендации

Похожие публикации

ПередУдалениемИдентификатораОбъектаМетаданных (БСП)

ОбъектМетаданныхПоИдентификатору (БСП)

ОбъектыМетаданныхПоИдентификаторам (БСП)

ОписаниеПредопределенногоИдентификатораОбъектаМетаданных (БСП)

ПередПоискомПомеченныхНаУдаление (БСП)

ИдентификаторыОбъектовМетаданных (БСП)

ИдентификаторОбъектаМетаданных (БСП)

ДополнениеВыгрузкиИдентификаторВсехДокументов (БСП)

ДополнениеВыгрузкиИдентификаторВсехСправочников (БСП)

Обновлятор-1С: групповое (пакетное) обновление и обслуживание всех баз за один раз