&ИзменениеИКонтроль("ИдентификаторОбъектаМетаданных")
Функция АлгДОО_ИдентификаторОбъектаМетаданных(ОписаниеОбъектаМетаданных, ВызыватьИсключение)
ТипОписанияОбъектаМетаданных = ТипЗнч(ОписаниеОбъектаМетаданных);
Если ТипОписанияОбъектаМетаданных = Тип("Тип") Тогда
ОбъектМетаданных = Метаданные.НайтиПоТипу(ОписаниеОбъектаМетаданных);
Если ОбъектМетаданных <> Неопределено Тогда
ПолноеИмяОбъектаМетаданных = ОбъектМетаданных.ПолноеИмя();
ИначеЕсли Не ВызыватьИсключение Тогда
Возврат Null;
Иначе
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Некорректное значение параметра %1 в функции %2.
|Указан несуществующий объект метаданных: ""%3"".'"),
"ОписаниеОбъектаМетаданных",
"ОбщегоНазначения.ИдентификаторОбъектаМетаданных",
ОписаниеОбъектаМетаданных);
ВызватьИсключение ТекстОшибки;
КонецЕсли;
ИначеЕсли ТипОписанияОбъектаМетаданных = Тип("Строка") Тогда
ПолноеИмяОбъектаМетаданных = ОписаниеОбъектаМетаданных;
ИначеЕсли ТипОписанияОбъектаМетаданных = Тип("ОбъектМетаданных") Тогда
ПолноеИмяОбъектаМетаданных = ОписаниеОбъектаМетаданных.ПолноеИмя();
#Вставка
// Понимаю, что использовать Строку - спорное решение, но подобрать Тип не смог. Кто сможет - напишите в комментах. Может просто туплю.
ИначеЕсли Строка(ТипОписанияОбъектаМетаданных) = "Идентификатор объекта метаданных расширения" Тогда
ПолноеИмяОбъектаМетаданных = ОписаниеОбъектаМетаданных.ПолноеИмя;
#КонецВставки
ИначеЕсли Не ВызыватьИсключение Тогда
Возврат Null;
Иначе
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Некорректный тип параметра %1 в функции %2:
|""%3"".'"),
"ОписаниеОбъектаМетаданных",
"ОбщегоНазначения.ИдентификаторОбъектаМетаданных",
ТипОписанияОбъектаМетаданных);
ВызватьИсключение ТекстОшибки;
КонецЕсли;
Массив = Новый Массив;
Массив.Добавить(ПолноеИмяОбъектаМетаданных);
Идентификаторы = ИдентификаторыОбъектовМетаданных(Массив, ВызыватьИсключение, Истина);
Идентификатор = Идентификаторы.Получить(ПолноеИмяОбъектаМетаданных);
Если Идентификатор = Неопределено Тогда
Возврат Null;
КонецЕсли;
Возврат Идентификатор;
КонецФункции