Списки значений для OData

Списки значений для OData

В этой статье рассмотрена настройка сервисов OData для настройки списков значений в надстройке SaveToDB 10 или выше.

В OData не стандартных возможностей для описания обработчиков событий.

Есть два пути для конфигурации отсутствующих возможностей OData:

  1. Использовать аннотации
  2. Использовать объекты OData, которые возвращают настройки

ODataDB использует аннотации списков значений для настройки встроенного клиента JavaScript. Надстройка SaveToDB также использует эти аннотации.

Для сторонних сервисов OData, разработчики могут опубликовать таблицу xls.handlers в виде EntitySet.

Надстройка SaveToDB определяет такие объекты настройки по сигнатуре полей и загружает настройки после загрузки документа метаданных.

Настройка списков значений аналогична следующим подходам:

Однако, следует использовать объекты OData вместо объектов базы данных.

Например, конфигурация для таблицы выглядит следующим образом:

IDTABLE_SCHEMATABLE_NAMECOLUMN_NAMEEVENT_NAMEHANDLER_SCHEMAHANDLER_NAMEHANDLER_TYPEHANDLER_CODE
 s02usp_cashbookcompany_idValidationLists02companiesTABLEid, +name
 s02usp_cashbookcompany_idParameterValuess02companiesTABLEid, +name

Предположим, что сервис OData публикует s02.usp_cashbook также в схеме s02 с именем usp_cashbook.

В этом случае, левая часть остается той же, т.к. в ней указываются схема и имя типа объекта.

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

Предположим, что сервис OData публикует таблицу в контейнере схемы default с именем s02_companies.

Соответственно, конфигурация будет выглядеть следующим образом:

IDTABLE_SCHEMATABLE_NAMECOLUMN_NAMEEVENT_NAMEHANDLER_SCHEMAHANDLER_NAMEHANDLER_TYPEHANDLER_CODE
 s02usp_cashbookcompany_idValidationListdefaults02_companiesENTITYSETid, +name
 s02usp_cashbookcompany_idParameterValuesdefaults02_companiesENTITYSETid, +name

Надстройка SaveToDB поддерживает список полей в поле HANDLER_CODE для EntitySet аналогично таблицам и представлениям.

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

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

Ниже приведен пример конфигурации для получения списков значений хранимыми процедурами:

IDTABLE_SCHEMATABLE_NAMECOLUMN_NAMEEVENT_NAMEHANDLER_SCHEMAHANDLER_NAMEHANDLER_TYPEHANDLER_CODETARGET_WORKSHEETMENU_ORDEREDIT_PARAMETERS
 s02usp_cashbookcompany_idValidationLists02xl_list_company_idPROCEDURE
 s02usp_cashbookcompany_idParameterValuess02xl_list_company_idPROCEDURE

Конфигурация для OData будет выглядеть следующим образом:

IDTABLE_SCHEMATABLE_NAMECOLUMN_NAMEEVENT_NAMEHANDLER_SCHEMAHANDLER_NAMEHANDLER_TYPEHANDLER_CODETARGET_WORKSHEETMENU_ORDEREDIT_PARAMETERS
 s02usp_cashbookcompany_idValidationListdefaults02_xl_list_company_idFUNCTIONIMPORT
 s02usp_cashbookcompany_idParameterValuesdefaults02_xl_list_company_idFUNCTIONIMPORT

Эта конфигурация содержит объекты FunctionImport вместо процедур.