Платформа 3V/Формы/Источники данных/Справочник/Фильтрация/От значений выражения
Фильтр по значению выражения используется в тех случаях, когда необходимо отфильтровать данные по нескольким параметрам, которые невозможно или трудоемко описать другими типами фильтров (см. пример).
Ниже представлена структура фильтра.
1 "filter": {
2 "expressionId": 10,
3 "attribute": {
4 "id": 21,
5 "discriminator": "OwnAttributeDefinitionDto"
6 },
7 "conditionType": "AttributeInCollection",
8 "inversion": false,
9 "conditionId": null,
10 "discriminator": "EntryExpressionFilter"
11 },
Описание свойств выражений
Свойство | Описание |
---|---|
expressionId | id выражения |
attribute | Атрибут текущего источника - справочника, элемент которого будет выбран по заданному параметру. Указывается номер Id и тип атрибута в данном случае собственный (OwnAttributeDefinitionDto), так как используются данные текущего справочника. |
discriminator | EntryExpressionFilter |
conditionType | Тип условий |
inversion | В значении "false" источник-справочник принимает значения, которые удовлетворяют фильтру, в значении "true" - все значения, которые наоборот не удовлетворяют ему |
conditionId | Условия, при которых применяется фильтр |
Помимо фильтра необходимо описать выражение и параметры, которые используются для определения значений выражения.
1 "expressions": [
2 {
3 "id": 10,
4 "expression": "if([1]='true', [2], [3])",
5 "returnFirstParameterValue": false,
6 "parameters": [
7 {
8 "uiSourceId": 1,
9 "id": 1,
10 "allowMultipleValues": false,
11 "discriminator": "EntryExpressionUiSourceParameter"
12 },
13 {
14 "id": 2,
15 "allowMultipleValues": true,
16 "discriminator": "EntryExpressionConstantParameter",
17 "value": [
18 3,
19 5
20 ]
21 },
22 {
23 "id": 3,
24 "allowMultipleValues": true,
25 "discriminator": "EntryExpressionConstantParameter",
26 "value": [8]
27 }
28 ],
Описание свойств выражений
Свойство | Описание |
---|---|
Id | id выражения, на которое ссылается фильтр |
expression | Выражение описывается через параметры (операнды), которые описываются внутри данного блока. Более подробно об этом элементе можно найти на странице Выражения |
returnFirstParameterValue | Флаг получения в выражении отметки первого параметра в блоке "parameters" без учета самого выражения, написанного в "expression" |
parameters | Виды параметров и ссылки на детальную настройку каждого вида в JSON описана на странице Параметры выражений и отчетов |
Пример
В клиентской карточке размещен чек-бокс, при включении которого из справочника "Контрагенты" отфильтровываются только элементы вида ПАО и ООО. Если чек-бокс отключен, то отфильтровываются остальные элементы.
Фильтр настроен на связный атрибут "Вид" справочника "Контрагенты". Этот атрибут принимает значения от 1 до 8.
Выражение от значений которого фильтруется справочник логическое: "expression": "if([1]='true', [2], [3])" и содержит три операнда (параметра.
Первый операнд (параметр) id=1 берет значение из первого контрола uiSourceId = 1, который имеет в данном примере логический тип - это чек-бокс.
1 "parameters": [
2 {
3 "uiSourceId": 1,
4 "id": 1,
5 "allowMultipleValues": false,
6 "discriminator": "EntryExpressionUiSourceParameter"
7 },
8 {...},
9 {...},
10 ],
Далее, если первый операнд (параметр) принимает значение true (чек-бокс включен), то фильтр работает по параметру id=2. И отфильтруются элементы справочника "Контрагенты", у которых значение атрибута "Вид" равно значениями в параметре - 3 и 5.
1 "parameters": [
2 {...},
3 {
4 "id": 2,
5 ""allowMultipleValues": true,
6 "discriminator": "EntryExpressionConstantParameter",
7 "value": [
8 3,
9 5
10 ]
11 },
12 {...},
13 ],
Наконец, если первый операнд (параметр) принимает значение false (чек-бокс выключен), то фильтр работает по параметру id=3. Отфильтруются элементы справочника "Контрагенты", у которых значение атрибута "Вид" равно значениями указанным в параметре.
1
2 "parameters": [
3 {...},
4 {...},
5 {
6 "id": 3,
7 "allowMultipleValues": true,
8 "discriminator": "EntryExpressionConstantParameter",
9 "value": [
10 1,
11 2,
12 4,
13 6,
14 7,
15 8
16 ]
17 }
18 ],