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