Общая информация
В компоненте MapService есть возможность настройки первичной и альтернативной фильтрации. Эта настройка используется, когда в одном компоненте нужно делать запрос к справочнику с разными фильтрами в зависимости от ответов пользователя
Требования к настройке фильтрации
Если блок dictionaryFilter не указать вообще, то запрос отправится с "filter": null, вернутся все подразделения. При большом количестве объектов справочник может зависнуть
Пример использования secondaryDictionaryFilter
При настройке альтернативной фильтрации в linkedValues задаётся аргумент dictionaryFilterPriority, определяющий использование того или иного фильтра
Поясним на примере
Требуется так настроить компонент, чтобы если значение компонента a1 равно 1, то справочник вызывался с фильтром, указанным в dictionaryFilter, а если a1 не равно 1, то справочник должен вызываться с фильтром, заданным в secondaryDictionaryFilter
Настройка компонента будет выглядеть следующим образом:
Пример JSON структуры объекта передаваемой в DTO
|
{ "id": "ms1", "type": "MapService", "label": "<p>Выберите подразделение</p>", "attrs": { "validationOn": false, "withToken": true, "attributeNameWithAddress": "ADDRESS", "dictionaryType": "PGS_CNSTR_ORG", "dictionaryFilter": [ { "attributeName": "SERVICE_CODE", "condition": "EQUALS", "value": "{"asString":"-10000000284"}", "valueType": "value" } ], "secondaryDictionaryFilter": [ { "attributeName": "SERVICE_CODE", "condition": "EQUALS", "value": "{"asString":"-10000000285"}", "valueType": "value" } ], "selectAttributes": [ "ADDRESS", "SHORT_TITLE" ], "baloonContent": [ { "name": "ADDRESS", "label": "Адрес" }, { "name": "SHORT_TITLE", "label": "Наименование" } ], "miniBalloonTexts": [ "attributeValues.SHORT_TITLE", "attributeValues.ADDRESS" ], "personalData": {}, "actions": [], "fields": [] }, "linkedValues": [ { "argument": "dictionaryFilterPriority", "jsonLogic": { "if": [ { "==": [ "answer.a1.value", "1" ] }, "dictionaryFilter", "secondaryDictionaryFilter" ] } } ], "value": "", "visited": false } |
В linkedValues задали аргумент dictionaryFilterPriority, который в зависимости от a1 может принимать значения dictionaryFilter или secondaryDictionaryFilter
Если dictionaryFilterPriority=dictionaryFilter, то в пользовательском интерфейсе будет вызван справочник с фильтром filter":{"simple":{"attributeName":"SERVICE_CODE","condition":"EQUALS","value":{"asString":"-10000000284"}}},
а если dictionaryFilterPriority=secondaryDictionaryFilter, то с фильтром "filter":{"simple":{"attributeName":"SERVICE_CODE","condition":"EQUALS","value":{"asString":"-10000000285"}}}
Команда ВКУ подготовила шаблон c примером настройки первичной и альтернативной фильтраций — Настройка dictionaryFilterPriority