Блокировка для выбора элементов в выпадающих списках

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

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

справочник в боковике.jpg

Общий кейс: В отчете, в котором редактируется и отображается информация об объеме использования заводами определенных продуктов, необходимо заблокировать для выбора не актуальные продукты, но при этом информация, которая была ранее внесена, даже на не актуальные продукты, должна отображаться в отчете.

Блокировка элементов справочника в боковике

"leftHeader": {...}
 1 "dictionaries": [
 2 		{
 3 			...	
 4 			"canSelectAttribute": {
 5 				"id": 22,
 6 				"discriminator": "OwnAttributeDefinitionDto"
 7 			},
 8 			...
 9 		}
10 	]

Данная информация об объеме использования заводами определенных продуктов хранится в показателе (измерения показателя: производства, продукты, факт: объем использования).

показатель.jpg

В боковике отчета находится справочник производств (отфильтрованный от параметра для просмотра информации одновременно только по одному заводу) и справочник продуктов.

блокировка. показатель. конструктор.jpg

Также выполнена фильтрация по данным показателя, для того, чтобы отображались только те строки, в которых есть данные. Далее необходимо, чтобы в справочнике "Продукты" не заблокированными оставались только элементы, которые имеют значение TRUE по следующей связи справочников: у каждого продукта есть тип "Глобальный", "Локальный" или "Архивный", а у каждого типа есть информация о доступности выбора данного типа продукта. Соответствующие справочники выглядят следующим образом:

Справочник "Продукты"

Наименование (id=2) Тип продукта (id=21)
Катализатор 1 Глобальный
Катализатор 2 Глобальный
... ...
Архив Катализатор Архивный

Справочник "Типы элементов"

Наименование (id=2) Доступность выбора (id=21)
Глобальный TRUE
Локальный TRUE
Архивный FALSE

Для данного кейса настройка "canSelectAttribute":{} будет выглядеть следующим образом:

"dictionaries": [...]
 1  {
 2         "showDataIfAbsentFilter": null,
 3         "coordAttribute": null,
 4         "cartesianOptions": "Default",
 5         "groupingOptions": null,
 6         "groupingMethod": "Default",
 7         "sortingOptions": null,
 8         "rootElement": null,
 9         "virtualElements": null,
10         "displayValueOptions": null,
11         "displayAttribute": null,
12         "dictionaryId": 154,
13         "filter": null,
14         "canSelectAttribute": {
15           "innerAttribute": {
16             "id": 21,
17             "discriminator": "OwnAttributeDefinitionDto"
18           },
19           "id": 21,
20           "discriminator": "TransitiveAttributeDefinitionDto"
21         },
22         "selection": null,
23         "hierarchyId": null,
24         "limit": null
25       }
справочник в боковике.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": 159,
 19         "filter": {
 20           "parameterFilterOptions": {
 21             "attribute": {
 22               "id": 1,
 23               "discriminator": "OwnAttributeDefinitionDto"
 24             }
 25           },
 26           "value": {
 27             "id": 1,
 28             "name": null
 29           },
 30           "skipIfValueNull": false,
 31           "attributeId": null,
 32           "attribute": {
 33             "id": 1,
 34             "discriminator": "OwnAttributeDefinitionDto"
 35           },
 36           "conditionType": "AttributeInCollection",
 37           "inversion": false,
 38           "discriminator": "ParameterConditionalDictionaryFilterDto"
 39         },
 40         "selection": null,
 41         "hierarchyId": null,
 42         "limit": null
 43       },
 44       {
 45         "showDataIfAbsentFilter": null,
 46         "coordAttribute": null,
 47         "cartesianOptions": "Default",
 48         "canSelectAttribute": {
 49           "innerAttribute": {
 50             "id": 21,
 51             "discriminator": "OwnAttributeDefinitionDto"
 52           },
 53           "id": 21,
 54           "discriminator": "TransitiveAttributeDefinitionDto"
 55         },
 56         "groupingOptions": null,
 57         "groupingMethod": "Default",
 58         "sortingOptions": null,
 59         "rootElement": null,
 60         "virtualElements": null,
 61         "displayValueOptions": null,
 62         "displayAttribute": null,
 63         "dictionaryId": 154,
 64         "filter": null,
 65         "selection": null,
 66         "hierarchyId": null,
 67         "limit": null
 68       }
 69     ],
 70     "dictionaryAttributesLinks": [],
 71     "specialFilters": {
 72       "filtersByDataOptions": {
 73         "filtersByData": [
 74           {
 75             "indicatorId": 157,
 76             "filterOptions": [
 77               {
 78                 "dictionaryId": 155,
 79                 "filter": {
 80                   "value": null,
 81                   "skipIfValueNull": false,
 82                   "attributeId": null,
 83                   "attribute": null,
 84                   "conditionType": "AllElements",
 85                   "inversion": false,
 86                   "discriminator": "ValueConditionalDictionaryFilterDto"
 87                 },
 88                 "selection": null,
 89                 "hierarchyId": null,
 90                 "limit": null
 91               }
 92             ],
 93             "takeHeadersSelectionIfAbsent": false,
 94             "dataCondition": null
 95           }
 96         ],
 97         "needRestoreFullHierachy": false,
 98         "joinOption": "Or",
 99         "restoreElements": null
100       },
101       "dictionaryAttributesLinks": [],
102       "needRestoreFullHierachy": false,
103       "restoreElements": []
104     },
105     "isEditable": true
106   },
107   "topHeader": {
108     "topHeaderItems": [
109       {
110         "dictionaryAttributes": [
111           {
112             "dictionaryId": 159,
113             "attribute": {
114               "id": 2,
115               "discriminator": "OwnAttributeDefinitionDto"
116             },
117             "filter": null,
118             "sortingOptions": null,
119             "attributeId": null,
120             "displayAttributeType": "CustomAttributeName",
121             "displayAttributeName": "Производство",
122             "addFirstElementValue": false,
123             "overwriteNotFirstElementValues": true,
124             "delimiter": ", ",
125             "hideAttributeNameInHeader": false,
126             "headerNameDelimiter": " / ",
127             "duplicateValuesForNextDictionaries": true,
128             "duplicateValuesForNextRows": true,
129             "displayValueOptions": null,
130             "linkedAttributeSettings": null,
131             "skippedFilterAttributesByLink": [],
132             "filterOptionsByLinks": null
133           }
134         ],
135         "settings": {
136           "showExpanders": false,
137           "showHierarchyIndent": false,
138           "allowsMultipleValues": null,
139           "aggregationType": "None",
140           "transformAggregationType": "None",
141           "linkedCanSelectAttribute": null
142         },
143         "hyperlinkOptions": null,
144         "hasImage": false,
145         "columnOptions": {
146           "width": null,
147           "format": null,
148           "dataControlOptions": {
149             "format": null,
150             "mask": null,
151             "min": null,
152             "max": null,
153             "component": null,
154             "searchSettings": null
155           },
156           "isReadOnly": null,
157           "displayDuplicatedValues": null,
158           "duplicateValueOptions": "Undefined",
159           "allowChangeColumnValue": null,
160           "singleValueColumn": null,
161           "hyperlinkOptions": null,
162           "imageType": "None",
163           "absentDictionariesOptions": null
164         },
165         "discriminator": "AttributeHeaderItemDto"
166       },
167       {
168         "dictionaryAttributes": [
169           {
170             "dictionaryId": 154,
171             "attribute": {
172               "id": 2,
173               "discriminator": "OwnAttributeDefinitionDto"
174             },
175             "filter": null,
176             "sortingOptions": null,
177             "attributeId": null,
178             "displayAttributeType": "CustomAttributeName",
179             "displayAttributeName": "Продукт",
180             "addFirstElementValue": false,
181             "overwriteNotFirstElementValues": true,
182             "delimiter": ", ",
183             "hideAttributeNameInHeader": false,
184             "headerNameDelimiter": " / ",
185             "duplicateValuesForNextDictionaries": true,
186             "duplicateValuesForNextRows": true,
187             "displayValueOptions": null,
188             "linkedAttributeSettings": null,
189             "skippedFilterAttributesByLink": [],
190             "filterOptionsByLinks": null
191           }
192         ],
193         "settings": null,
194         "hyperlinkOptions": null,
195         "hasImage": false,
196         "columnOptions": {
197           "width": null,
198           "format": null,
199           "dataControlOptions": {
200             "format": null,
201             "mask": null,
202             "min": null,
203             "max": null,
204             "component": null,
205             "searchSettings": null
206           },
207           "isReadOnly": null,
208           "displayDuplicatedValues": null,
209           "duplicateValueOptions": "Undefined",
210           "allowChangeColumnValue": null,
211           "singleValueColumn": null,
212           "hyperlinkOptions": null,
213           "imageType": "None",
214           "absentDictionariesOptions": null
215         },
216         "discriminator": "AttributeHeaderItemDto"
217       },
218       {
219         "indicatorId": 157,
220         "isVisible": false,
221         "dictionaries": [
222           {
223             "isVisible": null,
224             "displayAttributeId": null,
225             "elementCustomNames": [],
226             "groupingOptions": null,
227             "groupingMethod": "Default",
228             "sortingOptions": null,
229             "rootElement": null,
230             "virtualElements": null,
231             "displayValueOptions": null,
232             "displayAttribute": null,
233             "dictionaryId": 155,
234             "filter": {
235               "value": null,
236               "skipIfValueNull": false,
237               "attributeId": null,
238               "attribute": {
239                 "id": 1,
240                 "discriminator": "OwnAttributeDefinitionDto"
241               },
242               "conditionType": "AllElements",
243               "inversion": false,
244               "discriminator": "ValueConditionalDictionaryFilterDto"
245             },
246             "selection": null,
247             "hierarchyId": null,
248             "limit": null
249           }
250         ],
251         "formulas": [],
252         "aggregations": [
253           {
254             "type": "None",
255             "dictionaryFilterOptions": null
256           }
257         ],
258         "transformAggregationType": "None",
259         "hierarchyOptions": null,
260         "factOptions": null,
261         "columnOptions": {
262           "width": 200,
263           "format": null,
264           "dataControlOptions": {
265             "format": null,
266             "mask": null,
267             "min": null,
268             "max": null,
269             "component": null,
270             "searchSettings": null
271           },
272           "isReadOnly": null,
273           "displayDuplicatedValues": null,
274           "duplicateValueOptions": "Undefined",
275           "allowChangeColumnValue": null,
276           "singleValueColumn": null,
277           "hyperlinkOptions": null,
278           "imageType": "None",
279           "absentDictionariesOptions": null
280         },
281         "discriminator": "IndicatorOptionsDto"
282       }
283     ],
284     "needFilterAttributesByLinks": false,
285     "enableFilterByLinks": false,
286     "numerationSettings": null,
287     "filterOptions": null
288   },
289   "parameters": [
290     {
291       "dictionaryId": 0,
292       "sortingOptions": null,
293       "displayValueOptions": null,
294       "options": {
295         "groupingOptions": null,
296         "groupingMethod": "Default",
297         "sortingOptions": null,
298         "rootElement": null,
299         "virtualElements": null,
300         "displayValueOptions": null,
301         "displayAttribute": null,
302         "dictionaryId": 159,
303         "filter": null,
304         "selection": null,
305         "hierarchyId": null,
306         "limit": null
307       },
308       "attributeValues": null,
309       "selectionFilter": null,
310       "defaultValue": [
311         1
312       ],
313       "value": [
314         1
315       ],
316       "isMultiselect": false,
317       "isEmptyValuePossible": false,
318       "isDisableable": false,
319       "isDisabled": false,
320       "dataControlOptions": null,
321       "id": 1,
322       "name": "Производство",
323       "discriminator": "DictionaryParameterDto"
324     }
325   ],
326   "styles": [],
327   "styleOptions": [],
328   "stylesTemplate": [],
329   "filtersByDataOptions": null,
330   "view": null,
331   "externalExecutions": null,
332   "settings": null,
333   "code": "New_Pivot_8",
334   "id": 158,
335   "name": "Блокировка элементов справочника в боковике"
336 }

Блокировка элементов справочника в атрибуте, который вынесен в столбец отчета

Данная информация об объеме использования заводами определенных продуктов хранится в справочнике со следующей структурой: Справочник "Объем использования"

Наименование (Техническое) (id=2) Продукт (id=21) Производство (id=22) Объем использования (id=23)
Катализатор 1 -Завод 1 Катализатор 1 Завод 1 10,00
Архив Полипропилен - Завод 1 Архив Полипропилен Завод 1 1,00
Катализатор 2 -Завод 2 Катализатор 2 Завод 2 2,00

Для этого необходимо выполнить настройку:

1. В самом справочнике у атрибута "Продукт" (id=21), при заполнении элементами которого необходимо применить блокировку, прописать соответствующую связь атрибутов в блоке canSelect

"attributeLink": {...}
 1 ...
 2  "canSelect": {
 3             "innerAttribute": {
 4               "id": 21,
 5               "discriminator": "OwnAttributeDefinitionDto"
 6             },
 7             "id": 21,
 8             "discriminator": "TransitiveAttributeDefinitionDto"
 9           }
10 ...

2. В отчете у нужного атрибута справочника в столбцах прописать соответствующую связь атрибутов в блоке linkedCanSelectAttribute

"settings": {...}
 1 ...
 2 "linkedCanSelectAttribute": {
 3             "innerAttribute": {
 4               "id": 21,
 5               "discriminator": "OwnAttributeDefinitionDto"
 6             },
 7             "id": 21,
 8             "discriminator": "TransitiveAttributeDefinitionDto"
 9           }
10 ...
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": 161,
 19         "filter": {
 20           "parameterFilterOptions": {
 21             "attribute": {
 22               "id": 1,
 23               "discriminator": "OwnAttributeDefinitionDto"
 24             }
 25           },
 26           "value": {
 27             "id": 1,
 28             "name": null
 29           },
 30           "skipIfValueNull": false,
 31           "attributeId": null,
 32           "attribute": {
 33             "id": 22,
 34             "discriminator": "OwnAttributeDefinitionDto"
 35           },
 36           "conditionType": "AttributeInCollection",
 37           "inversion": false,
 38           "discriminator": "ParameterConditionalDictionaryFilterDto"
 39         },
 40         "selection": null,
 41         "hierarchyId": null,
 42         "limit": null
 43       }
 44     ],
 45     "dictionaryAttributesLinks": [],
 46     "specialFilters": {
 47       "filtersByDataOptions": {
 48         "filtersByData": [],
 49         "needRestoreFullHierachy": false,
 50         "joinOption": "Or",
 51         "restoreElements": null
 52       },
 53       "dictionaryAttributesLinks": [],
 54       "needRestoreFullHierachy": false,
 55       "restoreElements": null
 56     },
 57     "isEditable": false
 58   },
 59   "topHeader": {
 60     "topHeaderItems": [
 61       {
 62         "dictionaryAttributes": [
 63           {
 64             "dictionaryId": 161,
 65             "attribute": {
 66               "id": 2,
 67               "discriminator": "OwnAttributeDefinitionDto"
 68             },
 69             "filter": null,
 70             "sortingOptions": null,
 71             "attributeId": null,
 72             "displayAttributeType": "AttributeName",
 73             "displayAttributeName": null,
 74             "addFirstElementValue": false,
 75             "overwriteNotFirstElementValues": true,
 76             "delimiter": ", ",
 77             "hideAttributeNameInHeader": false,
 78             "headerNameDelimiter": " / ",
 79             "duplicateValuesForNextDictionaries": true,
 80             "duplicateValuesForNextRows": true,
 81             "displayValueOptions": null,
 82             "linkedAttributeSettings": null,
 83             "skippedFilterAttributesByLink": [],
 84             "filterOptionsByLinks": null
 85           }
 86         ],
 87         "settings": null,
 88         "hyperlinkOptions": null,
 89         "hasImage": false,
 90         "columnOptions": {
 91           "width": 0,
 92           "format": null,
 93           "dataControlOptions": {
 94             "format": null,
 95             "mask": null,
 96             "min": null,
 97             "max": null,
 98             "component": null,
 99             "searchSettings": null
100           },
101           "isReadOnly": null,
102           "displayDuplicatedValues": null,
103           "duplicateValueOptions": "Undefined",
104           "allowChangeColumnValue": null,
105           "singleValueColumn": null,
106           "hyperlinkOptions": null,
107           "imageType": "None",
108           "absentDictionariesOptions": null
109         },
110         "discriminator": "AttributeHeaderItemDto"
111       },
112       {
113         "dictionaryAttributes": [
114           {
115             "dictionaryId": 161,
116             "attribute": {
117               "id": 22,
118               "discriminator": "OwnAttributeDefinitionDto"
119             },
120             "filter": null,
121             "sortingOptions": null,
122             "attributeId": null,
123             "displayAttributeType": "AttributeName",
124             "displayAttributeName": null,
125             "addFirstElementValue": false,
126             "overwriteNotFirstElementValues": true,
127             "delimiter": ", ",
128             "hideAttributeNameInHeader": false,
129             "headerNameDelimiter": " / ",
130             "duplicateValuesForNextDictionaries": true,
131             "duplicateValuesForNextRows": true,
132             "displayValueOptions": null,
133             "linkedAttributeSettings": null,
134             "skippedFilterAttributesByLink": [],
135             "filterOptionsByLinks": null
136           }
137         ],
138         "settings": null,
139         "hyperlinkOptions": null,
140         "hasImage": false,
141         "columnOptions": {
142           "width": null,
143           "format": null,
144           "dataControlOptions": {
145             "format": null,
146             "mask": null,
147             "min": null,
148             "max": null,
149             "component": null,
150             "searchSettings": null
151           },
152           "isReadOnly": null,
153           "displayDuplicatedValues": null,
154           "duplicateValueOptions": "Undefined",
155           "allowChangeColumnValue": null,
156           "singleValueColumn": null,
157           "hyperlinkOptions": null,
158           "imageType": "None",
159           "absentDictionariesOptions": null
160         },
161         "discriminator": "AttributeHeaderItemDto"
162       },
163       {
164         "dictionaryAttributes": [
165           {
166             "dictionaryId": 161,
167             "attribute": {
168               "id": 21,
169               "discriminator": "OwnAttributeDefinitionDto"
170             },
171             "filter": null,
172             "sortingOptions": null,
173             "attributeId": null,
174             "displayAttributeType": "AttributeName",
175             "displayAttributeName": null,
176             "addFirstElementValue": false,
177             "overwriteNotFirstElementValues": true,
178             "delimiter": ", ",
179             "hideAttributeNameInHeader": false,
180             "headerNameDelimiter": " / ",
181             "duplicateValuesForNextDictionaries": true,
182             "duplicateValuesForNextRows": true,
183             "displayValueOptions": null,
184             "linkedAttributeSettings": null,
185             "skippedFilterAttributesByLink": [],
186             "filterOptionsByLinks": null
187           }
188         ],
189         "settings": {
190           "showExpanders": false,
191           "showHierarchyIndent": false,
192           "allowsMultipleValues": false,
193           "aggregationType": "None",
194           "transformAggregationType": "None",
195           "linkedCanSelectAttribute": {
196             "innerAttribute": {
197               "id": 21,
198               "discriminator": "OwnAttributeDefinitionDto"
199             },
200             "id": 21,
201             "discriminator": "TransitiveAttributeDefinitionDto"
202           }
203         },
204         "hyperlinkOptions": null,
205         "hasImage": false,
206         "columnOptions": null,
207         "discriminator": "AttributeHeaderItemDto"
208       },
209       {
210         "dictionaryAttributes": [
211           {
212             "dictionaryId": 161,
213             "attribute": {
214               "id": 23,
215               "discriminator": "OwnAttributeDefinitionDto"
216             },
217             "filter": null,
218             "sortingOptions": null,
219             "attributeId": null,
220             "displayAttributeType": "AttributeName",
221             "displayAttributeName": null,
222             "addFirstElementValue": false,
223             "overwriteNotFirstElementValues": true,
224             "delimiter": ", ",
225             "hideAttributeNameInHeader": false,
226             "headerNameDelimiter": " / ",
227             "duplicateValuesForNextDictionaries": true,
228             "duplicateValuesForNextRows": true,
229             "displayValueOptions": null,
230             "linkedAttributeSettings": null,
231             "skippedFilterAttributesByLink": [],
232             "filterOptionsByLinks": null
233           }
234         ],
235         "settings": null,
236         "hyperlinkOptions": null,
237         "hasImage": false,
238         "columnOptions": null,
239         "discriminator": "AttributeHeaderItemDto"
240       }
241     ],
242     "needFilterAttributesByLinks": false,
243     "enableFilterByLinks": false,
244     "numerationSettings": null,
245     "filterOptions": null
246   },
247   "parameters": [
248     {
249       "dictionaryId": 0,
250       "sortingOptions": null,
251       "displayValueOptions": null,
252       "options": {
253         "groupingOptions": null,
254         "groupingMethod": "Default",
255         "sortingOptions": null,
256         "rootElement": null,
257         "virtualElements": null,
258         "displayValueOptions": null,
259         "displayAttribute": null,
260         "dictionaryId": 159,
261         "filter": null,
262         "selection": null,
263         "hierarchyId": null,
264         "limit": null
265       },
266       "attributeValues": null,
267       "selectionFilter": null,
268       "defaultValue": [
269         1
270       ],
271       "value": [
272         1
273       ],
274       "isMultiselect": false,
275       "isEmptyValuePossible": false,
276       "isDisableable": false,
277       "isDisabled": false,
278       "dataControlOptions": null,
279       "id": 1,
280       "name": "Производство",
281       "discriminator": "DictionaryParameterDto"
282     }
283   ],
284   "styles": [],
285   "styleOptions": [],
286   "stylesTemplate": [],
287   "filtersByDataOptions": null,
288   "view": null,
289   "externalExecutions": null,
290   "settings": null,
291   "code": "New_Pivot_9",
292   "id": 162,
293   "name": "Блокировка элементов справочника в атрибуте, который вынесен в столбец отчета"
294 }