Списки значений для OData
В этой статье мы рассмотрим настройку сервисов OData для списков значений в надстройке SaveToDB версии 10 и выше.
OData не предоставляет стандартных возможностей для описания обработчиков событий.
Существует два способа конфигурации отсутствующих возможностей OData:
- Использовать аннотации.
- Использовать объекты OData, которые возвращают настройки.
ODataDB использует аннотации списков значений для настройки встроенного клиента JavaScript. Надстройка SaveToDB также применяет эти аннотации.
Для сторонних сервисов OData разработчики могут опубликовать таблицу xls.handlers в виде EntitySet.
Надстройка SaveToDB определяет такие объекты настройки по сигнатуре полей и загружает их после загрузки документа метаданных.
Настройка списков значений аналогична следующим подходам:
Тем не менее, рекомендуется использовать объекты OData вместо объектов базы данных.
Например, конфигурация для таблицы выглядит следующим образом:
ID | TABLE_SCHEMA | TABLE_NAME | COLUMN_NAME | EVENT_NAME | HANDLER_SCHEMA | HANDLER_NAME | HANDLER_TYPE | HANDLER_CODE |
---|---|---|---|---|---|---|---|---|
s02 | usp_cashbook | company_id | ValidationList | s02 | companies | TABLE | id, +name | |
s02 | usp_cashbook | company_id | ParameterValues | s02 | companies | TABLE | id, +name |
Предположим, что сервис OData публикует s02.usp_cashbook
в схеме s02
с именем usp_cashbook
. В этом случае левая часть остается неизменной, так как она указывает схему и имя типа объекта. Однако в полях обработчика событий должен быть указан EntitySet вместо таблицы.
Если сервис OData публикует таблицу в контейнере схемы default
с именем s02_companies
, конфигурация будет выглядеть следующим образом:
ID | TABLE_SCHEMA | TABLE_NAME | COLUMN_NAME | EVENT_NAME | HANDLER_SCHEMA | HANDLER_NAME | HANDLER_TYPE | HANDLER_CODE |
---|---|---|---|---|---|---|---|---|
s02 | usp_cashbook | company_id | ValidationList | default | s02_companies | ENTITYSET | id, +name | |
s02 | usp_cashbook | company_id | ParameterValues | default | s02_companies | ENTITYSET | id, +name |
Надстройка SaveToDB поддерживает список полей в поле HANDLER_CODE
для EntitySet аналогично таблицам и представлениям. Однако лучшим решением будет создание отдельных объектов для определения колонок списков значений на стороне сервиса.
Обратите внимание, что конфигурации выше не конфликтуют. Пользователи могут подключаться к базе данных и использовать первую конфигурацию или к сервису OData и использовать вторую.
Ниже приведен пример конфигурации для получения списков значений с помощью хранимых процедур:
ID | TABLE_SCHEMA | TABLE_NAME | COLUMN_NAME | EVENT_NAME | HANDLER_SCHEMA | HANDLER_NAME | HANDLER_TYPE | HANDLER_CODE | TARGET_WORKSHEET | MENU_ORDER | EDIT_PARAMETERS |
---|---|---|---|---|---|---|---|---|---|---|---|
s02 | usp_cashbook | company_id | ValidationList | s02 | xl_list_company_id | PROCEDURE | |||||
s02 | usp_cashbook | company_id | ParameterValues | s02 | xl_list_company_id | PROCEDURE |
Конфигурация для OData будет выглядеть следующим образом:
ID | TABLE_SCHEMA | TABLE_NAME | COLUMN_NAME | EVENT_NAME | HANDLER_SCHEMA | HANDLER_NAME | HANDLER_TYPE | HANDLER_CODE | TARGET_WORKSHEET | MENU_ORDER | EDIT_PARAMETERS |
---|---|---|---|---|---|---|---|---|---|---|---|
s02 | usp_cashbook | company_id | ValidationList | default | s02_xl_list_company_id | FUNCTIONIMPORT | |||||
s02 | usp_cashbook | company_id | ParameterValues | default | s02_xl_list_company_id | FUNCTIONIMPORT |
Эта конфигурация использует объекты FunctionImport вместо процедур.