Почему не стоит использовать пакет запросов в динамическом списке:
Динамический список - это обработка запроса в цикле. Если у динамического списка определена "Основная таблица", то при выводе строк система автоматически добавить "Первые 25" во все части пакета запроса, в которых идет выбор из основной таблицы. Для всех остальных запросов пакета данные отбираются в полном объеме.
После получения первых 25 записей, система делает запрос к следующим 25 записям, и так до тех пор, пока не заполнится экран. При каждом следующем обращении система добавляет условие типа "Выбрать Первые 25 Из ... ГДЕ Ссылка > ПоследняяСсылкаИзПредыдущейЧасти" ко всем выборкам из основной таблицы. А выборки из других таблиц выполняются в полном объеме каждый раз. Соответственно, если такие запросы тяжелые, то получим чрезмерную нагрузку на сервер и замедление работы.

Так как динамический список может быть настроен пользователем, то результат может содержать разное количество полей. Неиспользуемые поля не попадают в результирующий запрос СКД. Если поле должно всегда входить в запрос, то у соответствующего поля надо поставить галку "Использовать всегда".

Запрашиваемые таблицы и связи в запросе остаются независимо от набора полей результирующего запроса. Если мы уверены, что удаление таблицы из запроса не приведет к искажению данных, то надо на вкладке "Компоновка данных" убрать галку "Обязательная" у соответствующей таблицы. В этом случае левое соединение с таблицей в запросе будет окружено фигурными скобками "{}".

Чтобы убедиться в том, что таблица не попадает в оптимизируемый запрос, при удалении полей этой таблицы в настройках динамического списка, можно получить исполняемую схему и настройки с помощью методов:
Схема = Элементы.Список.ПолучитьИсполняемуюСхемуКомпановкиДанных();
Настройки = Элементы.Список.ПолучитьИсполняемыеНастройкиКомпановкиДанных();
Далее выполняем компоновку и получаем макет, в котором можно посмотреть итоговый запрос:
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
Макет = КомпоновщикМакета.Выполнить(Схема , Настройки);
Итоговый запрос находится в Макет.НаборыДанных.НаборДанныхДинамическогоСписка.Запрос
|