Фильтр атрибута справочника по нескольким фильтрам

Материал из 3v-wiki
Перейти к навигации Перейти к поиску

Фильтр, который в выпадающем списке выберет из справочника элементы, которые удовлетворяют условиям сразу нескольких фильтров. В нем обязательно указывается тип объединения фильтров - выбрать только те элементы, которые удовлетворяют всем вложенным фильтрам одновременно (And), либо выбрать элементы, которые удовлетворяют хотя бы одному вложенному фильтру (Or).

1    "filter": {
2               "type": "Or",
3               "filters": [
4                 {...},
5                 {...}
6               ],
7               "inversion": false,
8               "discriminator": "CompoundDictionaryFilterDto"
9             },

Описание свойств фильтра

Свойство Описание
type Тип And - выбор элементов, удовлетворяющих одновременно всем описанным фильтрам.
Тип Or - выбор элементов, которые удовлетворяют хотя бы одному из описанных фильтров.
filters Перечень фильтров, по которым должна происходить выборка элементов
inversion В значении "false" справочник принимает значения, которые удовлетворяют фильтру, в значении "true" - все значения, которые наоборот не удовлетворяют ему
discriminator CompoundDictionaryFilterDto

Пример использования

Кейс: В выпадающем списке отчета "Виды древесины" должны быть представлены элементы, которые выбраны в параметре "Виды древесины" отчета (id параметра = 1) и всегда должен быть отмечен элемент "Береза" (id=4), но при этом список элементов в боковике должен оставаться без фильтрации. Также из самого параметра отчета элемент "Береза" был убран

по нескольким фильтрам.jpg
JSON отчета
  1 {
  2   "workflowId": null,
  3   "leftHeader": {
  4     "useLazyDataLoadingStrategy": false,
  5     "dictionaries": [
  6       {
  7         "showDataIfAbsentFilter": null,
  8         "coordAttribute": null,
  9         "cartesianOptions": "Default",
 10         "canSelectAttribute": null,
 11         "groupingOptions": null,
 12         "groupingMethod": "Default",
 13         "sortingOptions": null,
 14         "rootElement": null,
 15         "virtualElements": null,
 16         "displayValueOptions": null,
 17         "displayAttribute": null,
 18         "dictionaryId": 135,
 19         "filter": null,
 20         "selection": null,
 21         "hierarchyId": null,
 22         "limit": null
 23       }
 24     ],
 25     "dictionaryAttributesLinks": [],
 26     "specialFilters": {
 27       "filtersByDataOptions": {
 28         "filtersByData": [],
 29         "needRestoreFullHierachy": false,
 30         "joinOption": "Or",
 31         "restoreElements": null
 32       },
 33       "dictionaryAttributesLinks": [],
 34       "needRestoreFullHierachy": false,
 35       "restoreElements": null
 36     },
 37     "isEditable": false
 38   },
 39   "topHeader": {
 40     "topHeaderItems": [
 41       {
 42         "dictionaryAttributes": [
 43           {
 44             "dictionaryId": 135,
 45             "attribute": {
 46               "id": 2,
 47               "discriminator": "OwnAttributeDefinitionDto"
 48             },
 49             "filter": null,
 50             "sortingOptions": null,
 51             "attributeId": null,
 52             "displayAttributeType": "AttributeName",
 53             "displayAttributeName": null,
 54             "addFirstElementValue": false,
 55             "overwriteNotFirstElementValues": true,
 56             "delimiter": ", ",
 57             "hideAttributeNameInHeader": false,
 58             "headerNameDelimiter": " / ",
 59             "duplicateValuesForNextDictionaries": true,
 60             "duplicateValuesForNextRows": true,
 61             "displayValueOptions": null,
 62             "linkedAttributeSettings": null,
 63             "skippedFilterAttributesByLink": [],
 64             "filterOptionsByLinks": null
 65           }
 66         ],
 67         "settings": null,
 68         "hyperlinkOptions": null,
 69         "hasImage": false,
 70         "columnOptions": null,
 71         "discriminator": "AttributeHeaderItemDto"
 72       },
 73       {
 74         "dictionaryAttributes": [
 75           {
 76             "dictionaryId": 135,
 77             "attribute": {
 78               "id": 21,
 79               "discriminator": "OwnAttributeDefinitionDto"
 80             },
 81             "filter": {
 82               "type": "Or",
 83               "filters": [
 84                 {
 85                   "value": [
 86                     4
 87                   ],
 88                   "skipIfValueNull": false,
 89                   "attributeId": null,
 90                   "attribute": {
 91                     "id": 1,
 92                     "discriminator": "OwnAttributeDefinitionDto"
 93                   },
 94                   "conditionType": "AttributeEqualConstant",
 95                   "inversion": false,
 96                   "discriminator": "ValueConditionalDictionaryFilterDto"
 97                 },
 98                 {
 99                   "parameterFilterOptions": {
100                     "attribute": {
101                       "id": 1,
102                       "discriminator": "OwnAttributeDefinitionDto"
103                     }
104                   },
105                   "value": {
106                     "id": 1,
107                     "name": null
108                   },
109                   "skipIfValueNull": false,
110                   "attributeId": null,
111                   "attribute": {
112                     "id": 1,
113                     "discriminator": "OwnAttributeDefinitionDto"
114                   },
115                   "conditionType": "AttributeInCollection",
116                   "inversion": false,
117                   "discriminator": "ParameterConditionalDictionaryFilterDto"
118                 }
119               ],
120               "inversion": false,
121               "discriminator": "CompoundDictionaryFilterDto"
122             },
123             "sortingOptions": null,
124             "attributeId": null,
125             "displayAttributeType": "AttributeName",
126             "displayAttributeName": null,
127             "addFirstElementValue": false,
128             "overwriteNotFirstElementValues": true,
129             "delimiter": ", ",
130             "hideAttributeNameInHeader": false,
131             "headerNameDelimiter": " / ",
132             "duplicateValuesForNextDictionaries": true,
133             "duplicateValuesForNextRows": true,
134             "displayValueOptions": null,
135             "linkedAttributeSettings": null,
136             "skippedFilterAttributesByLink": [],
137             "filterOptionsByLinks": null
138           }
139         ],
140         "settings": null,
141         "hyperlinkOptions": null,
142         "hasImage": false,
143         "columnOptions": {
144           "width": null,
145           "format": null,
146           "dataControlOptions": {
147             "format": null,
148             "mask": null,
149             "min": null,
150             "max": null,
151             "component": null,
152             "searchSettings": null
153           },
154           "isReadOnly": null,
155           "displayDuplicatedValues": null,
156           "duplicateValueOptions": "Undefined",
157           "allowChangeColumnValue": null,
158           "singleValueColumn": null,
159           "hyperlinkOptions": null,
160           "imageType": "None",
161           "absentDictionariesOptions": null
162         },
163         "discriminator": "AttributeHeaderItemDto"
164       }
165     ],
166     "needFilterAttributesByLinks": false,
167     "enableFilterByLinks": false,
168     "numerationSettings": null,
169     "filterOptions": null
170   },
171   "parameters": [
172     {
173       "dictionaryId": 0,
174       "sortingOptions": null,
175       "displayValueOptions": null,
176       "options": {
177         "groupingOptions": null,
178         "groupingMethod": "Default",
179         "sortingOptions": null,
180         "rootElement": null,
181         "virtualElements": null,
182         "displayValueOptions": null,
183         "displayAttribute": null,
184         "dictionaryId": 132,
185         "filter": {
186           "value": [
187             4
188           ],
189           "skipIfValueNull": false,
190           "attributeId": null,
191           "attribute": {
192             "id": 1,
193             "discriminator": "OwnAttributeDefinitionDto"
194           },
195           "conditionType": "AttributeEqualConstant",
196           "inversion": true,
197           "discriminator": "ValueConditionalDictionaryFilterDto"
198         },
199         "selection": null,
200         "hierarchyId": null,
201         "limit": null
202       },
203       "attributeValues": null,
204       "selectionFilter": null,
205       "defaultValue": [
206         1,
207         2,
208         3
209       ],
210       "value": [
211         1,
212         2,
213         3
214       ],
215       "isMultiselect": true,
216       "isEmptyValuePossible": false,
217       "isDisableable": false,
218       "isDisabled": false,
219       "dataControlOptions": null,
220       "id": 1,
221       "name": "Виды древесины",
222       "discriminator": "DictionaryParameterDto"
223     }
224   ],
225   "styles": [],
226   "styleOptions": [],
227   "stylesTemplate": [],
228   "filtersByDataOptions": null,
229   "view": null,
230   "externalExecutions": null,
231   "settings": null,
232   "code": "P_COMPOUND_FILERS",
233   "id": 151,
234   "name": "От нескольких фильтров"
235 }