Блокировка для выбора элементов в выпадающих списках
В отчетах в связанных справочниках (атрибут справочника в столбцах) и справочниках боковика для кубовых форм (отчеты, с которых измерения показателя находятся в боковике отчета) существует возможность в выпадающих списках блокировать элементы, у которых заданный логический атрибут (собственный или транзитивный) имеет значение FALSE.
Общий кейс: В отчете, в котором редактируется и отображается информация об объеме использования заводами определенных продуктов, необходимо заблокировать для выбора не актуальные продукты, но при этом информация, которая была ранее внесена, даже на не актуальные продукты, должна отображаться в отчете.
Блокировка элементов справочника в боковике
"leftHeader": {...} |
---|
1 "dictionaries": [
2 {
3 ...
4 "canSelectAttribute": {
5 "id": 22,
6 "discriminator": "OwnAttributeDefinitionDto"
7 },
8 ...
9 }
10 ]
|
Данная информация об объеме использования заводами определенных продуктов хранится в показателе (измерения показателя: производства, продукты, факт: объем использования).
В боковике отчета находится справочник производств (отфильтрованный от параметра для просмотра информации одновременно только по одному заводу) и справочник продуктов.
Также выполнена фильтрация по данным показателя, для того, чтобы отображались только те строки, в которых есть данные. Далее необходимо, чтобы в справочнике "Продукты" не заблокированными оставались только элементы, которые имеют значение TRUE по следующей связи справочников: у каждого продукта есть тип "Глобальный", "Локальный" или "Архивный", а у каждого типа есть информация о доступности выбора данного типа продукта. Соответствующие справочники выглядят следующим образом:
Справочник "Продукты"
Наименование (id=2) | Тип продукта (id=21) |
---|---|
Катализатор 1 | Глобальный |
Катализатор 2 | Глобальный |
... | ... |
Архив Катализатор | Архивный |
Справочник "Типы элементов"
Наименование (id=2) | Доступность выбора (id=21) |
---|---|
Глобальный | TRUE |
Локальный | TRUE |
Архивный | FALSE |
Для данного кейса настройка "canSelectAttribute":{} будет выглядеть следующим образом:
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 }
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 ...
|
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 }