Платформа 3V/Отчет/5. Настроить представление, оформление отчета/Настроить блокировку выбора элементов выпадающих списков: различия между версиями

Материал из 3v-wiki
Перейти к навигации Перейти к поиску
(Новая страница: «{{DISPLAYTITLE:Блокировка для выбора элементов в выпадающих списках}} В отчетах в связанных спр...»)
 
Строка 433: Строка 433:
 
</syntaxhighlight>
 
</syntaxhighlight>
 
</div></div>
 
</div></div>
 +
 +
==Блокировка элементов справочника в атрибуте, который вынесен в столбец отчета==
 +
Данная информация об объеме использования заводами определенных продуктов хранится в справочнике со следующей структурой:
 +
'''Справочник "Объем использования"'''
 +
{| class="wikitable"
 +
|-
 +
! Наименование (Техническое) (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), при заполнении элементами которого необходимо применить блокировку, прописать соответствующую [[Платформа_3V/Справочник/Связи_атрибутов_справочников|'''связь атрибутов''']] в блоке '''canSelect'''
 +
 +
{| class="wikitable"
 +
|-
 +
! "attributeLink": {...}
 +
|-
 +
| <syntaxhighlight lang="JSON" line>
 +
...
 +
"canSelect": {
 +
            "innerAttribute": {
 +
              "id": 21,
 +
              "discriminator": "OwnAttributeDefinitionDto"
 +
            },
 +
            "id": 21,
 +
            "discriminator": "TransitiveAttributeDefinitionDto"
 +
          }
 +
...
 +
</syntaxhighlight>
 +
|}
 +
2. В отчете у нужного атрибута справочника в столбцах прописать соответствующую [[Платформа_3V/Справочник/Связи_атрибутов_справочников|'''связь атрибутов''']] в блоке '''linkedCanSelectAttribute'''
 +
 +
{| class="wikitable"
 +
|-
 +
! "settings": {...}
 +
|-
 +
| <syntaxhighlight lang="JSON" line>
 +
...
 +
"linkedCanSelectAttribute": {
 +
            "innerAttribute": {
 +
              "id": 21,
 +
              "discriminator": "OwnAttributeDefinitionDto"
 +
            },
 +
            "id": 21,
 +
            "discriminator": "TransitiveAttributeDefinitionDto"
 +
          }
 +
...
 +
</syntaxhighlight>
 +
|}

Версия 13:58, 30 апреля 2021

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