Перейти к содержимому

Как из объекта метаданных получить ссылку

  • автор:

Как из объекта метаданных получить ссылку

Можно ли полученное преобразовать в ссылку или это просто как проверка?

не понятен вопрос.
то есть, что нужно, понятно
а что есть?
(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 ///////////////////////////////////////////////////////////////////////////////////////////////////////

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *