Платформа 3V/Формы/Источники данных/Справочник/Фильтрация/От другого справочника: различия между версиями

Материал из 3v-wiki
Перейти к навигации Перейти к поиску
Строка 33: Строка 33:
 
| conditionType || Тип условий
 
| conditionType || Тип условий
 
|-  
 
|-  
| inversion || В значении "false" фильтр отберет удовлетворяющие ему значения, в значении "true" - все значения, которые наоборот не удовлетворяют ему
+
| inversion || В значении "false" источник-справочник принимает значения, которые удовлетворяют фильтру, в значении "true" - все значения, которые наоборот не удовлетворяют ему
 
|-  
 
|-  
 
| conditionId || [[Платформа_3V/Формы/Правила| '''Условия''']], при которых применяется фильтр  
 
| conditionId || [[Платформа_3V/Формы/Правила| '''Условия''']], при которых применяется фильтр  

Версия 14:23, 22 апреля 2021

Фильтр 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 Условия, при которых применяется фильтр

Пример:

Справочник "Контрагенты" содержит связный атрибут "Виды контрагентов". Можно создать клиентскую карточку в которой, при выборе из выпадающего списка "Вида контрагентов", элементы следующего выпадающего списка "Контрагенты" будут только выбранного виду.

Screenshot 2021-04-15 at 10.34.19.png















JSON серверной карточки
  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       },