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

Материал из 3v-wiki
Перейти к навигации Перейти к поиску
 
(не показано 14 промежуточных версий 2 участников)
Строка 1: Строка 1:
== СТРАНИЦА НАХОДИТСЯ В РАЗРАБОТКЕ ==
+
Фильтр EntryParameterFilter позволяет выбрать данные в справочнике по [[Платформа_3V/Формы/Параметры_формы|'''заданному параметру''']]. Например, выбрать элемент справочника с конкретным id. Элемент "filter" добавляется в источник, который необходимо отфильтровать. Фильтр имеет следующую структуру:
Фильтр EntryParameterFilterDto позволяет выбрать данные в справочнике по [[Платформа_3V/Формы/Параметры_формы|'''заданному параметру''']]. Например, выбрать элемент справочника с конкретным id. Элемент "filter" добавляется в источник, который необходимо отфильтровать. Фильтр имеет следующую структуру:
 
 
<syntaxhighlight lang="JSON" line>
 
<syntaxhighlight lang="JSON" line>
 
"filter": {
 
"filter": {
Строка 11: Строка 10:
 
         "inversion": false,
 
         "inversion": false,
 
         "conditionId": null,
 
         "conditionId": null,
         "discriminator": "EntryParameterFilterDto"
+
         "discriminator": "EntryParameterFilter"
 
       }
 
       }
 
</syntaxhighlight>
 
</syntaxhighlight>
Строка 24: Строка 23:
 
| attribute|| [[Платформа_3V/Справочник/Связи_атрибутов_справочников|''' Атрибут''']] текущего источника - справочника, элемент которого будет выбран по заданному параметру. Указывается номер Id и тип атрибута в данном случае собственный (OwnAttributeDefinitionDto), так как используются данные текущего справочника.  
 
| attribute|| [[Платформа_3V/Справочник/Связи_атрибутов_справочников|''' Атрибут''']] текущего источника - справочника, элемент которого будет выбран по заданному параметру. Указывается номер Id и тип атрибута в данном случае собственный (OwnAttributeDefinitionDto), так как используются данные текущего справочника.  
 
|-
 
|-
| discriminator|| EntryParameterFilterDto
+
| discriminator|| EntryParameterFilter
 
|-
 
|-
 
| conditionType || Тип условий
 
| conditionType || Тип условий
 
|-  
 
|-  
| inversion || В значении "false" фильтр отберет удовлетворяющие ему значения, в значении "true" - все значения, которые наоборот не удовлетворяют ему
+
| inversion || В значении "false" источник-справочник принимает значения, которые удовлетворяют фильтру, в значении "true" - все значения, которые наоборот не удовлетворяют ему
 
|-  
 
|-  
 
| conditionId || [[Платформа_3V/Формы/Правила| '''Условия''']], при которых применяется фильтр  
 
| conditionId || [[Платформа_3V/Формы/Правила| '''Условия''']], при которых применяется фильтр  
Строка 42: Строка 41:
 
   ]
 
   ]
 
</syntaxhighlight>
 
</syntaxhighlight>
Где id=1, соответствуют номеру, который указан в parameterId.  
+
Где id=1, соответствуют номеру, который указан в parameterId.
 +
 
 
== Особенности работы карточек с фильтром по параметру==
 
== Особенности работы карточек с фильтром по параметру==
Фильтр EntryParameterFilterDto предполагает два сценария работы карточки:<br>
+
Фильтр EntryParameterFilter предполагает два сценария работы карточки:<br>
1. Выбери записи справочника по параметру,<br>
+
1. Выбор элемента справочника по параметру,<br>
 
2. Запись новых элементов справочника.<br>
 
2. Запись новых элементов справочника.<br>
Если в карточку приходит не пустое значение параметра, но отрабатывается первый сценарий, если же значение параметра пустое, то карточка откроется на редактирование, и в справочнике можно будет создаваться новый элемент, при условии, что свойство справочника "агаisReadOnly" имеет значение "false".
+
Если в карточку приходит не пустое значение параметра, но отрабатывается первый сценарий, если же значение параметра пустое, то карточка откроется на редактирование, и в справочнике можно будет создать новый элемент, при условии что свойство справочника "isReadOnly" имеет значение "false".
  
 
==Пример==
 
==Пример==
Показать запись из справочника "Контрагенты" по параметру ParameterId=1.  
+
Пользовательская карточка состоит из двух основных элементов - выпадающий список "Вид контрагента" и поле для записи "Контрагенты".
В пользовательскую карточку приходит значение параметра, в данном случае оно задано по умолчанию, справочник "Контрагенты" фильтруется по данному параметру и показывает соответствующую запись.  
+
В серверной карточке три контрола: кнопка "Сохранить" (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 class="toccolours mw-collapsible mw-collapsed" style="width:800px; overflow:auto;">
Строка 61: Строка 79:
 
   "name": "Пример фильтра от справочника (EntryFilterDto)",
 
   "name": "Пример фильтра от справочника (EntryFilterDto)",
 
   "description": null,
 
   "description": null,
   "title": "Пример фильтрации_справочник от справочника",
+
   "title": "Пример фильтрации по параметру",
 
   "entrySettings": null,
 
   "entrySettings": null,
 
   "uiSources": [
 
   "uiSources": [
Строка 194: Строка 212:
 
         "inversion": false,
 
         "inversion": false,
 
         "conditionId": null,
 
         "conditionId": null,
         "discriminator": "EntryParameterFilterDto"
+
         "discriminator": "EntryParameterFilter"
 
       },
 
       },
 
       "sortingOptions": null,
 
       "sortingOptions": null,

Текущая версия на 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", то есть в него можно записывать данные.

Первый сценарий работы карточки "Выбор записи справочника по параметру"

Screenshot 2021-04-15 at 13.41.05.png


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














Второй сценарий работы карточки "Запись новых элементов"

Screenshot 2021-04-15 at 13.45.11.png


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














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