ПолучитьОбъектПоПользовательскомуИдентификатору (БСП)

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

Получить объект по пользовательскому идентификатору. Находит общую настройку по идентификатору пользовательской настройки.

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

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

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

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

ПолучитьОчереднойИдентификаторОбъекта (БСП)

ПользовательскийПрефикс (БСП)

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

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

УдалитьПользовательскиеПрефиксыИзНомераОбъекта (БСП)

ИдентификаторПодсистемы (БСП)

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

ПолучитьОписаниеДанных (БСП)

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

Синтакс-помощник БСП с нейросетевым ассистентом