Построитель запросов#
Построитель запросов предназначен для создания и сохранения запросов к данным.
С его помощью можно сформировать запрос по классам и атрибутам системы без ручного написания SQL, задать SQL вручную или выполнить запрос к другой базе данных через настроенное подключение.
Сохраненный построитель можно выполнить для просмотра результата или использовать как источник данных в другом построителе.
Для работы с построителями откройте выборку Btk_QurModel. В ней отображаются созданные построители, их код, наименование, тип, описание и признак использования в качестве источника данных.
Создание построителя#
Чтобы создать построитель:
Откройте выборку
Btk_QurModel.Выполните операцию Создать запись.
Укажите Наименование и Код.
Выберите Тип построителя.
При необходимости установите:
Запрашивать параметры фильтрации при построении отчета — запрашивать значения параметров фильтра перед выполнением запроса;
Использовать как источник данных — разрешить использовать результат построителя в других построителях.
Настройте запрос на вкладках, доступных для выбранного типа.
Сохраните запись.
Состав вкладок карточки зависит от выбранного типа построителя.
Типы построителей#
Тип |
Назначение |
|---|---|
Интерактивное построение запроса |
Формирование запроса по классам системы или другим построителям с помощью настроек интерфейса |
Ручной ввод запроса |
Использование SQL-запроса, заданного вручную |
Запрос к внешней БД |
Выполнение SQL-запроса через настроенное подключение к другой базе данных |
Интерактивное построение запроса#
Тип Интерактивное построение запроса позволяет сформировать SQL на основании настроек интерфейса.
Для построителя доступны вкладки Таблицы и атрибуты, Связи, Фильтрация, Сортировка, Группировка и агрегация, Стили визуализации, Текст запроса и Описание.
Таблицы и атрибуты#
На вкладке Таблицы и атрибуты выбираются данные, которые должны использоваться в запросе и возвращаться в его результате.
Форма состоит из трех областей:
слева — классы и другие построители, доступные как источники данных;
по центру — Доступные поля выбранного источника;
справа — Колонки отчета, которые будут возвращаться запросом.
В левой части доступны группы ИСТОЧНИКИ ДАННЫХ и КЛАССЫ.
Группа КЛАССЫ содержит классы системы.
Группа ИСТОЧНИКИ ДАННЫХ содержит построители, для которых установлен признак Использовать как источник данных.
После выбора класса или источника его поля отображаются в области Доступные поля. Ссылочные атрибуты можно раскрывать и переходить по структуре связанных объектов.
Чтобы добавить данные в результат запроса, используйте операции:
Добавить — добавить выбранное поле;
Добавить со всеми колонками — добавить выбранный объект вместе с его колонками.
Добавленные поля отображаются в области Колонки отчета.
Для результирующей колонки отображаются, в частности:
Наименование в отчете;
Имя;
Путь;
Группа;
Тип редактора.
Состав Колонок отчета определяет поля, возвращаемые запросом.
Вычисляемые колонки#
Для вычисляемой результирующей колонки значение задается формулой.
При настройке такой колонки указываются ее свойства и выражение в поле Формула. В выражении можно обращаться к другим колонкам по их именам.
Например:
&sArticle + &sMnemoCode
Синтаксис и доступные операции определяются механизмом формул.
Связи#
На вкладке Связи задается соответствие между атрибутами данных, используемых в запросе.
Для связи указываются:
первая таблица и ее атрибут;
вторая таблица и ее атрибут;
тип соединения.
В интерфейсе также отображаются системные имена выбранных атрибутов.
Для выбора атрибута можно открыть форму Доступные поля. Признак Выводить только ссылочные ограничивает список ссылочными полями.
Настроенные связи учитываются при формировании SQL для объединения данных из нескольких источников.
Фильтрация#
На вкладке Фильтрация задаются условия отбора данных.
В левой части формы отображаются доступные поля, в правой — настроенные условия и их группы.
Для условия задаются поле, вид сравнения и значение фильтра. Условие можно включать и отключать.
Условие также можно использовать как параметр запроса. Для этого установите признак Параметр и задайте Имя параметра.
Если в карточке построителя установлен признак Запрашивать параметры фильтрации при построении отчета, перед выполнением запроса система открывает форму ввода значений настроенных параметров.
При программном выполнении необходимые параметры должны быть переданы вызывающим кодом либо иметь значения по умолчанию.
Сортировка#
На вкладке Сортировка задается порядок сортировки результата.
Для добавления правила доступны операции Создать запись и Создать от колонки.
Создать запись позволяет выбрать поле из доступных полей источника.
Создать от колонки позволяет выбрать одну из сформированных Колонок отчета.
Для правила сортировки задаются поле, порядок сортировки и обработка пустых значений.
Если правил несколько, для них можно определить очередность применения.
Группировка и агрегация#
На вкладке Группировка и агрегация настраиваются колонки группировки и расчет агрегированных значений.
Колонки группировки определяют, по каким значениям исходные данные объединяются в группы.
Для агрегированной колонки выбирается функция, которая рассчитывает итоговое значение по данным соответствующей группы.
Например, функция MIN возвращает минимальное значение колонки внутри группы.
Построитель также поддерживает настройку простой и иерархической группировки.
Стили визуализации#
На вкладке Стили визуализации настраивается оформление результата запроса.
Стиль можно назначить строкам результата или отдельным колонкам.
Для условного оформления можно задать условие применения стиля: выбрать поле, вид сравнения, значение и стиль, который должен использоваться при выполнении условия.
Текст запроса#
На вкладке Текст запроса отображается SQL, сформированный по текущим настройкам интерактивного построителя.
Сформированный SQL не сохраняется в cBody. Исходной конфигурацией интерактивного построителя являются настройки, сохраненные в jSettings.
Признак Использовать дискретный доступ используется для формирования запроса с учетом механизма дискретного доступа системы.
При формировании такого запроса используются служебные маркеры дискретного доступа. Перед выполнением запроса они обрабатываются механизмом Btk_AdminLib.
Описание#
На вкладке Описание можно указать дополнительную информацию о назначении построителя.
Ручной ввод запроса#
Тип Ручной ввод запроса используется, если текст запроса необходимо задать самостоятельно.
Для этого типа доступны вкладки Колонки запроса, Текст запроса и Описание.
Текст запроса#
На вкладке Текст запроса задается SQL, который используется при выполнении построителя.
Текст сохраняется в cBody.
Колонки запроса#
На вкладке Колонки запроса описывается структура результата SQL-запроса.
Для колонки можно указать:
Имя колонки;
Наименование колонки;
Тип параметра;
Тип данных;
Ссылочный класс.
Если значение является ссылкой на объект системы, для колонки можно указать соответствующий ссылочный класс.
Описание колонок используется системой как метаданные результата запроса.
Описание#
На вкладке Описание можно указать дополнительную информацию о запросе.
Запрос к внешней БД#
Тип Запрос к внешней БД используется для выполнения SQL через настроенное подключение к другой базе данных.
Например, таким способом можно выполнить SELECT в базе другой системы по JDBC и получить его результат в Global ERP.
Для этого типа доступны вкладки Текст запроса, Колонки запроса, Описание и Характеристики.
Настройка подключения#
На вкладке Характеристики укажите значение характеристики Справочник подключений к БД.
Для выбора нажмите кнопку с многоточием и выберите заранее настроенное подключение.
Для подключения хранятся, в частности:
код;
наименование;
JDBC URL;
пользователь;
пароль;
тип подключения.
В справочнике могут быть настроены подключения к различным СУБД, например Oracle или PostgreSQL.
Параметры подключения задаются в справочнике подключений, а в построителе выбирается готовая настройка.
Текст запроса#
На вкладке Текст запроса задается SQL, выполняемый через выбранное подключение.
Колонки запроса#
На вкладке Колонки запроса описывается структура возвращаемого результата так же, как для типа Ручной ввод запроса.
Выполнение запроса#
Чтобы проверить настроенный построитель и получить данные, выполните операцию Выполнить запрос.
Способ выполнения зависит от типа построителя:
для Интерактивного построения запроса SQL формируется по текущим настройкам;
для Ручного ввода запроса используется заданный вручную SQL;
для Запроса к внешней БД SQL выполняется через подключение, выбранное в характеристике Справочник подключений к БД.
Если настроены запрашиваемые параметры фильтрации, перед выполнением система предлагает указать их значения.
После выполнения результат открывается в отдельной таблице.
Состав колонок определяется настройками построителя.
Представление результата предназначено для просмотра данных. Операции вставки и удаления в нем недоступны.
Использование построителя как источника данных#
Результат одного построителя можно использовать при формировании другого интерактивного запроса.
Для этого установите у построителя признак Использовать как источник данных и сохраните запись.
Построитель появится в группе ИСТОЧНИКИ ДАННЫХ на вкладке Таблицы и атрибуты другого построителя.
После выбора источника его поля отображаются в области Доступные поля и могут быть добавлены в Колонки отчета.
Если построитель-источник содержит параметры, их описание добавляется в настройки зависимого построителя. При изменении параметров источника система синхронизирует соответствующую группу параметров в построителях, которые его используют.
Удалить построитель, который используется в качестве источника другим построителем, нельзя.
Хранение настроек#
Основная конфигурация интерактивного построителя хранится в jSettings класса Btk_QurModel.
В ней сохраняются:
источники данных;
связи между источниками;
колонки результата;
фильтры и их параметры;
сортировка;
группировка и агрегация;
стили визуализации.
При открытии построителя настройки из jSettings восстанавливаются в QurManager.
При сохранении QurManager формирует актуальное состояние jSettings.
Если изменения в карточке отменены, состояние построителя повторно восстанавливается из сохраненного jSettings.
Для типа Ручной ввод запроса текст SQL хранится в cBody.
Важно
jSettings является сериализованным состоянием построителя. Для чтения и изменения его содержимого следует использовать механизмы QurManager, а не формировать JSON вручную.
Результирующие колонки#
С построителем связаны объекты Btk_QurModelColumn, содержащие метаданные его результирующих колонок.
Для интерактивного построителя при сохранении система синхронизирует Btk_QurModelColumn с текущими Колонками отчета:
создает добавленные колонки;
обновляет измененные;
удаляет исключенные из построителя.
Имя колонки должно быть уникальным в пределах одного построителя.
Программное использование#
Для объектного доступа к построителю используется контракт Btk_QurModelApic.
Основная прикладная логика реализована в Btk_QurModelApi.
API позволяет:
инициализировать менеджер интерактивного построителя;
сформировать SQL;
сформировать SQL с переданными параметрами;
проверить наличие значений необходимых параметров;
определить построители, использующие заданную модель как источник;
синхронизировать результирующие колонки;
обновить параметры зависимых построителей.
Для работы построителя в интерфейсе используется QurAviManager, для программных сценариев — QurApiManager.
Важно
Если прикладной код работает через контракт Btk_QurModelApic, не следует без необходимости обходить его прямыми вызовами Btk_QurModelApi.
Ограничения#
Нельзя удалить построитель, пока он используется как источник данных другим построителем.
При программном выполнении необходимые параметры запроса должны быть переданы либо иметь значения по умолчанию.
Сгенерированный SQL интерактивного построителя формируется из настроек jSettings и не сохраняется в cBody.