как определить тип реквизита метаданных

1. Clancy08 30.06.15 17:32 Сейчас в теме
Есть метаданные документа
Мд = СсылкаНаОбъект.метаданные
Получаю его реквизиты
Реквизиты = мд.Реквизиты;
Потом путем обхода перебираю их
Для Каждого Реквизит из Реквизиты цикл

Как уузнать тип реквизита?
У него есть свойство ТипДанных что ли
Но когда пишу Реквизит.ТипДанных.ВсеТипы()
Он вывыдает тип "Банк" а в справочнике указан СправочникиСсылка. Классификаторбанков.
Мне так же бы хотелось видеть.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Скиминок 30.06.15 17:34 Сейчас в теме
3. Clancy08 30.06.15 17:38 Сейчас в теме
ТипЗначение у реквизита с типом "Тип" выдаст "тип"; если напишу ТипЗнч(реквизит) выдаст объектМетаданых
4. Clancy08 30.06.15 18:11 Сейчас в теме
Задача вообщем такая
Есть ссылка,
надо вывести типы всех реквизитов справочника из этой ссылки.
5. deniseek77 86 30.06.15 18:52 Сейчас в теме
(4) Clancy08,
ОрганизацияСсылка=Объект.Реквизит1;
	
	Для каждого Реквизит из ОрганизацияСсылка.Метаданные().Реквизиты цикл
		
		Строка=Реквизит.ПолноеИмя();
		
	КонецЦикла;	
Может такое подойдет?


А, нет, не то
Yan_Malyakov; +1 Ответить
6. Clancy08 30.06.15 19:25 Сейчас в теме
Вот такой Изврат пришлось сделать)
Просто например тип у справочника Классификатор Банков "Банк" а мне необходимо было вывести именно КлассификаторБанков
  ТабДок.Очистить();
	Макет = РеквизитФормыВЗначение("Объект").ПолучитьМакет("Макет");
	//Макет = Документы.РеализацияПодарочныхСертификатов.ПолучитьМакет("");
	Реквизиты = Объект.Справочник.Метаданные().Реквизиты;
	ТабЧасти  = Объект.Справочник.Метаданные().ТабличныеЧасти;
	Область = Макет.ПолучитьОбласть("Область3");
	ТабДок.Вывести(Область);
	Область = Макет.ПолучитьОбласть("Область1");
	Для каждого Реквизит из Реквизиты Цикл
		Тип = "";
		Область.Параметры.Реквезит = Реквизит.Синоним; 
		ТипыРеквизита = Реквизит.Тип.Типы();
		Для каждого ТипР из ТипыРеквизита Цикл
			Если Метаданные.НайтиПоТипу(ТипР)<>Неопределено Тогда 
				Тип = Тип + Строка(Метаданные.НайтиПоТипу(ТипР))+Символы.ПС;
			Иначе
				Если ТипР = Тип("Число") Тогда
					Р = Реквизит.Тип.КвалификаторыЧисла.Разрядность;
					Д = Реквизит.Тип.КвалификаторыЧисла.РазрядностьДробнойЧасти;
					Тип = Тип + ТипР+"("+Р+","+Д+")"+Символы.ПС;
				ИначеЕсли ТипР = Тип("Строка") Тогда
					Длина = Реквизит.Тип.КвалификаторыСтроки.Длина;
					Тип = Тип + ТипР+"("+Длина+")"+Символы.ПС;
				Иначе
					Тип = Тип + ТипР+Символы.ПС;
				КонецЕсли;
			КонецЕсли;
		КонецЦикла;
		Область.Параметры.Тип = Тип;
		ТабДок.Вывести(Область);
	КонецЦикла;
	
Показать
catmintking; +1 Ответить
7. TonyBreza 19.07.18 08:03 Сейчас в теме
(6)
Реквизит.Тип.Типы();
Для каждого ТипР из ТипыРеквизита Цикл
Если Метаданные.НайтиПоТипу(ТипР)


Если задача просто узнать, без красивого отчета, то
Объект = Справочники.Контрагенты.НайтиПоКоду(1);
МетаданныеСправочника = Объект.Метаданные();
КоллекцияРеквизитов = МетаданныеСправочника.Реквизиты;
Для каждого Реквизит из КоллекцияРеквизитов Цикл
ИмяТипаРеквизита = Реквизит.Тип;
Сообщить("Имя реквизита "+Реквизит.Имя + ". Имя типа "+?(Метаданные.НайтиПоТипу(Реквизит.Тип.Типы()[0])<>Неопределено,Метаданные.НайтиПоТипу(Реквизит.Тип.Типы()[0]).ПолноеИмя(),Реквизит.Тип));
КонецЦикла;
user1674465; +1 Ответить
8. catmintking 07.06.19 17:13 Сейчас в теме
Тип-И-Тип. Была такая жвачка.
Sergafan10; igormiro; +2 Ответить
9. user1674465 05.10.21 18:11 Сейчас в теме
Тоже с этим столкнулся, собрал такую конструкцию, чтобы получить тип реквизита, если тип - ссылка:
Метаданные.НайтиПоТипу(Метаданные.Документы[ИмяДокумента].Реквизиты[Реквизит.Имя].Тип.Типы()[0]).ПолноеИмя()
GIZmo; 3gf; user1032254; MaiorovYury; user622033_lopatin_roman; +5 Ответить
10. user622033_lopatin_roman 21.12.21 11:29 Сейчас в теме
Не нашёл среди предложений:
РеквизитМетаданных.Тип.СодержитТип(Тип("СправочникСсылка.Организации"))

Не совсем то, что нужно автору, но в ряде схожих задач - очень удобно.
3gf; intrq; +2 Ответить
11. user1635644 21.01.22 13:26 Сейчас в теме
ТипЗнч(Реквизит.Тип.ПривестиЗначение()) = Тип("Дата")
gtrr34; Batman; tolyan_ekb; anton_k; beard1; Noveng; Nerich; +7 Ответить
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот