Платформа 3V/Формы/Источники данных/Справочник/Фильтрация/Несколькими фильтрами через И или ИЛИ: различия между версиями
Строка 35: | Строка 35: | ||
Создан фильтр, который выбирает контрагенты определенного вида и статуса - действующий.<br> | Создан фильтр, который выбирает контрагенты определенного вида и статуса - действующий.<br> | ||
− | [[Файл:Screenshot 2021-04-19 at 14. | + | [[Файл:Screenshot 2021-04-19 at 14.41.48.png|обрамить|слева]] |
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br> | <br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br> | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="width:800px; overflow:auto;"> | ||
+ | <div style="font-weight:bold;line-height:1.6;">JSON серверной карточки</div> | ||
+ | <div class="mw-collapsible-content mw-collapsed-content"> | ||
+ | <syntaxhighlight lang="JSON" line> | ||
+ | { | ||
+ | "id": 10735, | ||
+ | "name": "Пример фильтра от справочника (EntryFilterDto)", | ||
+ | "description": null, | ||
+ | "title": "Пример фильтрации_справочник от справочника", | ||
+ | "entrySettings": null, | ||
+ | "uiSources": [ | ||
+ | { | ||
+ | "dataSourceId": 2, | ||
+ | "nameTemplate": "", | ||
+ | "displayAttribute": null, | ||
+ | "hasMultipleValue": false, | ||
+ | "hasNullableValue": false, | ||
+ | "maxElements": null, | ||
+ | "hasServerFiltration": false, | ||
+ | "searchSettings": { | ||
+ | "maxElements": null, | ||
+ | "minInputChars": 2, | ||
+ | "searchMode": "Client", | ||
+ | "debounceMs": 300 | ||
+ | }, | ||
+ | "id": 1, | ||
+ | "caption": "Вид контрагента", | ||
+ | "enable": true, | ||
+ | "visible": true, | ||
+ | "hint": null, | ||
+ | "doActionOnChangeValue": true, | ||
+ | "onAfterChangeValueConditionalActions": null, | ||
+ | "onAfterChangeValueByClientConditionalActions": null, | ||
+ | "rebuildDependentsObjectOnChange": true, | ||
+ | "enableRuleIds": [], | ||
+ | "visibleRuleIds": [], | ||
+ | "access": null, | ||
+ | "isValueChanged": true, | ||
+ | "expressionId": null, | ||
+ | "discriminator": "DictionarySourceEntry" | ||
+ | }, | ||
+ | { | ||
+ | "dataSourceId": 3, | ||
+ | "nameTemplate": "", | ||
+ | "displayAttribute": null, | ||
+ | "hasMultipleValue": false, | ||
+ | "hasNullableValue": false, | ||
+ | "maxElements": null, | ||
+ | "hasServerFiltration": false, | ||
+ | "searchSettings": { | ||
+ | "maxElements": null, | ||
+ | "minInputChars": 2, | ||
+ | "searchMode": "Client", | ||
+ | "debounceMs": 300 | ||
+ | }, | ||
+ | "id": 2, | ||
+ | "caption": "Контрагенты", | ||
+ | "enable": true, | ||
+ | "visible": true, | ||
+ | "hint": null, | ||
+ | "doActionOnChangeValue": false, | ||
+ | "onAfterChangeValueConditionalActions": null, | ||
+ | "onAfterChangeValueByClientConditionalActions": null, | ||
+ | "rebuildDependentsObjectOnChange": true, | ||
+ | "enableRuleIds": [], | ||
+ | "visibleRuleIds": [], | ||
+ | "access": null, | ||
+ | "isValueChanged": false, | ||
+ | "expressionId": null, | ||
+ | "discriminator": "DictionarySourceEntry" | ||
+ | } | ||
+ | ], | ||
+ | "entryDataSources": [ | ||
+ | { | ||
+ | "dictionaryId": 10754, | ||
+ | "hierarchyId": null, | ||
+ | "filter": null, | ||
+ | "sortingOptions": null, | ||
+ | "groupingOptions": null, | ||
+ | "dictionaryAttributes": null, | ||
+ | "defaultValue": [], | ||
+ | "defaultValueExpressionId": null, | ||
+ | "parameterId": null, | ||
+ | "dictionarySourceSelectionMode": "None", | ||
+ | "dataSourceAttributesAdditionsSettings": [], | ||
+ | "externalFileStorageUrl": null, | ||
+ | "filePrefix": null, | ||
+ | "defaultNewElementSettings": null, | ||
+ | "id": 2, | ||
+ | "name": "Вид контрагента", | ||
+ | "isReadOnly": true, | ||
+ | "dataEditRuleIds": [], | ||
+ | "beforeSaveDataActions": [], | ||
+ | "afterSaveDataActions": [], | ||
+ | "discriminator": "DictionaryDataSource" | ||
+ | }, | ||
+ | { | ||
+ | "dictionaryId": 10755, | ||
+ | "hierarchyId": null, | ||
+ | "filter": { | ||
+ | "type": "And", | ||
+ | "filters": [ | ||
+ | { | ||
+ | "dictionaryEntrySourceId": 2, | ||
+ | "sourceAttribute": { | ||
+ | "id": 1, | ||
+ | "discriminator": "OwnAttributeDefinitionDto" | ||
+ | }, | ||
+ | "attribute": { | ||
+ | "id": 21, | ||
+ | "discriminator": "OwnAttributeDefinitionDto" | ||
+ | }, | ||
+ | "conditionType": "AttributeInCollection", | ||
+ | "inversion": false, | ||
+ | "conditionId": null, | ||
+ | "discriminator": "EntryFilterDto" | ||
+ | }, | ||
+ | { | ||
+ | "value": "true", | ||
+ | "attributeId": 22, | ||
+ | "attribute": null, | ||
+ | "conditionType": "AttributeInCollection", | ||
+ | "inversion": false, | ||
+ | "conditionId": null, | ||
+ | "discriminator": "ValueConditionalDictionaryFilterDto" | ||
+ | } | ||
+ | ], | ||
+ | "inversion": false, | ||
+ | "discriminator": "CompoundDictionaryFilterDto" | ||
+ | }, | ||
+ | "sortingOptions": null, | ||
+ | "groupingOptions": null, | ||
+ | "dictionaryAttributes": [], | ||
+ | "defaultValue": [], | ||
+ | "defaultValueExpressionId": null, | ||
+ | "parameterId": null, | ||
+ | "dictionarySourceSelectionMode": "None", | ||
+ | "dataSourceAttributesAdditionsSettings": [], | ||
+ | "externalFileStorageUrl": null, | ||
+ | "filePrefix": null, | ||
+ | "defaultNewElementSettings": null, | ||
+ | "id": 3, | ||
+ | "name": "Контрагенты", | ||
+ | "isReadOnly": true, | ||
+ | "dataEditRuleIds": [], | ||
+ | "beforeSaveDataActions": [], | ||
+ | "afterSaveDataActions": [], | ||
+ | "discriminator": "DictionaryDataSource" | ||
+ | } | ||
+ | ], | ||
+ | "parameters": [], | ||
+ | "binaryConditionsRules": [], | ||
+ | "submitValidateRules": [], | ||
+ | "expressions": [], | ||
+ | "controlsValueCalculateRules": [], | ||
+ | "actions": [], | ||
+ | "conditionActionIdsOnOpen": [], | ||
+ | "conditionalActions": [], | ||
+ | "selectionSets": [], | ||
+ | "reportTemplates": [], | ||
+ | "useNewDependenciesBuilder": null | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | </div></div> |
Версия 13:07, 19 апреля 2021
!!! СТРАНИЦА НАХОДИТСЯ В РАЗРАБОТКЕ!!!
На практике часто необходимо отфильтровывать данные несколькими фильтрами, для это используется тип фильтра CompoundDictionaryFilterDto. В нем обязательно указывается тип объединения фильтров - выбрать только те элементы, которые удовлетворяют всем вложенным фильтрам одновременно (And), либо выбрать элементы, которые удовлетворяют хотя бы одному вложенному фильтру (Or).
Далее идет блок "filters", где описывается каждый вложенный фильтр. Необходимо отметить, что в структуре этих вложенных фильтров опущено конструкция "filter": {...}, они начинаются сразу с непосредственного описания (подробнее см. в примере).
1 "filter": {
2 "type": "And",
3 "filters": [
4 {...},
5 {...},
6 ],
7 "inversion": false,
8 "discriminator": "CompoundDictionaryFilterDto"
9 }
Описание свойств фильтра
Свойство | Описание |
---|---|
type | Тип And - выбор элементов, удовлетворяющих одновременно всем описанным фильтрам. Тип Or - выберутся элементы, которые удовлетворяют хотя бы одному из описанных фильтров. |
inversion | В значении "false" фильтр отберет удовлетворяющие ему значения, в значении "true" - все значения, которые наоборот не удовлетворяют ему |
discriminator | CompoundDictionaryFilterDto |
Пример:
Справочник "Контрагенты" содержит имя контрагента, его вид и логическую отметку о статусе - действующий или нет.
Создан фильтр, который выбирает контрагенты определенного вида и статуса - действующий.
1 {
2 "id": 10735,
3 "name": "Пример фильтра от справочника (EntryFilterDto)",
4 "description": null,
5 "title": "Пример фильтрации_справочник от справочника",
6 "entrySettings": null,
7 "uiSources": [
8 {
9 "dataSourceId": 2,
10 "nameTemplate": "",
11 "displayAttribute": null,
12 "hasMultipleValue": false,
13 "hasNullableValue": false,
14 "maxElements": null,
15 "hasServerFiltration": false,
16 "searchSettings": {
17 "maxElements": null,
18 "minInputChars": 2,
19 "searchMode": "Client",
20 "debounceMs": 300
21 },
22 "id": 1,
23 "caption": "Вид контрагента",
24 "enable": true,
25 "visible": true,
26 "hint": null,
27 "doActionOnChangeValue": true,
28 "onAfterChangeValueConditionalActions": null,
29 "onAfterChangeValueByClientConditionalActions": null,
30 "rebuildDependentsObjectOnChange": true,
31 "enableRuleIds": [],
32 "visibleRuleIds": [],
33 "access": null,
34 "isValueChanged": true,
35 "expressionId": null,
36 "discriminator": "DictionarySourceEntry"
37 },
38 {
39 "dataSourceId": 3,
40 "nameTemplate": "",
41 "displayAttribute": null,
42 "hasMultipleValue": false,
43 "hasNullableValue": false,
44 "maxElements": null,
45 "hasServerFiltration": false,
46 "searchSettings": {
47 "maxElements": null,
48 "minInputChars": 2,
49 "searchMode": "Client",
50 "debounceMs": 300
51 },
52 "id": 2,
53 "caption": "Контрагенты",
54 "enable": true,
55 "visible": true,
56 "hint": null,
57 "doActionOnChangeValue": false,
58 "onAfterChangeValueConditionalActions": null,
59 "onAfterChangeValueByClientConditionalActions": null,
60 "rebuildDependentsObjectOnChange": true,
61 "enableRuleIds": [],
62 "visibleRuleIds": [],
63 "access": null,
64 "isValueChanged": false,
65 "expressionId": null,
66 "discriminator": "DictionarySourceEntry"
67 }
68 ],
69 "entryDataSources": [
70 {
71 "dictionaryId": 10754,
72 "hierarchyId": null,
73 "filter": null,
74 "sortingOptions": null,
75 "groupingOptions": null,
76 "dictionaryAttributes": null,
77 "defaultValue": [],
78 "defaultValueExpressionId": null,
79 "parameterId": null,
80 "dictionarySourceSelectionMode": "None",
81 "dataSourceAttributesAdditionsSettings": [],
82 "externalFileStorageUrl": null,
83 "filePrefix": null,
84 "defaultNewElementSettings": null,
85 "id": 2,
86 "name": "Вид контрагента",
87 "isReadOnly": true,
88 "dataEditRuleIds": [],
89 "beforeSaveDataActions": [],
90 "afterSaveDataActions": [],
91 "discriminator": "DictionaryDataSource"
92 },
93 {
94 "dictionaryId": 10755,
95 "hierarchyId": null,
96 "filter": {
97 "type": "And",
98 "filters": [
99 {
100 "dictionaryEntrySourceId": 2,
101 "sourceAttribute": {
102 "id": 1,
103 "discriminator": "OwnAttributeDefinitionDto"
104 },
105 "attribute": {
106 "id": 21,
107 "discriminator": "OwnAttributeDefinitionDto"
108 },
109 "conditionType": "AttributeInCollection",
110 "inversion": false,
111 "conditionId": null,
112 "discriminator": "EntryFilterDto"
113 },
114 {
115 "value": "true",
116 "attributeId": 22,
117 "attribute": null,
118 "conditionType": "AttributeInCollection",
119 "inversion": false,
120 "conditionId": null,
121 "discriminator": "ValueConditionalDictionaryFilterDto"
122 }
123 ],
124 "inversion": false,
125 "discriminator": "CompoundDictionaryFilterDto"
126 },
127 "sortingOptions": null,
128 "groupingOptions": null,
129 "dictionaryAttributes": [],
130 "defaultValue": [],
131 "defaultValueExpressionId": null,
132 "parameterId": null,
133 "dictionarySourceSelectionMode": "None",
134 "dataSourceAttributesAdditionsSettings": [],
135 "externalFileStorageUrl": null,
136 "filePrefix": null,
137 "defaultNewElementSettings": null,
138 "id": 3,
139 "name": "Контрагенты",
140 "isReadOnly": true,
141 "dataEditRuleIds": [],
142 "beforeSaveDataActions": [],
143 "afterSaveDataActions": [],
144 "discriminator": "DictionaryDataSource"
145 }
146 ],
147 "parameters": [],
148 "binaryConditionsRules": [],
149 "submitValidateRules": [],
150 "expressions": [],
151 "controlsValueCalculateRules": [],
152 "actions": [],
153 "conditionActionIdsOnOpen": [],
154 "conditionalActions": [],
155 "selectionSets": [],
156 "reportTemplates": [],
157 "useNewDependenciesBuilder": null
158 }