Контекст в выборках

Контекст жизненно необходим выборке. Ведь именно контекст наполняет выборку данными.

Если мы явно не указываем (с помощью sql скрипта) какие именно данные мы хотим увидеть в выборке, то Контекст сам себе сгенерирует команду вида "select * from <наша сущность>" и будет ее использовать. Затем в выборке мы выберем какие именно поля отобразить и настроим другие UI-свойства.

Команда "select всё from" годится разве что в простых справочниках. Если нужно что-то сложнее, лучше самому прописать именно такой скрипт отбора, который требуется. При этом, в целях оптимизации, не следует отбирать не нужные поля, а также учитывайте индексы и план запроса. Тем более, если требуется присоединить несколько таблиц через join или вообще, скрипт любой другой сложности.

Чтобы прописать свой скрипт отбора списка, нужно добавить "Скрипт выборки".

И в свойствах прописать скрипт отбора.

Обобщенное табличное выражение CTE

Платформа накладывает только одно ограничение на скрипт отбора выборки. Во время выполнения такой скрипт будет оборачиваться в Обобщенное табличное выражение.

Это нужно для того чтобы при необходимости автоматически подключить пейджинг и фильтрацию с сортировкой по полям именно пользовательского представления, а не по столбцам сущности (что нам не очень интересно).

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

Если вам необходимо использовать конструкции, которые запрещено применять в табличных функциях, тогда подготовительную часть скрипта следует вынести в "Скрипт обработки выборки", а конечный select оставить в "Скрипт выборки".

Во время выполнения эти две части соединятся, итоговый select корректно обернется в CTE.

Совсем сложные случаи

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

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

Первичный ключ

В результирующем select-е необходимо обязательно отбирать первичный ключ сущности. Это второе и последнее требование к скриптам выборки.

Кеширование

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

Last updated