Поиск количества ссылок на объект по измерениям в регистрах

Процедура выполняет поиск по измерениям регистров накопления (сменить на любой другой не составит сложности, как и на поиск по ресурсам, реквизитам). Подойдет для тех, у кого режим совместимости 8.3.4 и ниже, в следствие чего, в НайтиПоСсылкам() нет возможности использовать ОбластьПоиска, а платформенный поиск ссылок выдает избыточное количество информации. Писался для работы в толстом клиенте на ОФ, поэтому в коде присутствует функция Сообщить().

Процедура НайтиСсылкуНаОрганизациюВРегистрахИзмеренияхРН (ОбъектДляПоиска, ТипОбъекта)

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

Комментарии

Владимир Доброродный
#1, 10 марта 2021 13:11

Толковая обработка. Я сам планировал написать такую же для любого типа объекта. Она будет нужна для определения списка полей, для которых например нужно писать правила конвертации свойств в КД. Также можно будет исключать поля с типом "булево" и единственным значением -"ложь"


См. также

ИсключенияПоискаСсылок (БСП)

ПриДобавленииИсключенийПоискаСсылок (БСП)

ИменаИзмеренийРегистраПоТипу (БСП)

Групповое изменение Измерения в НабореЗаписей регистра сведений

ПриДобавленииИсключенийПоискаСсылокДопускающихУдаление (БСП)

ВыбратьИзмеренияНезависимогоРегистраСведенийДляОбработки (БСП)

СоздатьВременнуюТаблицуЗначенийЗаблокированныхИзмерений (БСП)

КоличествоОпорныхПолейРегистра (БСП)

МаксимальноеКоличествоОпорныхПолейРегистра (БСП)

Модератору