Есть метаданные документа
Мд = СсылкаНаОбъект.метаданные
Получаю его реквизиты
Реквизиты = мд.Реквизиты;
Потом путем обхода перебираю их
Для Каждого Реквизит из Реквизиты цикл
Как уузнать тип реквизита?
У него есть свойство ТипДанных что ли
Но когда пишу Реквизит.ТипДанных.ВсеТипы()
Он вывыдает тип "Банк" а в справочнике указан СправочникиСсылка. Классификаторбанков.
Мне так же бы хотелось видеть.
Мд = СсылкаНаОбъект.метаданные
Получаю его реквизиты
Реквизиты = мд.Реквизиты;
Потом путем обхода перебираю их
Для Каждого Реквизит из Реквизиты цикл
Как уузнать тип реквизита?
У него есть свойство ТипДанных что ли
Но когда пишу Реквизит.ТипДанных.ВсеТипы()
Он вывыдает тип "Банк" а в справочнике указан СправочникиСсылка. Классификаторбанков.
Мне так же бы хотелось видеть.
По теме из базы знаний
- (V 7.7) Справка по работе с метаданными (с примерами)
- Как читать чужой код? Часть 1. Общие вопросы. Доработка чужого кода. Code review
- Как мы подружили "1С:Аналитику" и "Финансист". Практический опыт
- Зачем и как читать чужой код? Какой результат ожидаем получить? Основные подходы
- (Не) Строгая типизация 1С
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Вот такой Изврат пришлось сделать)
Просто например тип у справочника Классификатор Банков "Банк" а мне необходимо было вывести именно КлассификаторБанков
Просто например тип у справочника Классификатор Банков "Банк" а мне необходимо было вывести именно КлассификаторБанков
ТабДок.Очистить();
Макет = РеквизитФормыВЗначение("Объект").ПолучитьМакет("Макет");
//Макет = Документы.РеализацияПодарочныхСертификатов.ПолучитьМакет("");
Реквизиты = Объект.Справочник.Метаданные().Реквизиты;
ТабЧасти = Объект.Справочник.Метаданные().ТабличныеЧасти;
Область = Макет.ПолучитьОбласть("Область3");
ТабДок.Вывести(Область);
Область = Макет.ПолучитьОбласть("Область1");
Для каждого Реквизит из Реквизиты Цикл
Тип = "";
Область.Параметры.Реквезит = Реквизит.Синоним;
ТипыРеквизита = Реквизит.Тип.Типы();
Для каждого ТипР из ТипыРеквизита Цикл
Если Метаданные.НайтиПоТипу(ТипР)<>Неопределено Тогда
Тип = Тип + Строка(Метаданные.НайтиПоТипу(ТипР))+Символы.ПС;
Иначе
Если ТипР = Тип("Число") Тогда
Р = Реквизит.Тип.КвалификаторыЧисла.Разрядность;
Д = Реквизит.Тип.КвалификаторыЧисла.РазрядностьДробнойЧасти;
Тип = Тип + ТипР+"("+Р+","+Д+")"+Символы.ПС;
ИначеЕсли ТипР = Тип("Строка") Тогда
Длина = Реквизит.Тип.КвалификаторыСтроки.Длина;
Тип = Тип + ТипР+"("+Длина+")"+Символы.ПС;
Иначе
Тип = Тип + ТипР+Символы.ПС;
КонецЕсли;
КонецЕсли;
КонецЦикла;
Область.Параметры.Тип = Тип;
ТабДок.Вывести(Область);
КонецЦикла;
Показать
(6)
Если задача просто узнать, без красивого отчета, то
Объект = Справочники.Контрагенты.НайтиПоКоду(1);
МетаданныеСправочника = Объект.Метаданные();
КоллекцияРеквизитов = МетаданныеСправочника.Реквизиты;
Для каждого Реквизит из КоллекцияРеквизитов Цикл
ИмяТипаРеквизита = Реквизит.Тип;
Сообщить("Имя реквизита "+Реквизит.Имя + ". Имя типа "+?(Метаданные.НайтиПоТипу(Реквизит.Тип.Типы()[0])<>Неопределено,Метаданные.НайтиПоТипу(Реквизит.Тип.Типы()[0]).ПолноеИмя(),Реквизит.Тип));
КонецЦикла;
Реквизит.Тип.Типы();
Для каждого ТипР из ТипыРеквизита Цикл
Если Метаданные.НайтиПоТипу(ТипР)
Для каждого ТипР из ТипыРеквизита Цикл
Если Метаданные.НайтиПоТипу(ТипР)
Если задача просто узнать, без красивого отчета, то
Объект = Справочники.Контрагенты.НайтиПоКоду(1);
МетаданныеСправочника = Объект.Метаданные();
КоллекцияРеквизитов = МетаданныеСправочника.Реквизиты;
Для каждого Реквизит из КоллекцияРеквизитов Цикл
ИмяТипаРеквизита = Реквизит.Тип;
Сообщить("Имя реквизита "+Реквизит.Имя + ". Имя типа "+?(Метаданные.НайтиПоТипу(Реквизит.Тип.Типы()[0])<>Неопределено,Метаданные.НайтиПоТипу(Реквизит.Тип.Типы()[0]).ПолноеИмя(),Реквизит.Тип));
КонецЦикла;
Тоже с этим столкнулся, собрал такую конструкцию, чтобы получить тип реквизита, если тип - ссылка:
Метаданные.НайтиПоТипу(Метаданные.Документы[ИмяДокумента].Реквизиты[Реквизит.Имя].Тип.Типы()[0]).ПолноеИмя()
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот