Back to top

Тип значения - получить полное имя ссылочного типа.

Опубликовано e-1c@mail.ru - вт, 04/25/2017 - 12:51

Что бы узнать к чему относится переменная или реквизит какого либо объекта метаданных (ссылочного типа), можно воспользоваться командой _Тип = ТипЗнч(_переменная);

В результате её выполнения мы получим <Синоним> той ссылки которой является данная переменная.

Однако синоним в большинстве случаев не совпадает с наименованием объекта метаданных, кроме того не очевидно чем именно является данный объект, справочником, перечислением, документом или еще чем.

Когда нам нужно получить всю цепочку имени объекта метаданных, нам необходимо получить его полное имя: Метаданные.НайтиПоТипу(_Тип).ПолноеИмя();

Так например для ссылки _ДОГ на элемент справочника договоров, имеем следующее:

_ДОГ = Справочники.ДоговорыКонтрагентов.НайтиПоНаименованию("###");
Сообщить(ТипЗнч(_ДОГ));  
// получаем - "Договоры с контрагентами"
Сообщить(Метаданные.НайтиПоТипу(ТипЗнч(_ДОГ)).ПолноеИмя()); 
// получаем -  "Справочник.ДоговорыКонтрагентов"

В приведенном фрагменте, обходим реквизиты объекта метаданных, получаем и выводим их полное имя, в том случае если тип составной просматриваем все типы реквизита .Типы()

Для Каждого _РеквизитМД из МД.Реквизиты Цикл
 
_ТипМД = _РеквизитМД.Тип;
_ОписаниеТипов = Новый ОписаниеТипов(_ТипМД);
_Тип = "";
// Укажем полное наименования типа метаданных присвоенных реквизиту.
Для каждого ТекТип Из _ОписаниеТипов.Типы() Цикл
	МетаданныеТипа = Метаданные.НайтиПоТипу(ТекТип);
	Если МетаданныеТипа <> Неопределено Тогда
	    ТипСтрокой = МетаданныеТипа.ПолноеИмя();
	Иначе   //примитивный тип
	    ТипСтрокой = Строка(ТекТип);
	КонецЕсли;
 
	Если _Тип = "" Тогда _Тип = ""+ТипСтрокой; Иначе _Тип = _Тип + СИмволы.ПС + ТипСтрокой; КонецЕсли;
КонецЦикла; 
Сообщить(_Тип);
 
КонецЦикла;

Здесь стоит упомянуть о таком о объекте как ОписаниеТипов - это объект, который управляет ограничением допустимых типов значений, присваиваемых объектам системы. Этот объект используют в момент создания объектов, он определяет набор допустимых типов и используется как свойства создаваемых объектов.

Подробнее о данном объекте в статье: Описание типов и квалификаторы.