Перейти к содержанию

Блок "Справочник"

Блок доступен начиная с версии 0.20

Назначение блока

Блок создает таблицу в базе данных с заданными полями и позволяет получать массив объектов (SQL-запрос формируется автоматически). Также поддерживается write-back для указанных полей.

Данная страница содержит описание настроек блока. Описание мастера настройки блока см. в разделе Мастер настройки справочника и Мастер данных блока.

Чтобы начать работать с блоком, его необходимо выбрать в библиотеке блоков и переместить в область графа.

Настройки блока

Работа с настройками осуществляется через локальное меню блока (пункт Настройки):

Модальное окно представлено ниже:

Общие настройки блоков описаны в отдельном разделе.

Раздел "Справочник"

Наименование Тип Обязательное Описание Пример
Привязка дополнительных параметров JSON Нет Привязки формируют раздел условий при расчете блока.
Необходимы для параметризации запроса на извлечение данных из справочника

Пример привязок

[
    {"<Идентификатор поля в таблице>": "{{ <Jinja шаблон с выбранным полем> }}"}, <Единичный элемент>
    {"<Идентификатор поля в таблице>": "{{ <Jinja шаблон с выбранным массивом полей>|join(', ') }}" <Массив>
]

Для массива требуется, чтобы в параметре была структура со значениями через запятую (пример: 0,1,2,3).

Используемый в примере вариант, где:

<массив с данными>|join(', ', attribute='<атрибуты элементов массива, которые необходимо добавить в массив, опционально>')
[
    {"id": "{{ input[0].pkey.id }}"},
    {"region_id": "{{ input|join(', ', attribute='pkey.region_id') }}"
]

Входы блока

Общие настройки входов блока описаны в отдельном разделе.

Название входа Тип Обязательный Описание
БД Соединение с БД Да Соединение с базой данных, из которой необходимо извлекать данные
Дополнительные параметры Ряд данных Нет Массив объектов или временных рядов, атрибуты которых могут быть использованы для параметризации запроса по извлечению данных (при расчете блока)

Поддерживаются разные диалекты баз, а именно:

  • PostgreSQL
  • MSSQL
  • Oracle

ClickHouse не поддерживается данным типом блока.

Выходы блока

Общие настройки выходов блока описаны в отдельном разделе.

Название выхода Тип Описание
Объекты Объект Массив объектов с возможностью добавления переменных выходов

Изменения в релизе 0.43

В релизе 0.43 изменился формат получения передачи объектов: теперь каждый блок самостоятельно запрашивает необходимые данные у справочника.

В связи с этим изменились и выходные данные блока. Сам выход стандартизирован под выход с типом "объект" (для обратной совместимости), но данные в выходе больше не передаются.

Режим отладки

В режиме отладки блока данные для удобства будут отображены в параметре "Данные".

{
    "pkey": {},
    "_params": {},
    "attrs": {
        "name": "Новый формат ответа справочника. Данные можно получить по отдельным запросам",
        "hint": "Используйте 'CDictionary(<dict_id>, <revision_id>, <block_id>).get_origin_data()' для работы с данными справочников",
        "hint2": "Для работы с данными справочников в старом формате используйте 'CDictionary(<dict_id>, <revision_id>, <block_id>).get_origin_data().to_old_format_json()'"
    },
    "child": [],
    "_source": "7fa0f30a-9c1f-429b-b9dc-155e5794969f",
    "dict_id": "72d32c42-81d2-49e2-aed8-0abd72c13b2e",
    "revision_id": "89f739084052c024e233",
    "replace_data": true,
    "dictionary_type": "sql"
}
  • _source - идентификатор блока, в котором был создан справочник.
  • dict_id - уникальный идентификатор объекта-справочника.
  • revision_id - идентификатор ревизии данных.
  • replace_data - флаг для получения данных из сервиса. Необходим в тех случаях, когда все поля, указанные выше, приходят в объекте. Если replace_data = True, то независимо от полученных данных, блок попытается запросить данные у сервиса.
  • dictionary_type - тип справочника.

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

{       
    "pkey": [<Набор первичных ключей>],     
    "vl": <Значение объекта>,       
    "attrs": [<Набор атрибутов - полей, не попавших ни в первичный ключ, ни в значение>],       
    "_params": {
        <Опциональные параметры объекта>,           
        "vl": <Ключ поля, отвечающего за значение>
        },      
    "_source": <Идентификатор блока-источника, поле заполняется калькулятором автоматически>    
}

События блока

В блоке нет событий.

Описание работы блока

Блок формирует SQL-запрос к указанной таблице в базе данных (при необходимости подставляя в него Jinja-шаблон из настройки «Привязка дополнительных параметров») и выполняет его. Каждая полученная строка преобразуется в объект в соответствии с описанием полей, заданных в мастере.

Результат работы: массив объектов.

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

Переменные входов/выходов

См. Переменные входов/выходов

Полезные ссылки