Azimut Framework
  • О платформе Azimut
  • Концепция
    • Суть разработки на Azimut
    • Компиляция метаданных
    • Наследование метаданных
    • Подсистемы
    • Проекты и релизы
    • Расширяемость
  • Начало работы
    • Системные требования
    • Установка
  • Документация
    • Основные объекты
      • Сущность
      • Контекст
        • Контекст в выборках
        • Контекст в представлениях
      • Представление
      • Выборка
        • Фильтры и параметры отбора
      • Web формы
    • Биндинги параметров Sql скрипта
      • Биндинг Идентификатор документа
      • Биндинг Поле представления
      • Биндинг Строка
    • Автозадачи по расписанию
      • Sql to WebRequest
      • Обработка отчетов
      • Пакетное сканирование документов
    • Шаблон ХП
    • Главное меню
    • Вопросы-ответы
      • Как удалить пункт меню
      • Как удалить объект конфигурации
      • Как в выборку добавить параметр отбора
      • Как редактировать выборку прямо в гриде
    • Видео
    • Устранение неисправностей
  • API
    • Возврат ошибок
  • Расширение Платформы
    • Разработка дополнений
      • Расширение API
      • Подключение любой dll
Powered by GitBook
On this page
  • Обобщенное табличное выражение CTE
  • Совсем сложные случаи
  • Первичный ключ
  • Кеширование

Was this helpful?

  1. Документация
  2. Основные объекты
  3. Контекст

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

PreviousКонтекстNextКонтекст в представлениях

Last updated 5 years ago

Was this helpful?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Кеширование

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

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

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

Обобщенное табличное выражение
Автоматических задач
выборке