Как из объекта метаданных получить ссылку
Можно ли полученное преобразовать в ссылку или это просто как проверка?
не понятен вопрос.
то есть, что нужно, понятно
а что есть?
(0)можно Стас както приводил пример
(2) есть
Значение = Метаданные.Перечисления.ВидыНоменклатуры.ЗначенияПеречисления.Найти(ИдентификаторЗначения);
Значение имеет тип ОбъектМетаданных, можно ли из этого значения получить ссылку на перечисление?
Естественно можно проверить не является ли значение Неопределено и получить
Перечисления.ВидыНоменклатуры[ИдентификаторЗначения];
но можно ли по непосредственно из метаданных?
Вопрос больше ради интереса
Получение метаданных объектов
Область применения: управляемое приложение, мобильное приложение, обычное приложение.
1. В тех случаях, когда известен тип объекта метаданного (справочник, документ, и т.п.), то получение метаданных объекта конфигурации следует выполнять с помощью метода Метаданные этого объекта (или ссылки для объектов ссылочного типа), а не путем обращения к свойству глобального контекста Метаданные , так как второй способ существенно более медленный.
2. В тех случаях, когда тип объекта метаданного заранее неизвестен, рекомендуется воспользоваться методом НайтиПоТипу , например:
// Получить полное имя объекта метаданных вида «Справочник.Номенклатура», «Документ.ПриходнаяНакладная» по переданной ссылке.
ИмяОбъектаМетаданного = Метаданные.НайтиПоТипу(ТипЗнч(Ссылка)).ПолноеИмя();
v8: Как получить ссылку на реквизит объекта метаданных?
Приветствую всех. Пишу тестовое задание, которое дали на собеседовании. Есть заминка следующего характера: имеется объект метаданных, полученный через Метаданные.НайтиПоПолномуИмени(. ). Необходимо из этого объекта получить ссылку на реквизит, имя которого известно.
То есть когда я пишу Ссылка = Перечисления.ВидыОперацийРеализацияТоваров[Стр.Значение]; (где Стр.Значение = «Товары») все работает так, как нужно, но проблема в том что на месте перечисления может быть и документ и справочник. Попытался применить следующую конструкцию: Ссылка = ОбъектМетаданных[Стр.Значение]; , но к моему великому сожалению, оно не работает)
Прошу строго не судить за, возможно, глупый вопрос, с 1С только начинаю свое знакомство.
// МассивСтруктур - массив, содержащий реквизиты, скопированные с другого документа.
//Имеет три поля: Имя, Значение и Тип реквизита вида Перечисления.ВидыОперацийРеализацияТоваров
Для каждого Стр из МассивСтруктур Цикл
Если Стр.Тип = "Строка" или Стр.Тип = "Число" или Стр.Тип = "Булево" тогда // Если тип реквизита строка или число, то просто вставляем значение
НовыйДокумент[Стр.Имя] = Стр.Значение;
Иначе
ОбъектМетаданных= Метаданные.НайтиПоПолномуИмени(Стр.Тип);
//Ссылка = Перечисления.ВидыОперацийРеализацияТоваров[Стр.Значение];
Ссылка = ОбъектМетаданных[Стр.Значение];
НовыйДокумент[Стр.Имя] = Ссылка;
КонецЕсли;
КонецЦикла;
| Возможно, вас также заинтересует |
ПустаяСсылкаОбъектаМетаданных (БСП)

Пустая ссылка объекта метаданных. Возвращает пустую ссылку объекта метаданных ссылочного типа.
// Возвращает пустую ссылку объекта метаданных ссылочного типа. // // Параметры: // ОписаниеОбъектаМетаданных - ОбъектМетаданных, // - Тип, по которому можно найти объект метаданных, // - Строка - полное имя объекта метаданных. // Возвращаемое значение: // Ссылка. // Функция ПустаяСсылкаОбъектаМетаданных(ОписаниеОбъектаМетаданных) Экспорт Если ТипЗнч(ОписаниеОбъектаМетаданных) = Тип("ОбъектМетаданных") Тогда ОбъектМетаданных = ОписаниеОбъектаМетаданных; ИначеЕсли ТипЗнч(ОписаниеОбъектаМетаданных) = Тип("Тип") Тогда ОбъектМетаданных = Метаданные.НайтиПоТипу(ОписаниеОбъектаМетаданных); Иначе ОбъектМетаданных = Метаданные.НайтиПоПолномуИмени(ОписаниеОбъектаМетаданных); КонецЕсли; Если ОбъектМетаданных = Неопределено Тогда ТекстОшибки = НСтр("ru = 'Ошибка в функции ПустаяСсылкаОбъектаМетаданных |общего модуля УправлениеДоступомСлужебный. | |Неверный параметр ОписаниеОбъектаМетаданных.'"); ВызватьИсключение ТекстОшибки; КонецЕсли; ПустаяСсылка = Неопределено; Попытка МенеджерОбъекта = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(ОбъектМетаданных.ПолноеИмя()); ПустаяСсылка = МенеджерОбъекта.ПустаяСсылка(); Исключение ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Ошибка в функции ПустаяСсылкаОбъектаМетаданных |общего модуля УправлениеДоступомСлужебный. | |Не удалось получить пустую ссылка для объекта метаданных |""%1"".'"), ОбъектМетаданных.ПолноеИмя()); ВызватьИсключение ТекстОшибки; КонецПопытки; Возврат ПустаяСсылка; КонецФункции /////////////////////////////////////////////////////////////////////////////////////////////////////// // Copyright (c) 2019, ООО 1С-Софт // Все права защищены. Эта программа и сопроводительные материалы предоставляются // в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) // Текст лицензии доступен по ссылке: // https://creativecommons.org/licenses/by/4.0/legalcode ///////////////////////////////////////////////////////////////////////////////////////////////////////
// Возвращает пустую ссылку объекта метаданных ссылочного типа. // // Параметры: // ОписаниеОбъектаМетаданных - ОбъектМетаданных, // - Тип, по которому можно найти объект метаданных, // - Строка - полное имя объекта метаданных. // Возвращаемое значение: // Ссылка. // Функция ПустаяСсылкаОбъектаМетаданных(ОписаниеОбъектаМетаданных) Экспорт Если ТипЗнч(ОписаниеОбъектаМетаданных) = Тип("ОбъектМетаданных") Тогда ОбъектМетаданных = ОписаниеОбъектаМетаданных; ИначеЕсли ТипЗнч(ОписаниеОбъектаМетаданных) = Тип("Тип") Тогда ОбъектМетаданных = Метаданные.НайтиПоТипу(ОписаниеОбъектаМетаданных); Иначе ОбъектМетаданных = Метаданные.НайтиПоПолномуИмени(ОписаниеОбъектаМетаданных); КонецЕсли; Если ОбъектМетаданных = Неопределено Тогда ТекстОшибки = НСтр("ru = 'Ошибка в функции ПустаяСсылкаОбъектаМетаданных |общего модуля УправлениеДоступомСлужебный. | |Неверный параметр ОписаниеОбъектаМетаданных.'"); ВызватьИсключение ТекстОшибки; КонецЕсли; ПустаяСсылка = Неопределено; Попытка МенеджерОбъекта = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(ОбъектМетаданных.ПолноеИмя()); ПустаяСсылка = МенеджерОбъекта.ПустаяСсылка(); Исключение ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Ошибка в функции ПустаяСсылкаОбъектаМетаданных |общего модуля УправлениеДоступомСлужебный. | |Не удалось получить пустую ссылка для объекта метаданных |""%1"".'"), ОбъектМетаданных.ПолноеИмя()); ВызватьИсключение ТекстОшибки; КонецПопытки; Возврат ПустаяСсылка; КонецФункции /////////////////////////////////////////////////////////////////////////////////////////////////////// // Copyright (c) 2019, ООО 1С-Софт // Все права защищены. Эта программа и сопроводительные материалы предоставляются // в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) // Текст лицензии доступен по ссылке: // https://creativecommons.org/licenses/by/4.0/legalcode ///////////////////////////////////////////////////////////////////////////////////////////////////////