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