Зависимые списки значений
Предположим, задана следующая конфигурация:
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 |
В этом примере, списки значений колонки и параметра company_id получают значения из таблицы companies.
Если кто-то добавит или изменит компанию, то пользователи с открытым запросом usp_cashbook для получения новых значений должны обновить данные и конфигурацию или списки значений.
SaveToDB 10 содержит более эффективное решение, если пользователь обновляет справочники и данные в одной книге.
Например, если пользователь сохранит изменения в таблице companies, то надстройка обновит списки значений колонки и параметра автоматически.
Пример, приведенный выше, является достаточно простым, т.к. список загружается из таблицы, которая сохраняется.
Предположим, есть новая конфигурация, в которой для получения значений используются процедуры, которые получают значения из таблиц companies.
ID | TABLE_SCHEMA | TABLE_NAME | COLUMN_NAME | EVENT_NAME | HANDLER_SCHEMA | HANDLER_NAME | HANDLER_TYPE | HANDLER_CODE |
---|---|---|---|---|---|---|---|---|
s02 | usp_cashbook | company_id | ValidationList | s02 | xl_list_company_id | PROCEDURE | ||
s02 | usp_cashbook | company_id | ParameterValues | s02 | xl_list_company_id | PROCEDURE |
В этом случае, надстройка будет обновлять списки автоматически, если он может проанализировать код хранимой процедуры и определить исходную таблицу.
Разработчики могут явно указать зависимость, используя тип события DependsOn.
Например:
ID | TABLE_SCHEMA | TABLE_NAME | COLUMN_NAME | EVENT_NAME | HANDLER_SCHEMA | HANDLER_NAME | HANDLER_TYPE | HANDLER_CODE |
---|---|---|---|---|---|---|---|---|
s02 | usp_cashbook | company_id | DependsOn | s02 | companies | TABLE |
Этот путь достаточно простой, т.к. можно просто скопировать строку настройки списка значений и заменить ValidationList на DependsOn.
Однако, он приводит к наличию одинаковых строк для многих объектов.
Можно использовать альтернативный путь указания зависимостей:
ID | TABLE_SCHEMA | TABLE_NAME | COLUMN_NAME | EVENT_NAME | HANDLER_SCHEMA | HANDLER_NAME | HANDLER_TYPE | HANDLER_CODE |
---|---|---|---|---|---|---|---|---|
s02 | xl_list_company_id | DependsOn | s02 | companies | TABLE |
Эта настройка говорит о том, что процедура списка значений зависит от таблицы companies.
Соответственно, надстройка обновит все списки, основанные на xl_list_company_id, при сохранении изменений в таблицу companies.
Более того, можно установить зависимость между формами редактирования и их исходными таблицами.
Например, если процедура usp_companies используется для редактирования компаний, то можно установить ее зависимость:
ID | TABLE_SCHEMA | TABLE_NAME | COLUMN_NAME | EVENT_NAME | HANDLER_SCHEMA | HANDLER_NAME | HANDLER_TYPE | HANDLER_CODE |
---|---|---|---|---|---|---|---|---|
s02 | usp_companies | DependsOn | s02 | companies | TABLE |
В этом случае, если пользователь сохранит значения, загруженные из процедуры usp_companies, то надстройка обновить все списки, основанные на таблице companies и процедуре xl_list_company_id.