Группировка элементов справочника (groupingOptions)

Материал из 3v-wiki
Перейти к навигации Перейти к поиску

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

 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