Блокировка для выбора элементов в выпадающих списках
В отчетах в связанных справочниках (атрибут справочника в столбцах) и справочниках боковика для кубовых форм (отчеты, с которых измерения показателя находятся в боковике отчета) существует возможность в выпадающих списках блокировать элементы, у которых заданный логический атрибут (собственный или транзитивный) имеет значение 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 ...
|