Списки значений для 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 вместо процедур.