Есть Тип (например, ДокументСсылка.ЗаказПокупателя), нужно получить из него полное имя объекта метаданных (Документ.ЗаказПокупателя), чтобы подставить в динамически формируемый текст запроса.
// Функция возвращает значение реквизита произвольного объекта ссылочного типа
// Предназначена для получения реквизитов недоступных пользователю объектов
Функция ПолучитьРеквизитОбъекта(Ссылка, ИмяРеквизита) Экспорт
ОбъектМетаданные = Ссылка.Метаданные();
ИмяТаблицы = ОбъектМетаданные.ПолноеИмя();
Запрос = Новый Запрос;
Запрос.Текст = "
|ВЫБРАТЬ РАЗРЕШЕННЫЕ " + ИмяРеквизита + " КАК " + ИмяРеквизита + " ИЗ " + ИмяТаблицы + "
|ГДЕ Ссылка = &Ссылка";
Запрос.УстановитьПараметр("Ссылка", Ссылка);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
Возврат Выборка[ИмяРеквизита];
Иначе
РеквизитМетаданные = ОбъектМетаданные.Реквизиты.Найти(ИмяРеквизита);
Возврат РеквизитМетаданные.Тип.ПривестиЗначение();
КонецЕсли;
Сделал так:
Для Каждого ТипОбъекта Из Метаданные.РегистрыСведений["ОбъектыОбмена"].Измерения["Объект"].Тип.Типы() Цикл
ПустаяСсылка = Новый (ТипОбъекта);
Сообщить(ПустаяСсылка.Метаданные().ПолноеИмя());
КонецЦикла;
(0) В запросе делаем метку типа %ТипДокумента%. По типу документа формируем имя для запроса:
МетаданныеДокумента = Метаданные.НайтиПоТипу(ТипДокумента);
ИмяВзапрос = "Документ." + МетаданныеДокумента.Имя;
Дальше делаем подмену в тексте запроса.
Основная теорема систематики: Новые системы плодят новые проблемы.