Платформа 3V/Справочник/Группировка: различия между версиями

Материал из 3v-wiki
Перейти к навигации Перейти к поиску
(Добавлено описание настройки DisplayAttribute)
 
(не показано 6 промежуточных версий 1 участника)
Строка 1: Строка 1:
 
{{DISPLAYTITLE:Группировка элементов справочника (groupingOptions)}}
 
{{DISPLAYTITLE:Группировка элементов справочника (groupingOptions)}}
Разбивка на группы элементов справочника в зависимости от собственного или связанного атрибута
+
Разбивка на группы элементов справочника на основании от собственного или связанного атрибута
  
 
<syntaxhighlight lang="JSON" line>
 
<syntaxhighlight lang="JSON" line>
Строка 12: Строка 12:
 
             "attribute": {
 
             "attribute": {
 
               "id": 21,
 
               "id": 21,
 +
              "discriminator": "OwnAttributeDefinitionDto"
 +
            },
 +
            "DisplayAttribute": {
 +
              "id": 2,
 
               "discriminator": "OwnAttributeDefinitionDto"
 
               "discriminator": "OwnAttributeDefinitionDto"
 
             },
 
             },
Строка 18: Строка 22:
 
         ],
 
         ],
 
         "fillOwnTransitiveForLinkedAttributes": false,
 
         "fillOwnTransitiveForLinkedAttributes": false,
         "isGroupingNull": true,
+
         "isGroupingNull": false,
         "areNullValuesLast": true,
+
         "nullValueGroupName": "Не задано",
         "areGroupingElementsLast": false,
+
         "areNullValuesLast": false,
         "nullValueGroupName": "Не задано"
+
         "areGroupingElementsLast": false
       },
+
       }
 
</syntaxhighlight>
 
</syntaxhighlight>
  
Строка 29: Строка 33:
 
! Значение !! Описание
 
! Значение !! Описание
 
|-
 
|-
| destinationAttribute || В какой атрибут будет записываться группировочный элемент. По умолчанию: атрибут "Наименование"
+
| destinationAttribute || В каком атрибуте группируемого справочника будет формироваться наименование группировочного элемента (атрибут должен быть текстовый). По умолчанию: атрибут "Наименование"
 
|-
 
|-
 
| [[Платформа 3V/Справочник/Группировка|'''dictionaryGroupingAttributes''']] || Описание пути до атрибута, по которому будет производиться группировка
 
| [[Платформа 3V/Справочник/Группировка|'''dictionaryGroupingAttributes''']] || Описание пути до атрибута, по которому будет производиться группировка
 
|-
 
|-
| fillOwnTransitiveForLinkedAttributes || ????
+
| fillOwnTransitiveForLinkedAttributes || Флаг заполнения у группировочного элемента атрибута, который является транзитивным для группируемого справочника и собственным для справочника, по которому происходит группировка
 
|-
 
|-
| isGroupingNull || Флаг группировки элементов с пустым атрибутом, по которому происходит группировка, под отдельный элемент с названием указанным в nullValueGroupName (true / false). По умолчанию под элемент "Не задано"
+
| isGroupingNull || Флаг группировки элементов с пустым атрибутом, по которому происходит группировка, под отдельный элемент (true / false). По умолчанию группировка происходит под элемент "Не задано", название указывается в nullValueGroupName
 
|-
 
|-
 
| nullValueGroupName || Наименование группировочного элемента для элементов с пустым группировочным атрибутом
 
| nullValueGroupName || Наименование группировочного элемента для элементов с пустым группировочным атрибутом
Строка 44: Строка 48:
 
|}
 
|}
  
== Ссылка на группировочный атрибут (dictionaryGroupingAttributes) ==
+
== Ссылка на группировочные атрибуты (dictionaryGroupingAttributes) ==
 +
Указываются атрибуты, по которым необходимо сгруппировать справочник. Может иметь один или больше группировочных атрибутов
 
<syntaxhighlight lang="JSON" line>
 
<syntaxhighlight lang="JSON" line>
 
         "dictionaryGroupingAttributes": [
 
         "dictionaryGroupingAttributes": [
Строка 50: Строка 55:
 
             "attribute": {
 
             "attribute": {
 
               "id": 21,
 
               "id": 21,
 +
              "discriminator": "OwnAttributeDefinitionDto"
 +
            },
 +
            "DisplayAttribute": {
 +
              "id": 2,
 
               "discriminator": "OwnAttributeDefinitionDto"
 
               "discriminator": "OwnAttributeDefinitionDto"
 
             },
 
             },
Строка 56: Строка 65:
 
         ]
 
         ]
 
</syntaxhighlight>
 
</syntaxhighlight>
 
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
Строка 62: Строка 70:
 
|-
 
|-
 
| [[Платформа_3V/Справочник/Связь_атрибутов|'''attribute''']] || Описание пути до атрибута, по которому будет производиться группировка
 
| [[Платформа_3V/Справочник/Связь_атрибутов|'''attribute''']] || Описание пути до атрибута, по которому будет производиться группировка
 +
|-
 +
| DisplayAttribute|| Описание атрибута из которого будут браться наименования для группировочных элементов.
 
|-
 
|-
 
| groupCustomName || Пользовательское наименование группировочных элементов
 
| groupCustomName || Пользовательское наименование группировочных элементов
  
 +
|}
 +
 +
== Примеры использования группировочных настроек ==
 +
 +
Для формирования связи между объектами строительства и инвестиционными проектами в справочнике "Объекты строительства" настроен связанный атрибут на справочник "Инвестиционный проект"
 +
 +
''Исходный вид справочника "Объекты строительства":''
 +
{| class="wikitable"
 +
|-
 +
! Наименование объекта (id=2) !! Инвестиционный проект (id=21) !! Код объекта (id=22)
 +
|-
 +
| Объект 1 || ИП 1 || 01-1
 +
|-
 +
| Объект 2 || ИП 1 || 01-2
 +
|-
 +
| Объект 3 || ИП 2 || 02-3
 +
|-
 +
| Объект 4 || - || 00-4
 +
|}
 +
 +
'''По умолчанию группировка по атрибуту "Инвестиционные проекты"'''
 +
{| class="wikitable"
 +
|-
 +
! Номер объекта !! Инвестиционный проект !! Код объекта
 +
|-
 +
| .. Объект 4 || - || 00-4
 +
|-
 +
| '''ИП 1''' ||  ||
 +
|-
 +
| .. Объект 1 || ИП 1 || 01-1
 +
|-
 +
| .. Объект 2 || ИП 1 || 01-1
 +
|-
 +
| '''ИП 2''' ||  ||
 +
|-
 +
| .. Объект 3 || ИП 2 || 02-3
 +
|}
 +
 +
=== Атрибут для наименования группировочного элемента (destinationAttribute) ===
 +
 +
Настройка позволяет группировать не в атрибуте по умолчанию "Наименование", а другом текстовом атрибуте, например "Код объекта" (id=22)
 +
<syntaxhighlight lang="JSON" line>
 +
        "destinationAttribute": {
 +
          "id": 22,
 +
          "discriminator": "OwnAttributeDefinitionDto"
 +
        }
 +
</syntaxhighlight>
 +
{| class="wikitable"
 +
|-
 +
! Номер объекта !! Инвестиционный проект !! Код объекта
 +
|-
 +
| .. Объект 4 || - || 00-4
 +
|-
 +
|  ||  || '''ИП 1'''
 +
|-
 +
| .. Объект 1 || ИП 1 || 01-1
 +
|-
 +
| .. Объект 2 || ИП 1 || 01-1
 +
|-
 +
|  ||  || '''ИП 2'''
 +
|-
 +
| .. Объект 3 || ИП 2 || 02-3
 +
|}
 +
 +
=== Атрибут, из которого будут браться наименования для группировочных элементов (DisplayAttribute) ===
 +
 +
Настройка позволяет отображать не только наименование инвестиционного проекта, но и другие атрибуты, например, "Код". (id=21)
 +
<syntaxhighlight lang="JSON" line>
 +
        "DisplayAttribute": {
 +
          "id": 21,
 +
          "discriminator": "OwnAttributeDefinitionDto"
 +
        }
 +
</syntaxhighlight>
 +
{| class="wikitable"
 +
|-
 +
! Номер объекта !! Инвестиционный проект !! Код объекта
 +
|-
 +
| .. Объект 4 || - || 00-4
 +
|-
 +
| '''01''' ||  ||
 +
|-
 +
| .. Объект 1 || ИП 1 || 01-1
 +
|-
 +
| .. Объект 2 || ИП 1 || 01-1
 +
|-
 +
| '''02''' ||  ||
 +
|-
 +
| .. Объект 3 || ИП 2 || 02-3
 +
|}
 +
 +
DisplayAttribute задается относительно группировочного атрибута справочника, если этот группировочный атрибут является связанным или транзитивным связанным.
 +
В данном случае группировочный атрибут связан со справочником "Инвестиционный проект", значит в DisplayAttribute следует указывать атрибуты именно справочника "Инвестиционный проект".
 +
 +
=== Флаг fillOwnTransitiveForLinkedAttributes ===
 +
Флаг используется при необходимости заполнить у группировочного элемента атрибут, который является транзитивным для группируемого справочника и собственным для справочника, по которому происходит группировка
 +
 +
Группируем справочник "Объекты строительства" по инвестиционным проектам и необходимо, чтобы атр."Код ИП" справочника "Инвестиционные проекты" заполнился как у группируемых элементов, так и у группировочного, для этого выставляем флаг
 +
 +
{| class="wikitable"
 +
|-
 +
! Номер объекта !! Инвестиционный проект !! Код объекта !! Код инвест.проекта
 +
|-
 +
| .. Объект 4 || - || 00-4 ||
 +
|-
 +
| '''ИП 1''' ||  ||  || '''01'''
 +
|-
 +
| .. Объект 1 || ИП 1 || 01-1 || 01
 +
|-
 +
| .. Объект 2 || ИП 1 || 01-2 || 01
 +
|-
 +
| '''ИП 2''' ||  ||  || '''02'''
 +
|-
 +
| .. Объект 3 || ИП 2 || 02-3 || 02
 +
|}
 +
 +
=== Флаг isGroupingNull (с учетом nullValueGroupName)===
 +
Флаг используется при необходимости группировать элементы, которые имеют пустой группировочный атрибут под отдельный элемент с названием указанным в nullValueGroupName
 +
 +
nullValueGroupName не заполнен. По умолчанию "Не задано"
 +
{| class="wikitable"
 +
|-
 +
! Номер объекта !! Инвестиционный проект !! Код объекта
 +
|-
 +
| '''Не задано''' ||  ||
 +
|-
 +
| .. Объект 4 || - || 00-4
 +
|-
 +
| '''ИП 1''' ||  || 
 +
|-
 +
| .. Объект 1 || ИП 1 || 01-1
 +
|-
 +
| .. Объект 2 || ИП 1 || 01-2
 +
|-
 +
| '''ИП 2''' ||  ||
 +
|-
 +
| .. Объект 3 || ИП 2 || 02-3
 +
|}
 +
 +
nullValueGroupName: "Без ИП"
 +
{| class="wikitable"
 +
|-
 +
! Номер объекта !! Инвестиционный проект !! Код объекта
 +
|-
 +
| '''Без ИП''' ||  ||
 +
|-
 +
| .. Объект 4 || - || 00-4
 +
|-
 +
| '''ИП 1''' ||  || 
 +
|-
 +
| .. Объект 1 || ИП 1 || 01-1
 +
|-
 +
| .. Объект 2 || ИП 1 || 01-2
 +
|-
 +
| '''ИП 2''' ||  ||
 +
|-
 +
| .. Объект 3 || ИП 2 || 02-3
 +
|}
 +
=== Флаг areNullValuesLast ===
 +
Флаг используется при необходимости располагать элементы с пустым группировочным атрибутом в конце таблицы
 +
 +
{| class="wikitable"
 +
|-
 +
! Номер объекта !! Инвестиционный проект !! Код объекта
 +
|-
 +
| '''ИП 1''' ||  || 
 +
|-
 +
| .. Объект 1 || ИП 1 || 01-1
 +
|-
 +
| .. Объект 2 || ИП 1 || 01-2
 +
|-
 +
| '''ИП 2''' ||  ||
 +
|-
 +
| .. Объект 3 || ИП 2 || 02-3
 +
|-
 +
| Объект 4 || - || 00-4
 +
|}
 +
=== Флаг areGroupingElementsLast ===
 +
Флаг используется при необходимости располагать группировочные элементы после группируемых
 +
 +
{| class="wikitable"
 +
|-
 +
! Номер объекта !! Инвестиционный проект !! Код объекта
 +
|-
 +
| Объект 4 || - || 00-4
 +
|-
 +
| Объект 1 || ИП 1 || 01-1
 +
|-
 +
| Объект 2 || ИП 1 || 01-2
 +
|-
 +
| '''ИП 1''' ||  || 
 +
|-
 +
| Объект 3 || ИП 2 || 02-3
 +
|-
 +
| '''ИП 2''' ||  || 
 +
|}
 +
=== Группировка по нескольким атрибутам ===
 +
Пример группировки по атрибуту "Инвестиционные проекты" справочника "Объекты строительства" и транзитивному атрибуту "Регион" (id=22) справочника "Инвестиционные объекты". По примеру оба инвестиционных проекта имеют в атрибуте "Регион" значение "Центральный федеральный округ".
 +
 +
Порядок указанных атрибутов в настройке "dictionaryGroupingAttributes" определяет порядок группировки справочника.
 +
<syntaxhighlight lang="JSON" line>
 +
        "dictionaryGroupingAttributes": [
 +
          {
 +
            "attribute": {
 +
              "innerAttribute": {
 +
                  "id": 22,
 +
                  "discriminator": "OwnAttributeDefinitionDto"
 +
              },
 +
              "id": 21,
 +
              "discriminator": "TransitiveAttributeDefinitionDto"
 +
          },
 +
            "groupCustomName": null
 +
        },
 +
        {
 +
            "attribute": {
 +
              "id": 21,
 +
              "discriminator": "OwnAttributeDefinitionDto"
 +
            },
 +
            "groupCustomName": null
 +
          }
 +
        ]
 +
</syntaxhighlight>
 +
 +
{| class="wikitable"
 +
|-
 +
! Номер объекта !! Инвестиционный проект !! Код объекта
 +
|-
 +
| .. Объект 4 || - || 00-4
 +
|-
 +
| '''Центральный федеральный округ''' ||  ||
 +
|-
 +
| '''.. ИП 1''' ||  ||
 +
|-
 +
| .... Объект 1 || ИП 1 || 01-1
 +
|-
 +
| .... Объект 2 || ИП 1 || 01-1
 +
|-
 +
| '''.. ИП 2''' ||  ||
 +
|-
 +
| .... Объект 3 || ИП 2 || 02-3
 
|}
 
|}

Текущая версия на 12:00, 13 июля 2021

Разбивка на группы элементов справочника на основании от собственного или связанного атрибута

 1   "groupingOptions": {
 2         "destinationAttribute": {
 3           "id": 2,
 4           "discriminator": "OwnAttributeDefinitionDto"
 5         },
 6         "dictionaryGroupingAttributes": [
 7           {
 8             "attribute": {
 9               "id": 21,
10               "discriminator": "OwnAttributeDefinitionDto"
11             },
12             "DisplayAttribute": {
13               "id": 2,
14               "discriminator": "OwnAttributeDefinitionDto"
15             },
16             "groupCustomName": null
17           }
18         ],
19         "fillOwnTransitiveForLinkedAttributes": false,
20         "isGroupingNull": false,
21         "nullValueGroupName": "Не задано",
22         "areNullValuesLast": false,
23         "areGroupingElementsLast": false
24       }
Значение Описание
destinationAttribute В каком атрибуте группируемого справочника будет формироваться наименование группировочного элемента (атрибут должен быть текстовый). По умолчанию: атрибут "Наименование"
dictionaryGroupingAttributes Описание пути до атрибута, по которому будет производиться группировка
fillOwnTransitiveForLinkedAttributes Флаг заполнения у группировочного элемента атрибута, который является транзитивным для группируемого справочника и собственным для справочника, по которому происходит группировка
isGroupingNull Флаг группировки элементов с пустым атрибутом, по которому происходит группировка, под отдельный элемент (true / false). По умолчанию группировка происходит под элемент "Не задано", название указывается в nullValueGroupName
nullValueGroupName Наименование группировочного элемента для элементов с пустым группировочным атрибутом
areNullValuesLast Флаг размещения последними элементов с пустым группировочным атрибутом (true / false)
areGroupingElementsLast Флаг размещения группировочных элементов после входящих в группу элементов (true / false)

Ссылка на группировочные атрибуты (dictionaryGroupingAttributes)

Указываются атрибуты, по которым необходимо сгруппировать справочник. Может иметь один или больше группировочных атрибутов

 1         "dictionaryGroupingAttributes": [
 2           {
 3             "attribute": {
 4               "id": 21,
 5               "discriminator": "OwnAttributeDefinitionDto"
 6             },
 7             "DisplayAttribute": {
 8               "id": 2,
 9               "discriminator": "OwnAttributeDefinitionDto"
10             },
11             "groupCustomName": null
12           }
13         ]
Значение Описание
attribute Описание пути до атрибута, по которому будет производиться группировка
DisplayAttribute Описание атрибута из которого будут браться наименования для группировочных элементов.
groupCustomName Пользовательское наименование группировочных элементов

Примеры использования группировочных настроек

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

Исходный вид справочника "Объекты строительства":

Наименование объекта (id=2) Инвестиционный проект (id=21) Код объекта (id=22)
Объект 1 ИП 1 01-1
Объект 2 ИП 1 01-2
Объект 3 ИП 2 02-3
Объект 4 - 00-4

По умолчанию группировка по атрибуту "Инвестиционные проекты"

Номер объекта Инвестиционный проект Код объекта
.. Объект 4 - 00-4
ИП 1
.. Объект 1 ИП 1 01-1
.. Объект 2 ИП 1 01-1
ИП 2
.. Объект 3 ИП 2 02-3

Атрибут для наименования группировочного элемента (destinationAttribute)

Настройка позволяет группировать не в атрибуте по умолчанию "Наименование", а другом текстовом атрибуте, например "Код объекта" (id=22)

1         "destinationAttribute": {
2           "id": 22,
3           "discriminator": "OwnAttributeDefinitionDto"
4         }
Номер объекта Инвестиционный проект Код объекта
.. Объект 4 - 00-4
ИП 1
.. Объект 1 ИП 1 01-1
.. Объект 2 ИП 1 01-1
ИП 2
.. Объект 3 ИП 2 02-3

Атрибут, из которого будут браться наименования для группировочных элементов (DisplayAttribute)

Настройка позволяет отображать не только наименование инвестиционного проекта, но и другие атрибуты, например, "Код". (id=21)

1         "DisplayAttribute": {
2           "id": 21,
3           "discriminator": "OwnAttributeDefinitionDto"
4         }
Номер объекта Инвестиционный проект Код объекта
.. Объект 4 - 00-4
01
.. Объект 1 ИП 1 01-1
.. Объект 2 ИП 1 01-1
02
.. Объект 3 ИП 2 02-3

DisplayAttribute задается относительно группировочного атрибута справочника, если этот группировочный атрибут является связанным или транзитивным связанным. В данном случае группировочный атрибут связан со справочником "Инвестиционный проект", значит в DisplayAttribute следует указывать атрибуты именно справочника "Инвестиционный проект".

Флаг fillOwnTransitiveForLinkedAttributes

Флаг используется при необходимости заполнить у группировочного элемента атрибут, который является транзитивным для группируемого справочника и собственным для справочника, по которому происходит группировка

Группируем справочник "Объекты строительства" по инвестиционным проектам и необходимо, чтобы атр."Код ИП" справочника "Инвестиционные проекты" заполнился как у группируемых элементов, так и у группировочного, для этого выставляем флаг

Номер объекта Инвестиционный проект Код объекта Код инвест.проекта
.. Объект 4 - 00-4
ИП 1 01
.. Объект 1 ИП 1 01-1 01
.. Объект 2 ИП 1 01-2 01
ИП 2 02
.. Объект 3 ИП 2 02-3 02

Флаг isGroupingNull (с учетом nullValueGroupName)

Флаг используется при необходимости группировать элементы, которые имеют пустой группировочный атрибут под отдельный элемент с названием указанным в nullValueGroupName

nullValueGroupName не заполнен. По умолчанию "Не задано"

Номер объекта Инвестиционный проект Код объекта
Не задано
.. Объект 4 - 00-4
ИП 1
.. Объект 1 ИП 1 01-1
.. Объект 2 ИП 1 01-2
ИП 2
.. Объект 3 ИП 2 02-3

nullValueGroupName: "Без ИП"

Номер объекта Инвестиционный проект Код объекта
Без ИП
.. Объект 4 - 00-4
ИП 1
.. Объект 1 ИП 1 01-1
.. Объект 2 ИП 1 01-2
ИП 2
.. Объект 3 ИП 2 02-3

Флаг areNullValuesLast

Флаг используется при необходимости располагать элементы с пустым группировочным атрибутом в конце таблицы

Номер объекта Инвестиционный проект Код объекта
ИП 1
.. Объект 1 ИП 1 01-1
.. Объект 2 ИП 1 01-2
ИП 2
.. Объект 3 ИП 2 02-3
Объект 4 - 00-4

Флаг areGroupingElementsLast

Флаг используется при необходимости располагать группировочные элементы после группируемых

Номер объекта Инвестиционный проект Код объекта
Объект 4 - 00-4
Объект 1 ИП 1 01-1
Объект 2 ИП 1 01-2
ИП 1
Объект 3 ИП 2 02-3
ИП 2

Группировка по нескольким атрибутам

Пример группировки по атрибуту "Инвестиционные проекты" справочника "Объекты строительства" и транзитивному атрибуту "Регион" (id=22) справочника "Инвестиционные объекты". По примеру оба инвестиционных проекта имеют в атрибуте "Регион" значение "Центральный федеральный округ".

Порядок указанных атрибутов в настройке "dictionaryGroupingAttributes" определяет порядок группировки справочника.

 1         "dictionaryGroupingAttributes": [
 2            {
 3             "attribute": {
 4               "innerAttribute": {
 5                   "id": 22,
 6                   "discriminator": "OwnAttributeDefinitionDto"
 7               },
 8               "id": 21,
 9               "discriminator": "TransitiveAttributeDefinitionDto"
10            },
11             "groupCustomName": null
12          },
13          {
14             "attribute": {
15               "id": 21,
16               "discriminator": "OwnAttributeDefinitionDto"
17             },
18             "groupCustomName": null
19           }
20         ]
Номер объекта Инвестиционный проект Код объекта
.. Объект 4 - 00-4
Центральный федеральный округ
.. ИП 1
.... Объект 1 ИП 1 01-1
.... Объект 2 ИП 1 01-1
.. ИП 2
.... Объект 3 ИП 2 02-3