Платформа 3V/Отчет/6. Дополнительные действия в отчете/Фильтр выпадающих списков/Фильтр факта показателя по связям: различия между версиями

Материал из 3v-wiki
Перейти к навигации Перейти к поиску
 
(не показано 11 промежуточных версий 2 участников)
Строка 1: Строка 1:
{{DISPLAYTITLE:Фильтрация доступных значений по связанным атрибутам для кубовых форм}}
 
 
 
== Признак включения кубовых форм (isEditable) ==
 
== Признак включения кубовых форм (isEditable) ==
  
Строка 14: Строка 12:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
== Признак фильтрации доступных значений атрибута по связанным атрибутам (NeedFilterAttributesByLinks) ==
+
== Общий признак фильтрации по связям для отчета (enableFilterByLinks) ==
  
'''NeedFilterAttributesByLinks''' - признак включения фильтрации по связанным атрибутам, который находится в шапке отчета [[Платформа_3V/Отчет/PivotDto/PivotTopHeaderDto|'''PivotTopHeaderDto''']].
+
'''enableFilterByLinks''' - признак включения фильтрации по связям, который находится в шапке отчета [[Платформа_3V/Отчет/PivotDto/PivotTopHeaderDto|'''PivotTopHeaderDto''']].
  
 
<syntaxhighlight lang="JSON" line>
 
<syntaxhighlight lang="JSON" line>
 
{
 
{
 
   "topHeader": {
 
   "topHeader": {
     "needFilterAttributesByLinks": true,
+
     "enableFilterByLinks": true,
 
     ...
 
     ...
 
   }
 
   }
Строка 27: Строка 25:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
== Коллекция пропускаемых связей при фильтрации по связанными атрибутам (SkippedFilterAttributesByLink) ==
+
== Признак фильтрации по связям локально для конкретного факта показателя (filterOptionsByLinks) ==
 +
 
 +
<syntaxhighlight lang="JSON" line>
 +
"filterOptionsByLinks": {
 +
              "enable": false,
 +
              "skipAttributes": [...]
 +
            }
 +
</syntaxhighlight>
 +
 
 +
{| class="wikitable"
 +
|-
 +
! Свойство !! Описание
 +
|-
 +
| enable || Признак включения фильтрации значений по связям
 +
|-
 +
| skipAttributes|| [[Платформа_3V/Справочник/Связи_атрибутов_справочников|'''Перечень атрибутов''']], которые нужно пропускать при фильтрации значений по связям
 +
|}
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px; overflow:auto;">
 +
<div style="font-weight:bold;line-height:1.6;">topHeaderItems:[...]</div>
 +
<div class="mw-collapsible-content mw-collapsed-content">
 +
<syntaxhighlight lang="JSON" line>
 +
{
 +
        "indicatorId": 31305,
 +
        "isVisible": true,
 +
        "dictionaries": [
 +
        ...
 +
        ],
 +
        "formulas": [],
 +
        "aggregations": [],
 +
        "transformAggregationType": "None",
 +
        "hierarchyOptions": null,
 +
        "factOptions": [
 +
          {
 +
            "FactId": 1,
 +
            "FilterOptionsByLinks": {
 +
              "enable": false,
 +
              "skipAttributes": [
 +
                {
 +
                  "dictionaryId": 31304,
 +
                  "attribute": {
 +
                    "id": 21,
 +
                    "discriminator": "OwnAttributeDefinitionDto"
 +
                  }
 +
                }
 +
              ]
 +
          }
 +
        ],
 +
        "columnOptions": null,
 +
        "discriminator": "IndicatorOptionsDto"
 +
      }
 +
</syntaxhighlight>
 +
</div></div>
 +
 
 +
==Пример использования==
 +
При необходимости отфильтровать выпадающий список фактов показателя
 +
 
 +
Кейс: Контрагенты заготавливают разные виды и сортименты древесины, данная информация хранится в соответствующем показателе. Есть два справочника, которые являются фактами этого показателя: "Виды древесины" и "Сортименты" и имеют следующие структуры и связь между ними:
 +
 
 +
'''Виды древесины'''
 +
{| class="wikitable"
 +
|-
 +
! Наименование (id=2)  
 +
|-
 +
| Сосна
 +
|-
 +
| Ель
 +
|-
 +
| Дуб
 +
|}
 +
 
 +
'''Сортименты'''
 +
{| class="wikitable"
 +
|-
 +
! Наименование  (id=2) !! Вид древесины (id=21)
 +
|-
 +
| Балансы сосновые || Сосна
 +
|-
 +
| Балансы еловые || Ель
 +
|-
 +
| Необработанная древесина || Сосна, Ель, Дуб
 +
|}
 +
 
 +
И для того, чтобы выпадающий список Сортиментов был отсортирован в зависимости от Вида древесины, который выбран в соответствующем столбце, необходимо выполнить настройку, которая была описана выше.
  
'''SkippedFilterAttributesByLink''' - коллекция пропускаемых связей при фильтрации по связанными атрибутам. Указывается для каждого атрибута шапки [[Платформа_3V/Отчет/PivotDto/AttributeHeaderItemDto|'''AttributeHeaderItemDto''']].
+
'''Выпадающий список Сортиментов без учета фильтра по связям:'''
Коллекция '''SkippedFilterAttributesByLink''' состоит из [[Платформа_3V/Отчет/PivotDto/DictionaryAttributeDefinitionDto|'''DictionaryAttributeDefinitionDto''']].
+
[[Файл:Отключен фильтр по связям по факту показателя.jpg|600px|безрамки|без]]
  
 +
'''Выпадающий список Сортиментов с фильтром по связям:'''
 +
[[Файл:Фильтр по связям по факту показателя.jpg|600px|безрамки|без]]
 +
 +
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px; overflow:auto;">
 +
<div style="font-weight:bold;line-height:1.6;">JSON отчета</div>
 +
<div class="mw-collapsible-content mw-collapsed-content">
 
<syntaxhighlight lang="JSON" line>
 
<syntaxhighlight lang="JSON" line>
 
{
 
{
"topHeader": {
+
  "workflowId": null,
 +
  "leftHeader": {
 +
    "useLazyDataLoadingStrategy": false,
 +
    "dictionaries": [
 +
      {
 +
        "showDataIfAbsentFilter": null,
 +
        "coordAttribute": null,
 +
        "cartesianOptions": "Default",
 +
        "canSelectAttribute": null,
 +
        "groupingOptions": null,
 +
        "groupingMethod": "Default",
 +
        "sortingOptions": null,
 +
        "rootElement": null,
 +
        "virtualElements": null,
 +
        "displayValueOptions": null,
 +
        "displayAttribute": null,
 +
        "dictionaryId": 128,
 +
        "filter": {
 +
          "value": null,
 +
          "skipIfValueNull": false,
 +
          "attributeId": null,
 +
          "attribute": {
 +
            "id": 1,
 +
            "discriminator": "OwnAttributeDefinitionDto"
 +
          },
 +
          "conditionType": "AllElements",
 +
          "inversion": false,
 +
          "discriminator": "ValueConditionalDictionaryFilterDto"
 +
        },
 +
        "selection": null,
 +
        "hierarchyId": null,
 +
        "limit": null
 +
      }
 +
    ],
 +
    "dictionaryAttributesLinks": [],
 +
    "specialFilters": {
 +
      "filtersByDataOptions": {
 +
        "filtersByData": [],
 +
        "needRestoreFullHierachy": false,
 +
        "joinOption": "Or",
 +
        "restoreElements": null
 +
      },
 +
      "dictionaryAttributesLinks": [],
 +
      "needRestoreFullHierachy": false,
 +
      "restoreElements": null
 +
    },
 +
    "isEditable": false
 +
  },
 +
  "topHeader": {
 
     "topHeaderItems": [
 
     "topHeaderItems": [
 
       {
 
       {
 
         "dictionaryAttributes": [
 
         "dictionaryAttributes": [
 
           {
 
           {
             "skippedFilterAttributesByLink": [
+
            "dictionaryId": 128,
               {
+
            "attribute": {
                 "dictionaryId": 16335,
+
              "id": 2,
                "attribute": {
+
              "discriminator": "OwnAttributeDefinitionDto"
                  "id": 21,
+
            },
                  "discriminator": "OwnAttributeDefinitionDto"
+
            "filter": null,
 +
            "sortingOptions": null,
 +
            "attributeId": null,
 +
            "displayAttributeType": "AttributeName",
 +
            "displayAttributeName": null,
 +
            "addFirstElementValue": false,
 +
            "overwriteNotFirstElementValues": true,
 +
            "delimiter": ", ",
 +
            "hideAttributeNameInHeader": false,
 +
            "headerNameDelimiter": " / ",
 +
            "duplicateValuesForNextDictionaries": true,
 +
            "duplicateValuesForNextRows": true,
 +
            "displayValueOptions": null,
 +
            "linkedAttributeSettings": null,
 +
             "skippedFilterAttributesByLink": [],
 +
            "filterOptionsByLinks": null
 +
          }
 +
        ],
 +
        "settings": null,
 +
        "hyperlinkOptions": null,
 +
        "hasImage": false,
 +
        "columnOptions": null,
 +
        "discriminator": "AttributeHeaderItemDto"
 +
      },
 +
      {
 +
        "indicatorId": 127,
 +
        "isVisible": true,
 +
        "dictionaries": [
 +
          {
 +
            "isVisible": null,
 +
            "displayAttributeId": null,
 +
            "elementCustomNames": [],
 +
            "groupingOptions": null,
 +
            "groupingMethod": "Default",
 +
            "sortingOptions": null,
 +
            "rootElement": null,
 +
            "virtualElements": null,
 +
            "displayValueOptions": null,
 +
            "displayAttribute": null,
 +
            "dictionaryId": 126,
 +
            "filter": {
 +
              "value": null,
 +
              "skipIfValueNull": false,
 +
              "attributeId": null,
 +
              "attribute": {
 +
                "id": 1,
 +
                "discriminator": "OwnAttributeDefinitionDto"
 +
              },
 +
              "conditionType": "AllElements",
 +
              "inversion": false,
 +
               "discriminator": "ValueConditionalDictionaryFilterDto"
 +
            },
 +
            "selection": null,
 +
            "hierarchyId": null,
 +
            "limit": null
 +
          }
 +
        ],
 +
        "formulas": [],
 +
        "aggregations": [],
 +
        "transformAggregationType": "None",
 +
        "hierarchyOptions": null,
 +
        "factOptions": [
 +
          {
 +
            "factId": 1,
 +
            "columnOptions": null,
 +
            "filterOptionsByLinks": {
 +
              "enable": false,
 +
              "skipAttributes": [
 +
                 {
 +
                  "dictionaryId": 125,
 +
                  "attribute": {
 +
                    "id": 1,
 +
                    "discriminator": "OwnAttributeDefinitionDto"
 +
                  }
 
                 }
 
                 }
               }
+
               ]
            ]
+
             }
             ...
 
 
           }
 
           }
 
         ],
 
         ],
         "discriminator": "AttributeHeaderItemDto"
+
        "columnOptions": null,
 +
         "discriminator": "IndicatorOptionsDto"
 
       }
 
       }
 
     ],
 
     ],
     "needFilterAttributesByLinks": true
+
     "needFilterAttributesByLinks": false,
   }
+
    "enableFilterByLinks": true,
 +
    "numerationSettings": null,
 +
    "filterOptions": null
 +
   },
 +
  "parameters": [],
 +
  "styles": [],
 +
  "styleOptions": [],
 +
  "stylesTemplate": [],
 +
  "filtersByDataOptions": null,
 +
  "view": null,
 +
  "externalExecutions": null,
 +
  "settings": null,
 +
  "code": "P_FILTER_FACT_IND",
 +
  "id": 129,
 +
  "name": "Фильтр фактов показателя"
 
}
 
}
 
</syntaxhighlight>
 
</syntaxhighlight>
 
+
</div></div>
== Фильтрация доступных значений по связанным атрибутам для кубовых форм ==
 
 
 
При включении признака '''needFilterAttributesByLinks''' для кубовых форм для всех выведенных атрибутов будет осуществляться проверка на наличие связанных атрибутов в справочнике, атрибут которого выведен в шапке, а затем будет проверка, что справочник найденного связанного атрибута есть в боковике отчета и эту связь не нужно игнорировать '''skippedFilterAttributesByLink''', тогда для атрибута выставится признак '''needFilteringValues''', говорящий о том что нужно фильтровать доступные значения для каждого атрибута с выбором значений.
 

Текущая версия на 10:08, 1 июля 2021

Признак включения кубовых форм (isEditable)

isEditable - Признак возможности добавления строк в отчет на основании существующих элементов измерений.

1 {
2   "leftHeader": {
3     "isEditable": true,
4      ...
5   }
6 }

Общий признак фильтрации по связям для отчета (enableFilterByLinks)

enableFilterByLinks - признак включения фильтрации по связям, который находится в шапке отчета PivotTopHeaderDto.

1 {
2   "topHeader": {
3     "enableFilterByLinks": true,
4      ...
5   }
6 }

Признак фильтрации по связям локально для конкретного факта показателя (filterOptionsByLinks)

1 "filterOptionsByLinks": {
2               "enable": false,
3               "skipAttributes": [...]
4             }
Свойство Описание
enable Признак включения фильтрации значений по связям
skipAttributes Перечень атрибутов, которые нужно пропускать при фильтрации значений по связям
topHeaderItems:[...]
 1 {
 2         "indicatorId": 31305,
 3         "isVisible": true,
 4         "dictionaries": [
 5          ...
 6         ],
 7         "formulas": [],
 8         "aggregations": [],
 9         "transformAggregationType": "None",
10         "hierarchyOptions": null,
11         "factOptions": [
12           {
13             "FactId": 1,
14             "FilterOptionsByLinks": {
15               "enable": false,
16               "skipAttributes": [
17                 {
18                   "dictionaryId": 31304,
19                   "attribute": {
20                     "id": 21,
21                     "discriminator": "OwnAttributeDefinitionDto"
22                   }
23                 }
24               ]
25           }
26         ],
27         "columnOptions": null,
28         "discriminator": "IndicatorOptionsDto"
29       }

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

При необходимости отфильтровать выпадающий список фактов показателя

Кейс: Контрагенты заготавливают разные виды и сортименты древесины, данная информация хранится в соответствующем показателе. Есть два справочника, которые являются фактами этого показателя: "Виды древесины" и "Сортименты" и имеют следующие структуры и связь между ними:

Виды древесины

Наименование (id=2)
Сосна
Ель
Дуб

Сортименты

Наименование (id=2) Вид древесины (id=21)
Балансы сосновые Сосна
Балансы еловые Ель
Необработанная древесина Сосна, Ель, Дуб

И для того, чтобы выпадающий список Сортиментов был отсортирован в зависимости от Вида древесины, который выбран в соответствующем столбце, необходимо выполнить настройку, которая была описана выше.

Выпадающий список Сортиментов без учета фильтра по связям:

Отключен фильтр по связям по факту показателя.jpg

Выпадающий список Сортиментов с фильтром по связям:

Фильтр по связям по факту показателя.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": 128,
 19         "filter": {
 20           "value": null,
 21           "skipIfValueNull": false,
 22           "attributeId": null,
 23           "attribute": {
 24             "id": 1,
 25             "discriminator": "OwnAttributeDefinitionDto"
 26           },
 27           "conditionType": "AllElements",
 28           "inversion": false,
 29           "discriminator": "ValueConditionalDictionaryFilterDto"
 30         },
 31         "selection": null,
 32         "hierarchyId": null,
 33         "limit": null
 34       }
 35     ],
 36     "dictionaryAttributesLinks": [],
 37     "specialFilters": {
 38       "filtersByDataOptions": {
 39         "filtersByData": [],
 40         "needRestoreFullHierachy": false,
 41         "joinOption": "Or",
 42         "restoreElements": null
 43       },
 44       "dictionaryAttributesLinks": [],
 45       "needRestoreFullHierachy": false,
 46       "restoreElements": null
 47     },
 48     "isEditable": false
 49   },
 50   "topHeader": {
 51     "topHeaderItems": [
 52       {
 53         "dictionaryAttributes": [
 54           {
 55             "dictionaryId": 128,
 56             "attribute": {
 57               "id": 2,
 58               "discriminator": "OwnAttributeDefinitionDto"
 59             },
 60             "filter": null,
 61             "sortingOptions": null,
 62             "attributeId": null,
 63             "displayAttributeType": "AttributeName",
 64             "displayAttributeName": null,
 65             "addFirstElementValue": false,
 66             "overwriteNotFirstElementValues": true,
 67             "delimiter": ", ",
 68             "hideAttributeNameInHeader": false,
 69             "headerNameDelimiter": " / ",
 70             "duplicateValuesForNextDictionaries": true,
 71             "duplicateValuesForNextRows": true,
 72             "displayValueOptions": null,
 73             "linkedAttributeSettings": null,
 74             "skippedFilterAttributesByLink": [],
 75             "filterOptionsByLinks": null
 76           }
 77         ],
 78         "settings": null,
 79         "hyperlinkOptions": null,
 80         "hasImage": false,
 81         "columnOptions": null,
 82         "discriminator": "AttributeHeaderItemDto"
 83       },
 84       {
 85         "indicatorId": 127,
 86         "isVisible": true,
 87         "dictionaries": [
 88           {
 89             "isVisible": null,
 90             "displayAttributeId": null,
 91             "elementCustomNames": [],
 92             "groupingOptions": null,
 93             "groupingMethod": "Default",
 94             "sortingOptions": null,
 95             "rootElement": null,
 96             "virtualElements": null,
 97             "displayValueOptions": null,
 98             "displayAttribute": null,
 99             "dictionaryId": 126,
100             "filter": {
101               "value": null,
102               "skipIfValueNull": false,
103               "attributeId": null,
104               "attribute": {
105                 "id": 1,
106                 "discriminator": "OwnAttributeDefinitionDto"
107               },
108               "conditionType": "AllElements",
109               "inversion": false,
110               "discriminator": "ValueConditionalDictionaryFilterDto"
111             },
112             "selection": null,
113             "hierarchyId": null,
114             "limit": null
115           }
116         ],
117         "formulas": [],
118         "aggregations": [],
119         "transformAggregationType": "None",
120         "hierarchyOptions": null,
121         "factOptions": [
122           {
123             "factId": 1,
124             "columnOptions": null,
125             "filterOptionsByLinks": {
126               "enable": false,
127               "skipAttributes": [
128                 {
129                   "dictionaryId": 125,
130                   "attribute": {
131                     "id": 1,
132                     "discriminator": "OwnAttributeDefinitionDto"
133                   }
134                 }
135               ]
136             }
137           }
138         ],
139         "columnOptions": null,
140         "discriminator": "IndicatorOptionsDto"
141       }
142     ],
143     "needFilterAttributesByLinks": false,
144     "enableFilterByLinks": true,
145     "numerationSettings": null,
146     "filterOptions": null
147   },
148   "parameters": [],
149   "styles": [],
150   "styleOptions": [],
151   "stylesTemplate": [],
152   "filtersByDataOptions": null,
153   "view": null,
154   "externalExecutions": null,
155   "settings": null,
156   "code": "P_FILTER_FACT_IND",
157   "id": 129,
158   "name": "Фильтр фактов показателя"
159 }