Как получить тип реквизита табличной части если это ссылка

1. VKuser241523867 17.04.24 19:32 Сейчас в теме
Как получить тип реквизита табличной части если это ссылка?

для обычных реквизитов я использую
ПолноеИмя = Метаданные.НайтиПоТипу(Метаданные.Документы[ИмяДокумента].Реквизиты[Реквизит.Имя].Тип.Типы()[0]).ПолноеИмя();


однако для табличной части написанные по аналогии методы не срабатывают. отладить трудно, потому что это всё лежит в "попытка", так как мы так же бегаем по реквизитам которые не являются документом


    Для Каждого ТабличнаяЧасть ИЗ ТабличныеЧасти Цикл
		Для Каждого РеквизитТЧ Из ТабличнаяЧасть.Реквизиты Цикл
			Для Каждого СтрокаТЧ ИЗ ВыбранныйДокумент[ТабличнаяЧасть.Имя] Цикл
				ТипРеквизита = "";
				ИмяРеквизита = "";
				ПолноеИмя = "";
				
				Попытка
					//ПолноеИмя = Метаданные.НайтиПоТипу(Метаданные.Документы[ИмяДокумента].Реквизиты[РеквизитТЧ.Имя][0].Тип.Типы()[0]).ПолноеИмя();
					//Сообщить(ПолноеИмя);
					
					//ПолноеИмя = Метаданные.НайтиПоТипу(Метаданные.Документы[ИмяДокумента].Реквизиты[РеквизитТЧ.Имя][0].Тип.Типы()).ПолноеИмя();
					//Сообщить(ПолноеИмя);
					
					//ПолноеИмя = Метаданные.НайтиПоТипу(Метаданные.Документы[ИмяДокумента].Реквизиты[СтрокаТЧ[РеквизитТЧ.Имя]].Тип.Типы()[0]).ПолноеИмя();
					//Сообщить(ПолноеИмя);
					
					//ПолноеИмя = Метаданные.НайтиПоТипу(ТипЗнч(СтрокаТЧ[РеквизитТЧ.Имя])).ПолноеИмя();
					//Сообщить(ПолноеИмя);
					
					ТипРеквизита = Лев(ПолноеИмя,5);
					МасПодстрок = РазложитьСтрокуВМассивПодстрок(ПолноеИмя,".");
					ИмяРеквизита = МасПодстрок[МасПодстрок.Количество()-1];
				Исключение
					ТипРеквизита = "Прост";
					ИмяРеквизита = РеквизитТЧ.Имя;
				КонецПопытки;
Показать
По теме из базы знаний
Найденные решения
3. Vadim-SH 18.04.24 07:24 Сейчас в теме
(2)
ПолноеИмя = Метаданные.НайтиПоТипу(Метаданные.Документы[ИмяДокумента].Реквизиты[СтрокаТЧ[РеквизитТЧ.Имя]].Тип.Типы()[0]).ПолноеИмя();


Я бы избавился от операторов "Попытка".
Примерно так:

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

Показать
VKuser241523867; +1 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. VKuser241523867 17.04.24 19:49 Сейчас в теме
это что то близкое
ПолноеИмя = Метаданные.НайтиПоТипу(Метаданные.Документы[ИмяДокумента].Реквизиты[СтрокаТЧ[РеквизитТЧ.Имя]].Тип.Типы()[0]).ПолноеИмя();


но оно возвращает только перечисления
Прикрепленные файлы:
3. Vadim-SH 18.04.24 07:24 Сейчас в теме
(2)
ПолноеИмя = Метаданные.НайтиПоТипу(Метаданные.Документы[ИмяДокумента].Реквизиты[СтрокаТЧ[РеквизитТЧ.Имя]].Тип.Типы()[0]).ПолноеИмя();


Я бы избавился от операторов "Попытка".
Примерно так:

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

Показать
VKuser241523867; +1 Ответить
Оставьте свое сообщение

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