Приветствую Вас ГостьВторник, 05.08.2025, 08:33

Каталог статей


Оптимизация запроса динамического списка. Получение оптимизированного запроса.

Почему не стоит использовать пакет запросов в динамическом списке:

Динамический список - это обработка запроса в цикле. Если у динамического списка определена "Основная таблица", то при выводе строк система автоматически добавить "Первые 25" во все части пакета запроса, в которых идет выбор из основной таблицы. Для всех остальных запросов пакета данные отбираются в полном объеме.

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

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

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

Чтобы убедиться в том, что таблица не попадает в оптимизируемый запрос, при удалении полей этой таблицы в настройках динамического списка, можно получить исполняемую схему и настройки с помощью методов:

Схема = Элементы.Список.ПолучитьИсполняемуюСхемуКомпановкиДанных();

Настройки = Элементы.Список.ПолучитьИсполняемыеНастройкиКомпановкиДанных();

Далее выполняем компоновку и получаем макет, в котором  можно посмотреть итоговый запрос:

КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;

Макет = КомпоновщикМакета.Выполнить(Схема , Настройки);

Итоговый запрос находится в Макет.НаборыДанных.НаборДанныхДинамическогоСписка.Запрос

 

 

Категория: Формы | Добавил: leshic (24.08.2023)
Просмотров: 198 | Рейтинг: 0.0/0
Всего комментариев: 0
Вход на сайт
Поиск
Категории раздела
СКД [51]
Регистры [7]
Формы [48]
Администрирование [50]
Запросы [11]
Объекты конфигурации и типы данных [20]
Взаимодействие с другими базами, приложениями и источниками данных [16]
Программирование [49]
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0