Меню


Курсы СтимулСправочникПолезные материалы1С:Предприятие 8.2РазработчикамРазработка пользовательских…

1С:Предприятие 8.2 /
Разработчикам /
Разработка пользовательских интерфейсов

Оглавление

Запросы в динамических списках

Пример.

НЕПРАВИЛЬНО

ПРАВИЛЬНО

 

Область применения: управляемое приложение.

Методическая рекомендация (полезный совет)

При проектировании динамических списков в формах следует учитывать, что динамические списки предъявляют более высокие требования к скорости выполнения запросов, чем в других случаях (например, в отчетах, в процедурах обработки данных и пр.). Данные в динамических списках непосредственно отображаются пользователю , поэтому скорость вывода и обновления данных является критичной. В данной статье перечислены рекомендации, дополняющие общие сведения по оптимизации запросов (см. группу статей «Оптимизация запросов»).

1. Нужно стараться делать простые запросы для динамических списков. Для этого в первую очередь нужно оптимизировать архитектуру хранения данных, чтобы их было просто отображать в динамических списках.

Пример.

В динамическом списке документов-распоряжений на отгрузку нужно вывести состояние отгрузки. Состояние зависит от остатков регистра накопления , и статусов двух документов другого типа.

НЕПРАВИЛЬНО

Пытаться разработать запрос для динамического списка, который будет учитывать всю сложную логику расчета состояния отгрузки.

ПРАВИЛЬНО

Сделать регистр сведений «Состояния отгрузки», в котором хранить уже рассчитанное состояние отгрузки. При этом расчет можно делать или в процессе проведения документов , которые могут влиять на состояние отгрузки, или отдельным регламентным заданием.

2. Необходимо выбрать один из трех режимов работы динамического списка:

3. При разработке динамического списка следует учитывать что запрос, который фактически будет сформирован к СУБД, зависит от предопределенных настроек отборов, порядка и группировки СКД. В частности это означает, что необходимо рассмотреть индексирование полей:

При этом не следует индексировать все поля подряд «на всякий случай», так как избыточные индексы создают неоправданную нагрузку при записи данных.

См. также: Несоответствие индексов и условий запроса, Ограничения при использовании динамических списков

4. Настоятельно не рекомендуется использовать конструкции, «утяжеляющие» запрос:

См. также: Общие требования по разработке оптимальных запросов

5.1 Соединяться в запросе следует только с небольшим количеством реальных таблиц (в оптимальном варианте в динамическом списке – только одна таблица, и она назначена основной).

Не рекомендуется выполнять соединения:

См. также: Запросы, выполняющие соединение с вложенными запросами или виртуальными таблицами

5.2. Соединение с виртуальными таблицами допустимо в отдельных случаях, если запрос и архитектура данных удовлетворяют ряду условий:

5.3. При учете количества таблиц, участвующих в запросе, необходимо помнить, что обращение к полям «через точку» приводит к неявному соединению с дополнительными таблицами. Подробнее см.: Разыменование ссылочных полей составного типа в языке запросов

5.4 При работе со списком под неполными правами, в которых настроены ограничения доступа к данным (RLS) к таблицам, участвующим в запросе*, также автоматически присоединяются условия ограничения доступа к данным, которые замедляют работу списка. Именно в этом режиме работы следует проверять скорость работы динамических списков.

6. Предусмотреть оптимизацию при работе с полями составного типа

ВЫРАЗИТЬ(ДанныеДокумента.ДокументОснование КАК Документ.АктВыполненныхРабот)

См.также: Разыменование ссылочных полей составного типа в языке запросов

7. Запрос динамического списка рекомендуется менять «на лету» на более оптимальный, если это возможно.
Например, при установке быстрого отбора по полю составного типа рекомендуется изменить запрос динамического списка, выразив это поле.

8. Если применение вышеизложенных рекомендаций не возможно, либо оно не дает должного эффекта, то можно рассмотреть следующие пути оптимизации:

8.1. Отказаться от части возможностей динамического списка.

Например:

8.2. Осуществлять вывод данных не в динамический список, а в таблицу или дерево значений.

При этом появятся возможности оптимизации недоступные для динамических списков, такие как использование временных таблиц, пакетных запросов, привилегированного режима и т.д..

Данный способ применим, если выполняется одно из условий:


Подписка на новости RSS     Добавьте в закладки Google fusion     Мы в Google+    

 

Мы ВКонтакте

 

Мы на Facebook