Получить Полное имя типа в строку

1. olo_lo 29.02.12 14:30 Сейчас в теме
Привет народ. Нужно для документа получить типы его реквизитов и вывести их в текстовый документ.
Как я хочу это делать.

Док = СтрДок.Ссылка.ПолучитьОбъект();
Для каждого Реквизит из Док.Метаданные().Реквизиты Цикл

т.е. Сделал выборку документов. Полчил нужный документ. Теперь для каждого его реквизита хочу сделать проверку условий типа :

Если Документы.ТипВсеСсылки().СодержитТип(Тип) Тогда
Возврат "ДокументСсылка." + Тип.Имя;

И т.д. И теперь начинаются проблемы. в Методе СодержитТип() параметр должен быть типа Тип, тогда по логике туда надо передавать ТипЗнч(Реквизит). Но у него значение - Описание Типов и в итоге выдается всегда значение неопределено.
Если передавать Реквизит.Тип, то у него значение нормальное, такое как надо, но тип у него - Описание Типов в итоге тоже не подходит. Как быть ? %))
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Uncore 1284 29.02.12 17:06 Сейчас в теме
(1) писал как-то для подобного случая такую функцию:
// возвращает подробное описание типа объекта
Функция ОпределитьТипОбъекта(Объект)
	Строка = "" + Объект.Тип;
	Если Строка = "Строка" Тогда
		Строка = Строка + ", " + ?(Объект.Тип.КвалификаторыСтроки.Длина = 0, "Неограниченная", Объект.Тип.КвалификаторыСтроки.Длина);	
	ИначеЕсли Строка = "Число" Тогда
		Строка = Строка + ", " + Объект.Тип.КвалификаторыЧисла.Разрядность + "." +
                                         Объект.Тип.КвалификаторыЧисла.РазрядностьДробнойЧасти;
	ИначеЕсли Не ЗначениеЗаполнено(Строка) Тогда
		Строка = "";
	КонецЕсли;	
	
	Возврат Строка;
КонецФункции
Показать

Объект - Это в вашем случае Реквизит
3. kurator1C 11.04.19 04:28 Сейчас в теме
(2)

Попытка
    ТипСтрокой = Значение.Метаданные().ПолноеИмя();
Исключение
    ТипСтрокой = "" + ТипЗНЧ(Значение);
КонецПопытки;
shalupov61; alean; Wilka; TuneSoft; begemot; DiegoLidabo; fuser; igee12; sannissan; +9 Ответить
4. sergpn 11.03.22 11:39 Сейчас в теме
Сделал так

ТипыСвойства = Источник.ТипЗначения.Типы();
МассивТиповСтроками = "";

Для Каждого ТипСвойства Из ТипыСвойства Цикл
	Попытка
		Значение = Новый(ТипСвойства);
		Попытка
			ТипСтрокой = Значение.Метаданные().ПолноеИмя();
		Исключение
			ТипСтрокой = "" + ТипЗНЧ(Значение);
		КонецПопытки;
	Исключение
		ТипСтрокой = "" + ТипСвойства;
	КонецПопытки; 
	ТипСтрокой = СтрЗаменить(ТипСтрокой, "Справочник.", "СправочникСсылка.");
	ТипСтрокой = СтрЗаменить(ТипСтрокой, "Документ.", "ДокументСсылка.");
	МассивТиповСтроками = МассивТиповСтроками + ТипСтрокой + ";";
КонецЦикла;

Значение = МассивТиповСтроками;
Показать
GeterX; zastep; +2 Ответить
5. SlavaKron 11.03.22 16:14 Сейчас в теме
(4) Можно без попытки:
ТипыСвойства = Источник.ТипЗначения.Типы();
МассивТиповСтроками = Новый Массив;

Для Каждого ТипСвойства Из ТипыСвойства Цикл
	
	ОбъектМетаданных = Метаданные.НайтиПоТипу(ТипСвойства);
	Если ОбъектМетаданных = Неопределено Тогда
		ТипСтрокой = Строка(ТипСвойства);
	Иначе
		ТипСтрокой = СтрЗаменить(ОбъектМетаданных.ПолноеИмя(), ".", "Ссылка.");
	КонецЕсли;
	
	МассивТиповСтроками.Добавить(ТипСтрокой);
	
КонецЦикла;

Значение = СтрСоединить(МассивТиповСтроками, ";");
Показать
user2062737; chemezov; almierm; lone_mayson; GeterX; zastep; sergpn; +7 Ответить
6. nvs_tomsk 27.07.22 05:47 Сейчас в теме
XMLТип(ТипЗнч(Объект)).ИмяТипа
odinsmot; Dream_kz; sashapere; user1835472; bizard; zastep; +6 Ответить
7. zastep 27.07.22 13:46 Сейчас в теме
Функция ТипВСтроку(тОбъект)
	
	ТипСтрокой = XMLТип(ТипЗнч(тОбъект)).ИмяТипа;
	ТипСтрокой = СтрЗаменить(ТипСтрокой, "decimal", "Число"); 
	ТипСтрокой = СтрЗаменить(ТипСтрокой, "string", "Строка"); 
	ТипСтрокой = СтрЗаменить(ТипСтрокой, "CatalogRef", "СправочникСсылка"); 
	ТипСтрокой = СтрЗаменить(ТипСтрокой, "DocumentRef", "ДокументСсылка"); 
	
	Возврат ТипСтрокой;
   
КонецФункции
Показать
odinsmot; indefinitumX; almierm; mr_sav; user1835472; +5 Ответить
8. Serg2000mr 696 21.09.23 18:37 Сейчас в теме
&НаСервере
Функция СтроковоеПредставлениеТипа(ТипИлиОписаниеТипа) 
	
	Если ТипЗнч(ТипИлиОписаниеТипа) = Тип("Тип") Тогда
		МассивТипов = Новый Массив;
		МассивТипов.Добавить(ТипИлиОписаниеТипа);
	Иначе
		МассивТипов = ТипИлиОписаниеТипа.Типы();
	КонецЕсли;
	
	МассивТиповСтроками = Новый Массив;
	
	Для Каждого выбТип Из МассивТипов Цикл
		
		ОбъектМетаданных = Метаданные.НайтиПоТипу(выбТип);
		Если ОбъектМетаданных = Неопределено Тогда
			ТипСтрокой = Строка(выбТип);
		Иначе
			ТипСтрокой = СтрЗаменить(ОбъектМетаданных.ПолноеИмя(), ".", "Ссылка.");
		КонецЕсли;
		
		МассивТиповСтроками.Добавить(ТипСтрокой);
		
	КонецЦикла;
	
	Значение = СтрСоединить(МассивТиповСтроками, ";");
	
	Возврат Значение;
	
КонецФункции
Показать
user965861; rbsoft; +2 Ответить
9. afk 91 26.09.23 10:06 Сейчас в теме
Для истории: БСП, модуль ОбщегоНазначения

// Возвращает полное имя объекта метаданных по переданному значению ссылки.
// Примеры:
//  "Справочник.Номенклатура";
//  "Документ.ПриходнаяНакладная".
//
// Параметры:
//  Ссылка - ЛюбаяСсылка - объект, для которого необходимо получить имя таблицы ИБ.
// 
// Возвращаемое значение:
//  Строка - полное имя объекта метаданных для указанного объекта.
//
Функция ИмяТаблицыПоСсылке(Ссылка) Экспорт
Показать


// Возвращает строковое представление типа. 
// Для ссылочных типов возвращает в формате "СправочникСсылка.ИмяОбъекта" или "ДокументСсылка.ИмяОбъекта".
// Для остальных типов приводит тип к строке, например "Число".
//
// Возвращаемое значение:
//  Строка.
//
Функция СтроковоеПредставлениеТипа(Тип) Экспорт
Показать
Teplotrassamen; janit; kholkin; Sheogorath; AdmKmpt; Serg2000mr; 7OH; Никулин Леонид; cosmo2004; rmarty; user679689_redbull4561; pivo_san; native-api; +13 Ответить
10. EvgeniuXP 19.03.24 15:19 Сейчас в теме
(9) СтроковоеПредставлениеТипа вернет "Регистр сведений набор записей: Сведения об ЭЛН", а нужно:

"РегистрСведенийНаборЗаписей.СведенияОбЭЛН".
atomskxs; +1 Ответить
Оставьте свое сообщение

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