Получить объект по пользовательскому идентификатору. Находит общую настройку по идентификатору пользовательской настройки.
// Находит общую настройку по идентификатору пользовательской настройки.
//
// Параметры:
// Настройки - НастройкиКомпоновкиДанных - Коллекции настроек.
// Идентификатор - Строка - Идентификатор пользовательской настройки.
// Иерархия - Массив - Коллекция настроек структуры компоновки данных.
// ПользовательскиеНастройки - ПользовательскиеНастройкиКомпоновкиДанных - Коллекция пользовательских настроек.
//
Функция ПолучитьОбъектПоПользовательскомуИдентификатору(Настройки, Идентификатор, Иерархия = Неопределено, ПользовательскиеНастройки = Неопределено) Экспорт
Если Иерархия = Неопределено
И ТипЗнч(ПользовательскиеНастройки) = Тип("ПользовательскиеНастройкиКомпоновкиДанных") Тогда
НайденныеЭлементы =
ПользовательскиеНастройки.ПолучитьОсновныеНастройкиПоИдентификаторуПользовательскойНастройки(Идентификатор);
Если НайденныеЭлементы.Количество() > 0 Тогда
Возврат НайденныеЭлементы[0];
КонецЕсли;
КонецЕсли;
Если Иерархия <> Неопределено Тогда
Иерархия.Добавить(Настройки);
КонецЕсли;
ТипНастройки = ТипЗнч(Настройки);
Если ТипНастройки <> Тип("НастройкиКомпоновкиДанных") Тогда
Если Настройки.ИдентификаторПользовательскойНастройки = Идентификатор Тогда
Возврат Настройки;
ИначеЕсли ТипНастройки = Тип("НастройкиВложенногоОбъектаКомпоновкиДанных") Тогда
Возврат ПолучитьОбъектПоПользовательскомуИдентификатору(Настройки.Настройки, Идентификатор, Иерархия);
ИначеЕсли ТипНастройки = Тип("КоллекцияЭлементовСтруктурыТаблицыКомпоновкиДанных")
ИЛИ ТипНастройки = Тип("КоллекцияЭлементовСтруктурыДиаграммыКомпоновкиДанных")
ИЛИ ТипНастройки = Тип("КоллекцияЭлементовСтруктурыНастроекКомпоновкиДанных") Тогда
Для Каждого ВложенныйЭлемент Из Настройки Цикл
РезультатПоиска = ПолучитьОбъектПоПользовательскомуИдентификатору(ВложенныйЭлемент, Идентификатор, Иерархия);
Если РезультатПоиска <> Неопределено Тогда
Возврат РезультатПоиска;
КонецЕсли;
КонецЦикла;
Если Иерархия <> Неопределено Тогда
Иерархия.Удалить(Иерархия.ВГраница());
КонецЕсли;
Возврат Неопределено;
КонецЕсли;
КонецЕсли;
Если Настройки.Выбор.ИдентификаторПользовательскойНастройки = Идентификатор Тогда
Возврат Настройки.Выбор;
ИначеЕсли Настройки.УсловноеОформление.ИдентификаторПользовательскойНастройки = Идентификатор Тогда
Возврат Настройки.УсловноеОформление;
КонецЕсли;
Если ТипНастройки <> Тип("ТаблицаКомпоновкиДанных") И ТипНастройки <> Тип("ДиаграммаКомпоновкиДанных") Тогда
Если Настройки.Отбор.ИдентификаторПользовательскойНастройки = Идентификатор Тогда
Возврат Настройки.Отбор;
ИначеЕсли Настройки.Порядок.ИдентификаторПользовательскойНастройки = Идентификатор Тогда
Возврат Настройки.Порядок;
КонецЕсли;
КонецЕсли;
Если ТипНастройки = Тип("НастройкиКомпоновкиДанных") Тогда
РезультатПоиска = НайтиЭлементНастройки(Настройки.ПараметрыДанных, Идентификатор);
Если РезультатПоиска <> Неопределено Тогда
Возврат РезультатПоиска;
КонецЕсли;
КонецЕсли;
Если ТипНастройки <> Тип("ТаблицаКомпоновкиДанных") И ТипНастройки <> Тип("ДиаграммаКомпоновкиДанных") Тогда
РезультатПоиска = НайтиЭлементНастройки(Настройки.Отбор, Идентификатор);
Если РезультатПоиска <> Неопределено Тогда
Возврат РезультатПоиска;
КонецЕсли;
КонецЕсли;
РезультатПоиска = НайтиЭлементНастройки(Настройки.УсловноеОформление, Идентификатор);
Если РезультатПоиска <> Неопределено Тогда
Возврат РезультатПоиска;
КонецЕсли;
Если ТипНастройки = Тип("ТаблицаКомпоновкиДанных") Тогда
РезультатПоиска = ПолучитьОбъектПоПользовательскомуИдентификатору(Настройки.Строки, Идентификатор, Иерархия);
Если РезультатПоиска <> Неопределено Тогда
Возврат РезультатПоиска;
КонецЕсли;
РезультатПоиска = ПолучитьОбъектПоПользовательскомуИдентификатору(Настройки.Колонки, Идентификатор, Иерархия);
Если РезультатПоиска <> Неопределено Тогда
Возврат РезультатПоиска;
КонецЕсли;
ИначеЕсли ТипНастройки = Тип("ДиаграммаКомпоновкиДанных") Тогда
РезультатПоиска = ПолучитьОбъектПоПользовательскомуИдентификатору(Настройки.Точки, Идентификатор, Иерархия);
Если РезультатПоиска <> Неопределено Тогда
Возврат РезультатПоиска;
КонецЕсли;
РезультатПоиска = ПолучитьОбъектПоПользовательскомуИдентификатору(Настройки.Серии, Идентификатор, Иерархия);
Если РезультатПоиска <> Неопределено Тогда
Возврат РезультатПоиска;
КонецЕсли;
Иначе
РезультатПоиска = ПолучитьОбъектПоПользовательскомуИдентификатору(Настройки.Структура, Идентификатор, Иерархия);
Если РезультатПоиска <> Неопределено Тогда
Возврат РезультатПоиска;
КонецЕсли;
КонецЕсли;
Если Иерархия <> Неопределено Тогда
Иерархия.Удалить(Иерархия.ВГраница());
КонецЕсли;
Возврат Неопределено;
КонецФункции
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////
ПолучитьОчереднойИдентификаторОбъекта (БСП)
ОбъектМетаданныхПоИдентификатору (БСП)
ОбъектыМетаданныхПоИдентификаторам (БСП)
УдалитьПользовательскиеПрефиксыИзНомераОбъекта (БСП)
ОписаниеПредопределенногоИдентификатораОбъектаМетаданных (БСП)
Канал FastCode 1C в Телеграм! Шаблоны кода, статьи, полезные советы, курсы по 1С (8К участников)