Списки значений параметров
Разработчики могут настроить списки значений для параметров, используя тип ParameterValues в таблице xls.handlers.
Ниже приведен пример настройки для получения значений из таблиц:
ID | TABLE_SCHEMA | TABLE_NAME | COLUMN_NAME | EVENT_NAME | HANDLER_SCHEMA | HANDLER_NAME | HANDLER_TYPE | HANDLER_CODE | TARGET_WORKSHEET |
---|---|---|---|---|---|---|---|---|---|
s02 | usp_cashbook | account_id | ParameterValues | s02 | accounts | TABLE | id, +name | ||
s02 | usp_cashbook | item_id | ParameterValues | s02 | items | TABLE | id, +name | ||
s02 | usp_cashbook | company_id | ParameterValues | s02 | companies | TABLE | id, +name |
Ниже приведен пример настройки для получения значений хранимыми процедурами:
ID | TABLE_SCHEMA | TABLE_NAME | COLUMN_NAME | EVENT_NAME | HANDLER_SCHEMA | HANDLER_NAME | HANDLER_TYPE | HANDLER_CODE | TARGET_WORKSHEET |
---|---|---|---|---|---|---|---|---|---|
s02 | usp_cashbook2 | account_id | ParameterValues | s02 | xl_list_account_id | PROCEDURE | |||
s02 | usp_cashbook2 | item_id | ParameterValues | s02 | xl_list_item_id | PROCEDURE | |||
s02 | usp_cashbook2 | company_id | ParameterValues | s02 | xl_list_company_id | PROCEDURE |
См. подробные статьи о создании списков значений с использованием объектов баз данных:
- Списки значений из таблиц и представлений
- Списки значений из хранимых процедур
- Списки значений из команд SQL
См. также подробные статьи о создании списков значений с использованием REST API:
- Списки значений для REST API
- Списки значений для OData
- Списки значений для ODataDB
- Списки значений в DBGate
Можно задать списки с фиксированными значениями. См. Списки фиксированных значений.
_NotNull и _KeepNull
Списки значений содержат пустое значение по умолчанию.
Обычно, значение NULL используется для выбора всех значений, как например, при использовании фильтра
WHERE c.company_id = COALESCE(@company_id, c.company_id)
Это поведение было добавлено в SaveToDB 7.31, 8.26, 9.12, 10.0, DBEdit 2.0, DBGate 2.0 и ODataDB 4.0.
В предыдущих версиях, чтобы получить пустое значение, хранимые процедуры должны были возвращать значение NULL, как, например:
SELECT NULL AS id, NULL AS name UNION ALL ...
Соответственно, новое поведение меняет поведение относительно предыдущих версий, т.к. добавляет пустое значение в списки, которые его не содержали.
Чтобы отключить добавление пустого значения, добавьте значение _NotNull в поле TARGET_WORKSHEET.
Чтобы отображать пустое значение только при его наличии в возвращаемом списке, добавьте значение _KeepNull.
Мы рекомендуем обновиться до последних версий, т.к. новая возможность позволяет делает код проще, используя одни и те же процедуры для списков значений ячеек и параметров.
Значения параметров по умолчанию
Параметры получают начальные значения из первых элементов списков значений или NULL, если списка нет.
Для установки начального значения можно использовать тип DefaultValue в таблице xls.handlers.
Например:
ID | TABLE_SCHEMA | TABLE_NAME | COLUMN_NAME | EVENT_NAME | HANDLER_SCHEMA | HANDLER_NAME | HANDLER_TYPE | HANDLER_CODE | TARGET_WORKSHEET |
---|---|---|---|---|---|---|---|---|---|
s17 | usp_request | category_id | DefaultValue | ATTRIBUTE | 1 | _NotNull | |||
s17 | usp_request | time_id | DefaultValue | ATTRIBUTE | 2 |
В поле TARGET_WORKSHEET также можно указать значение _NotNull, чтобы отключить пустое значение в списке. В этом случае, можно не указывать значение по-умолчанию, если подходит первый элемент списка.
Формы JSON позволяют возвращать начальные значения параметров из запроса.
Параметры списков значений
Запросы списков значений могут иметь параметры.
Например, для получения списков значений на языке пользователя. См. Перевод данных.
Второй случай, это получение значений, зависимых от значений предыдущих параметров.
Например, если запрос данных содержит параметры @country_id и @state_id, то запрос получения значений @state_id может использовать значение параметра @country_id.
В этом случае, когда пользователь меняет значение параметра @country_id, будут обновлены значения @state_id (до загрузки основных данных).
Начиная с версий SaveToDB 8.26, 9.12, 10.0, DBEdit 2.0, DBGate 2.0, ODataDB 4.0 поддерживаются динамические списки значений.
Например, список значений для @state_id может возвращать колонки id, state и country_id (в третьей колонке), и список будет отображать значения, соответствующие значению @country_id.
См. Динамические и фильтрованные списки.
Обновление списков значений
SaveToDB и DBEdit загружают списки значений при первом подключении и при выполнении действий Обновить данные и конфигурацию и Обновить списки значений.
SaveToDB и DBEdit не обновляют списки значений при обычном обновлении данных.
SaveToDB 10 может автоматически обновлять списки значений, используя зависимости объектов. См. Зависимые списки значений.