Платформа 3V/Формы/Источники данных/Справочник/Фильтрация/От другого справочника
Фильтр EntryFilterDto позволяет выбрать данные в справочнике относительно другого связного справочника. Элементы одного справочника будут отображаться в зависимости от выбранных элементов другого справочника. Элемент "filter" добавляется в источник, который необходимо отфильтровать. Фильтр имеет следующую структуру:
1 "filter": {
2 "dictionaryEntrySourceId": 2,
3 "sourceAttribute": {
4 "id": 21,
5 "discriminator": "OwnAttributeDefinitionDto"
6 },
7 "attribute": {
8 "id": 1,
9 "discriminator": "OwnAttributeDefinitionDto"
10 },
11 "conditionType": "AttributeInCollection",
12 "inversion": false,
13 "conditionId": null,
14 "discriminator": "EntryFilterDto"
15 }
Описание свойств фильтра
Свойство | Описание |
---|---|
dictionaryEntrySourceId | Id источника - справочника, от значений которого будут фильтроваться данные |
sourceAttribute | Атрибут справочника, от значений которого будут фильтроваться данные |
attribute | Атрибут текущего источника, с которым связано значение справочника от которого идет фильтрация. Указывается номер Id и тип атрибута в данном случае собственный (OwnAttributeDefinitionDto), так как используются данные текущего справочника. |
discriminator | EntryFilterDto |
conditionType | Тип условий |
inversion | В значении "false" фильтр отберет удовлетворяющие ему значения, в значении "true" - все значения, которые наоборот не удовлетворяют ему |
conditionId | Условия, при которых применяется фильтр |
Пример:
Справочник "Контрагенты" содержит связный атрибут "Виды контрагентов". Можно создать клиентскую карточку в которой, при выборе из выпадающего списка "Вида контрагентов", элементы следующего выпадающего списка "Контрагенты" будут только выбранного виду.
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 "uiDataSource": {
28 "attribute": {
29 "id": 21,
30 "discriminator": "OwnAttributeDefinitionDto"
31 },
32 "attributeId": null,
33 "sourceId": 1,
34 "discriminator": "UiDataSourceDictionary"
35 },
36 "doActionOnChangeValue": true,
37 "onAfterChangeValueConditionalActions": null,
38 "onAfterChangeValueByClientConditionalActions": null,
39 "rebuildDependentsObjectOnChange": true,
40 "enableRuleIds": [],
41 "visibleRuleIds": [],
42 "access": null,
43 "isValueChanged": true,
44 "expressionId": null,
45 "discriminator": "DictionarySourceEntry"
46 },
47 {
48 "dataSourceId": 3,
49 "nameTemplate": "",
50 "displayAttribute": null,
51 "hasMultipleValue": false,
52 "hasNullableValue": false,
53 "maxElements": null,
54 "hasServerFiltration": false,
55 "searchSettings": {
56 "maxElements": null,
57 "minInputChars": 2,
58 "searchMode": "Client",
59 "debounceMs": 300
60 },
61 "id": 2,
62 "caption": "Контрагенты",
63 "enable": true,
64 "visible": true,
65 "hint": null,
66 "uiDataSource": {
67 "attribute": {
68 "id": 2,
69 "discriminator": "OwnAttributeDefinitionDto"
70 },
71 "attributeId": null,
72 "sourceId": 1,
73 "discriminator": "UiDataSourceDictionary"
74 },
75 "doActionOnChangeValue": false,
76 "onAfterChangeValueConditionalActions": null,
77 "onAfterChangeValueByClientConditionalActions": null,
78 "rebuildDependentsObjectOnChange": true,
79 "enableRuleIds": [],
80 "visibleRuleIds": [],
81 "access": null,
82 "isValueChanged": false,
83 "expressionId": null,
84 "discriminator": "DictionarySourceEntry"
85 }
86 ],
87 "entryDataSources": [
88 {
89 "dictionaryId": 10736,
90 "hierarchyId": null,
91 "filter": null,
92 "sortingOptions": null,
93 "groupingOptions": null,
94 "dictionaryAttributes": null,
95 "defaultValue": [],
96 "defaultValueExpressionId": null,
97 "parameterId": null,
98 "dictionarySourceSelectionMode": "None",
99 "dataSourceAttributesAdditionsSettings": [],
100 "externalFileStorageUrl": null,
101 "filePrefix": null,
102 "defaultNewElementSettings": null,
103 "id": 1,
104 "name": "Справочник",
105 "isReadOnly": false,
106 "dataEditRuleIds": [],
107 "beforeSaveDataActions": [],
108 "afterSaveDataActions": [],
109 "discriminator": "DictionaryDataSource"
110 },
111 {
112 "dictionaryId": 10754,
113 "hierarchyId": null,
114 "filter": null,
115 "sortingOptions": null,
116 "groupingOptions": null,
117 "dictionaryAttributes": null,
118 "defaultValue": [],
119 "defaultValueExpressionId": null,
120 "parameterId": null,
121 "dictionarySourceSelectionMode": "None",
122 "dataSourceAttributesAdditionsSettings": [],
123 "externalFileStorageUrl": null,
124 "filePrefix": null,
125 "defaultNewElementSettings": null,
126 "id": 2,
127 "name": "Вид контрагента",
128 "isReadOnly": true,
129 "dataEditRuleIds": [],
130 "beforeSaveDataActions": [],
131 "afterSaveDataActions": [],
132 "discriminator": "DictionaryDataSource"
133 },
134 {
135 "dictionaryId": 10755,
136 "hierarchyId": null,
137 "filter": {
138 "dictionaryEntrySourceId": 2,
139 "sourceAttribute": {
140 "id": 1,
141 "discriminator": "OwnAttributeDefinitionDto"
142 },
143 "attribute": {
144 "id": 21,
145 "discriminator": "OwnAttributeDefinitionDto"
146 },
147 "conditionType": "AttributeInCollection",
148 "inversion": false,
149 "conditionId": null,
150 "discriminator": "EntryFilterDto"
151 },
152 "sortingOptions": null,
153 "groupingOptions": null,
154 "dictionaryAttributes": [],
155 "defaultValue": [],
156 "defaultValueExpressionId": null,
157 "parameterId": null,
158 "dictionarySourceSelectionMode": "None",
159 "dataSourceAttributesAdditionsSettings": [],
160 "externalFileStorageUrl": null,
161 "filePrefix": null,
162 "defaultNewElementSettings": null,
163 "id": 3,
164 "name": "Контрагенты",
165 "isReadOnly": true,
166 "dataEditRuleIds": [],
167 "beforeSaveDataActions": [],
168 "afterSaveDataActions": [],
169 "discriminator": "DictionaryDataSource"
170 }
171 ],
172 "parameters": [],
173 "binaryConditionsRules": [],
174 "submitValidateRules": [],
175 "expressions": [],
176 "controlsValueCalculateRules": [],
177 "actions": [],
178 "conditionActionIdsOnOpen": [],
179 "conditionalActions": [],
180 "selectionSets": [],
181 "reportTemplates": [],
182 "useNewDependenciesBuilder": null
183 }
Два контрола (uiSources): Вид контрагента (id=1) и Контрагенты (id=2). Три источника (entryDataSources): Справочник, куда данные будут записываться (id=1), справочник видов контроля (id=2, "dictionaryId": 10754,) и справочник Контрагентов (id=3, "dictionaryId": 10755).
В источник "Контрагенты" добавлен фильтр, в котором указан "dictionaryEntrySourceId": 2 - справочник видов контроля от значений которого идет фильтрация, далее указан номер атрибута справочника Контрагенты (id=1), в данном случае мы сравниваем по первому атрибуту - идентификатору. Далее обозначен атрибут текущего источника, справочника "Контрагенты", с которым мы сравниваем и в котором указан вид (id=21).
1 "filter": {
2 "dictionaryEntrySourceId": 2,
3 "sourceAttribute": {
4 "id": 1,
5 "discriminator": "OwnAttributeDefinitionDto"
6 },
7 "attribute": {
8 "id": 21,
9 "discriminator": "OwnAttributeDefinitionDto"
10 },
11 "conditionType": "AttributeInCollection",
12 "inversion": false,
13 "conditionId": null,
14 "discriminator": "EntryFilterDto"
15 },