Зависимые списки значений

Зависимые списки значений

Предположим, задана следующая конфигурация:

IDTABLE_SCHEMATABLE_NAMECOLUMN_NAMEEVENT_NAMEHANDLER_SCHEMAHANDLER_NAMEHANDLER_TYPEHANDLER_CODE
 s02usp_cashbookcompany_idValidationLists02companiesTABLEid, +name
 s02usp_cashbookcompany_idParameterValuess02companiesTABLEid, +name

В этом примере, списки значений колонки и параметра company_id получают значения из таблицы companies.

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

SaveToDB 10 содержит более эффективное решение, если пользователь обновляет справочники и данные в одной книге.

Например, если пользователь сохранит изменения в таблице companies, то надстройка обновит списки значений колонки и параметра автоматически.

Пример, приведенный выше, является достаточно простым, т.к. список загружается из таблицы, которая сохраняется.

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

IDTABLE_SCHEMATABLE_NAMECOLUMN_NAMEEVENT_NAMEHANDLER_SCHEMAHANDLER_NAMEHANDLER_TYPEHANDLER_CODE
 s02usp_cashbookcompany_idValidationLists02xl_list_company_idPROCEDURE
 s02usp_cashbookcompany_idParameterValuess02xl_list_company_idPROCEDURE

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

Разработчики могут явно указать зависимость, используя тип события DependsOn.

Например:

IDTABLE_SCHEMATABLE_NAMECOLUMN_NAMEEVENT_NAMEHANDLER_SCHEMAHANDLER_NAMEHANDLER_TYPEHANDLER_CODE
 s02usp_cashbookcompany_idDependsOns02companiesTABLE

Этот путь достаточно простой, т.к. можно просто скопировать строку настройки списка значений и заменить ValidationList на DependsOn.

Однако, он приводит к наличию одинаковых строк для многих объектов.

Можно использовать альтернативный путь указания зависимостей:

IDTABLE_SCHEMATABLE_NAMECOLUMN_NAMEEVENT_NAMEHANDLER_SCHEMAHANDLER_NAMEHANDLER_TYPEHANDLER_CODE
 s02xl_list_company_idDependsOns02companiesTABLE

Эта настройка говорит о том, что процедура списка значений зависит от таблицы companies.

Соответственно, надстройка обновит все списки, основанные на xl_list_company_id, при сохранении изменений в таблицу companies.

Более того, можно установить зависимость между формами редактирования и их исходными таблицами.

Например, если процедура usp_companies используется для редактирования компаний, то можно установить ее зависимость:

IDTABLE_SCHEMATABLE_NAMECOLUMN_NAMEEVENT_NAMEHANDLER_SCHEMAHANDLER_NAMEHANDLER_TYPEHANDLER_CODE
 s02usp_companiesDependsOns02companiesTABLE

В этом случае, если пользователь сохранит значения, загруженные из процедуры usp_companies, то надстройка обновить все списки, основанные на таблице companies и процедуре xl_list_company_id.