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

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

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

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

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

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

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

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

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

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

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

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

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

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


// Возвращает строковое представление типа. 
// Для ссылочных типов возвращает в формате "СправочникСсылка.ИмяОбъекта" или "ДокументСсылка.ИмяОбъекта".
// Для остальных типов приводит тип к строке, например "Число".
//
// Возвращаемое значение:
//  Строка.
//
Функция СтроковоеПредставлениеТипа(Тип) Экспорт
Показать
Никулин Леонид; cosmo2004; rmarty; user679689_redbull4561; pivo_san; native-api; +6 Ответить
Оставьте свое сообщение
Вакансии
1С-Программист (интегратор Битрикс24)
Санкт-Петербург
зарплата от 150 000 руб. до 250 000 руб.
Полный день

Разработчик 1С
Москва
зарплата от 100 000 руб.
Временный (на проект)

Разработчик 1С
Москва
зарплата от 150 000 руб.
Полный день

Программист
Санкт-Петербург
зарплата от 180 000 руб. до 240 000 руб.
Полный день

Разработчик 1С
Москва
зарплата от 150 000 руб. до 250 000 руб.
Полный день