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