Платформа 3V/Формы/Источники данных/Справочник/Фильтрация/От другого справочника: различия между версиями

Материал из 3v-wiki
Перейти к навигации Перейти к поиску
 
(не показано 13 промежуточных версий этого же участника)
Строка 1: Строка 1:
Фильтр EntryFilterDto позволяет выбрать данные в справочнике относительно другого связного справочника. Элементы одного справочника будут отображаться в зависимости от выбранных элементов другого справочника. Элемент "filter" добавляется в источник, который необходимо отфильтровать.
+
Фильтр EntryFilter позволяет выбрать данные в справочнике относительно другого связного справочника. Элементы одного справочника будут отображаться в зависимости от выбранных элементов другого справочника. Элемент "filter" добавляется в источник, который необходимо отфильтровать.
 
Фильтр имеет следующую структуру:
 
Фильтр имеет следующую структуру:
 
<syntaxhighlight lang="JSON" line>
 
<syntaxhighlight lang="JSON" line>
Строка 15: Строка 15:
 
         "inversion": false,
 
         "inversion": false,
 
         "conditionId": null,
 
         "conditionId": null,
         "discriminator": "EntryFilterDto"
+
         "discriminator": "EntryFilter"
 
           }
 
           }
 
</syntaxhighlight>
 
</syntaxhighlight>
Строка 21: Строка 21:
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
! Свойство !! Описание
+
! Свойство !! Обязательность !!Описание
 
|-
 
|-
| dictionaryEntrySourceId || Id источника - справочника, от значений которого будут фильтроваться данные
+
| dictionaryEntrySourceId || + ||Id источника данных на форме с типом "Справочник", от значений которого будут фильтроваться данные
 
|-
 
|-
| sourceAttribute|| [[Платформа_3V/Справочник/Связи_атрибутов_справочников|''' Атрибут''']] справочника, от значений которого будут фильтроваться данные
+
| sourceAttribute|| + || [[Платформа_3V/Справочник/Связи_атрибутов_справочников|''' Идентификатор атрибута''']] справочника, от значений которого будут фильтроваться данные, указанного в dictionaryEntrySourceId
 
|-
 
|-
| attribute|| [[Платформа_3V/Справочник/Связи_атрибутов_справочников|''' Атрибут''']] текущего источника, с которым связано значение справочника от которого идет фильтрация. Указывается номер Id и тип атрибута в данном случае собственный (OwnAttributeDefinitionDto), так как используются данные текущего справочника.
+
| attribute|| + || [[Платформа_3V/Справочник/Связи_атрибутов_справочников|''' Идентификатор атрибута''']] текущего настраиваемого справочника, с которым связано значение справочника от которого идет фильтрация. Указывается номер Id и тип атрибута в данном случае собственный (OwnAttributeDefinitionDto), так как используются данные текущего справочника.  
 
|-
 
|-
| discriminator|| EntryFilterDto
+
| discriminator|| + || EntryFilter
 
|-  
 
|-  
| conditionType || Тип условий
+
| conditionType || - ||[[Платформа_3V/Формы/Источники_данных/Справочник/Фильтрация#Типы%20условий%20фильтрации%20(conditionType)| '''Тип условий''']]
 
|-  
 
|-  
| inversion || В значении "false" источник-справочник принимает значения, которые удовлетворяют фильтру, в значении "true" - все значения, которые наоборот не удовлетворяют ему
+
| inversion || + || В значении "false" источник-справочник принимает значения, которые удовлетворяют фильтру, в значении "true" - все значения, которые наоборот не удовлетворяют ему
 
|-  
 
|-  
| conditionId || [[Платформа_3V/Формы/Правила| '''Условия''']], при которых применяется фильтр  
+
| conditionId || - || [[Платформа_3V/Формы/Правила| '''Условия''']], при которых применяется фильтр  
 
|}
 
|}
  
 
== Особенности использования ==
 
== Особенности использования ==
 +
Важно, если фильтрация происходит по связанному атрибуту с типом "Элемент справочника", фильтрация, т.е. связь sourceAttribute и attribute будет происходить по атрибуту "Идентификатор", а не по атрибуту "Наименование"!
 +
 
При использовании в фильтрации источника - справочника транзитивного атрибута другого источника - справочника необходимо обязательно указать в источнике, от которого происходит фильтрация, в блоке "dictionaryAttributes" [[Платформа_3V/Справочник/Связи_атрибутов_справочников|'''все атрибуты (транзитивные и собственные)''']], которые используются. Пример см.ниже "Пример фильтрации от транзитивного атрибута"
 
При использовании в фильтрации источника - справочника транзитивного атрибута другого источника - справочника необходимо обязательно указать в источнике, от которого происходит фильтрация, в блоке "dictionaryAttributes" [[Платформа_3V/Справочник/Связи_атрибутов_справочников|'''все атрибуты (транзитивные и собственные)''']], которые используются. Пример см.ниже "Пример фильтрации от транзитивного атрибута"
  
== Пример фильтрации от собственного атрибута ==
+
== Пример фильтрации от собственного атрибута справочника==
Справочник "Контрагенты" содержит связный атрибут "Виды контрагентов". Можно создать клиентскую карточку в которой, при выборе из выпадающего списка "Вида контрагентов", элементы следующего выпадающего списка "Контрагенты" будут только выбранного виду.
+
Справочник "Контрагенты" содержит связный атрибут "Виды контрагентов". Можно создать форму у в которой, при выборе из выпадающего списка "Вида контрагентов", элементы следующего выпадающего списка "Контрагенты" будут только выбранного вида.
 
[[Файл:Screenshot 2021-04-15 at 10.34.19.png|400px|безрамки|без]]
 
[[Файл:Screenshot 2021-04-15 at 10.34.19.png|400px|безрамки|без]]
<br>
 
<br>
 
<br><br>
 
<br>
 
<br>
 
<br>
 
<br>
 
<br>
 
<br>
 
<br>
 
<br>
 
<br>
 
<br>
 
  
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px; overflow:auto;">
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px; overflow:auto;">
Строка 64: Строка 53:
 
{
 
{
 
   "id": 10735,
 
   "id": 10735,
   "name": "Пример фильтра от справочника (EntryFilterDto)",
+
   "name": "Пример фильтра от справочника (EntryFilter)",
 
   "description": null,
 
   "description": null,
 
   "title": "Пример фильтрации_справочник от справочника",
 
   "title": "Пример фильтрации_справочник от справочника",
Строка 88: Строка 77:
 
       "visible": true,
 
       "visible": true,
 
       "hint": null,
 
       "hint": null,
      "uiDataSource": {
 
        "attribute": {
 
          "id": 21,
 
          "discriminator": "OwnAttributeDefinitionDto"
 
        },
 
        "attributeId": null,
 
        "sourceId": 1,
 
        "discriminator": "UiDataSourceDictionary"
 
      },
 
 
       "doActionOnChangeValue": true,
 
       "doActionOnChangeValue": true,
 
       "onAfterChangeValueConditionalActions": null,
 
       "onAfterChangeValueConditionalActions": null,
Строка 127: Строка 107:
 
       "visible": true,
 
       "visible": true,
 
       "hint": null,
 
       "hint": null,
      "uiDataSource": {
 
        "attribute": {
 
          "id": 2,
 
          "discriminator": "OwnAttributeDefinitionDto"
 
        },
 
        "attributeId": null,
 
        "sourceId": 1,
 
        "discriminator": "UiDataSourceDictionary"
 
      },
 
 
       "doActionOnChangeValue": false,
 
       "doActionOnChangeValue": false,
 
       "onAfterChangeValueConditionalActions": null,
 
       "onAfterChangeValueConditionalActions": null,
Строка 149: Строка 120:
 
   ],
 
   ],
 
   "entryDataSources": [
 
   "entryDataSources": [
    {
 
      "dictionaryId": 10736,
 
      "hierarchyId": null,
 
      "filter": null,
 
      "sortingOptions": null,
 
      "groupingOptions": null,
 
      "dictionaryAttributes": null,
 
      "defaultValue": [],
 
      "defaultValueExpressionId": null,
 
      "parameterId": null,
 
      "dictionarySourceSelectionMode": "None",
 
      "dataSourceAttributesAdditionsSettings": [],
 
      "externalFileStorageUrl": null,
 
      "filePrefix": null,
 
      "defaultNewElementSettings": null,
 
      "id": 1,
 
      "name": "Справочник",
 
      "isReadOnly": false,
 
      "dataEditRuleIds": [],
 
      "beforeSaveDataActions": [],
 
      "afterSaveDataActions": [],
 
      "discriminator": "DictionaryDataSource"
 
    },
 
 
     {
 
     {
 
       "dictionaryId": 10754,
 
       "dictionaryId": 10754,
Строка 211: Строка 159:
 
         "inversion": false,
 
         "inversion": false,
 
         "conditionId": null,
 
         "conditionId": null,
         "discriminator": "EntryFilterDto"
+
         "discriminator": "EntryFilter"
 
       },
 
       },
 
       "sortingOptions": null,
 
       "sortingOptions": null,
Строка 247: Строка 195:
 
</syntaxhighlight>
 
</syntaxhighlight>
 
</div></div>
 
</div></div>
Два контрола (uiSources): Вид контрагента (id=1) и Контрагенты (id=2).
+
Два поля - Выпадающих списка: Вид контрагента и Контрагенты с источниками-справочниками (Справочник видов контрагентов (id=2, "dictionaryId": 10754,) и справочник Контрагентов (id=3, "dictionaryId": 10755))
Три источника (entryDataSources): Справочник, куда данные будут записываться (id=1), справочник видов контроля (id=2, "dictionaryId": 10754,) и справочник Контрагентов (id=3, "dictionaryId": 10755).
 
  
 
В источник "Контрагенты" добавлен фильтр, в котором указан "dictionaryEntrySourceId": 2 - справочник видов контроля от значений которого идет фильтрация, далее указан номер атрибута справочника Контрагенты (id=1), в данном случае мы сравниваем по первому атрибуту - идентификатору. Далее обозначен атрибут текущего источника, справочника "Контрагенты", с которым мы сравниваем и в котором указан вид (id=21).
 
В источник "Контрагенты" добавлен фильтр, в котором указан "dictionaryEntrySourceId": 2 - справочник видов контроля от значений которого идет фильтрация, далее указан номер атрибута справочника Контрагенты (id=1), в данном случае мы сравниваем по первому атрибуту - идентификатору. Далее обозначен атрибут текущего источника, справочника "Контрагенты", с которым мы сравниваем и в котором указан вид (id=21).
 +
 +
Таким образом при выборе элемента в поле "Вид контрагента" будет происходить фильтрация в поле "Контрагенты "
 +
 +
Важно! Если необходимо, чтобы фильтрация происходила сразу после выбора "Вида контрагента", необходимо поставить флаг "Выполнить действие при изменении значения", в ином случае будет необходимо [[Платформа_3V/Формы/Действия/обновить источник| '''Условия''']]
 +
 
<syntaxhighlight lang="JSON" line>
 
<syntaxhighlight lang="JSON" line>
 
"filter": {
 
"filter": {
Строка 265: Строка 217:
 
         "inversion": false,
 
         "inversion": false,
 
         "conditionId": null,
 
         "conditionId": null,
         "discriminator": "EntryFilterDto"
+
         "discriminator": "EntryFilter"
 
       },
 
       },
 
</syntaxhighlight>
 
</syntaxhighlight>
Строка 358: Строка 310:
 
         "inversion": false,
 
         "inversion": false,
 
         "conditionId": null,
 
         "conditionId": null,
         "discriminator": "EntryFilterDto"
+
         "discriminator": "EntryFilter"
 
       }
 
       }
 
</syntaxhighlight>
 
</syntaxhighlight>
Строка 411: Строка 363:
 
{
 
{
 
   "id": 176,
 
   "id": 176,
   "name": "Пример фильтра от транзитивного атрибута справочника (EntryFilterDto)",
+
   "name": "Пример фильтра от транзитивного атрибута справочника (EntryFilter)",
 
   "description": null,
 
   "description": null,
   "title": "Пример фильтра от транзитивного атрибута справочника (EntryFilterDto)",
+
   "title": "Пример фильтра от транзитивного атрибута справочника (EntryFilter)",
 
   "entrySettings": null,
 
   "entrySettings": null,
 
   "uiSources": [
 
   "uiSources": [
Строка 616: Строка 568:
 
         "inversion": false,
 
         "inversion": false,
 
         "conditionId": null,
 
         "conditionId": null,
         "discriminator": "EntryFilterDto"
+
         "discriminator": "EntryFilter"
 
       },
 
       },
 
       "sortingOptions": null,
 
       "sortingOptions": null,
Строка 659: Строка 611:
 
         "inversion": false,
 
         "inversion": false,
 
         "conditionId": null,
 
         "conditionId": null,
         "discriminator": "EntryFilterDto"
+
         "discriminator": "EntryFilter"
 
       },
 
       },
 
       "sortingOptions": null,
 
       "sortingOptions": null,
Строка 706: Строка 658:
 
         "inversion": false,
 
         "inversion": false,
 
         "conditionId": null,
 
         "conditionId": null,
         "discriminator": "EntryFilterDto"
+
         "discriminator": "EntryFilter"
 
       },
 
       },
 
       "sortingOptions": null,
 
       "sortingOptions": null,

Текущая версия на 07:52, 12 октября 2022

Фильтр EntryFilter позволяет выбрать данные в справочнике относительно другого связного справочника. Элементы одного справочника будут отображаться в зависимости от выбранных элементов другого справочника. Элемент "filter" добавляется в источник, который необходимо отфильтровать. Фильтр имеет следующую структуру:

 1 "filter": {
 2         "dictionaryEntrySourceId": 2,
 3         "sourceAttribute": {
 4           "id": 21,
 5           "discriminator": "OwnAttributeDefinitionDto"
 6         },
 7         "attribute": {
 8           "id": 1,
 9           "discriminator": "OwnAttributeDefinitionDto"
10         },
11         "conditionType": "AttributeInCollection",
12         "inversion": false,
13         "conditionId": null,
14         "discriminator": "EntryFilter"
15           }

Описание свойств фильтра

Свойство Обязательность Описание
dictionaryEntrySourceId + Id источника данных на форме с типом "Справочник", от значений которого будут фильтроваться данные
sourceAttribute + Идентификатор атрибута справочника, от значений которого будут фильтроваться данные, указанного в dictionaryEntrySourceId
attribute + Идентификатор атрибута текущего настраиваемого справочника, с которым связано значение справочника от которого идет фильтрация. Указывается номер Id и тип атрибута в данном случае собственный (OwnAttributeDefinitionDto), так как используются данные текущего справочника.
discriminator + EntryFilter
conditionType - Тип условий
inversion + В значении "false" источник-справочник принимает значения, которые удовлетворяют фильтру, в значении "true" - все значения, которые наоборот не удовлетворяют ему
conditionId - Условия, при которых применяется фильтр

Особенности использования

Важно, если фильтрация происходит по связанному атрибуту с типом "Элемент справочника", фильтрация, т.е. связь sourceAttribute и attribute будет происходить по атрибуту "Идентификатор", а не по атрибуту "Наименование"!

При использовании в фильтрации источника - справочника транзитивного атрибута другого источника - справочника необходимо обязательно указать в источнике, от которого происходит фильтрация, в блоке "dictionaryAttributes" все атрибуты (транзитивные и собственные), которые используются. Пример см.ниже "Пример фильтрации от транзитивного атрибута"

Пример фильтрации от собственного атрибута справочника

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

Screenshot 2021-04-15 at 10.34.19.png
JSON серверной карточки
  1 {
  2   "id": 10735,
  3   "name": "Пример фильтра от справочника (EntryFilter)",
  4   "description": null,
  5   "title": "Пример фильтрации_справочник от справочника",
  6   "entrySettings": null,
  7   "uiSources": [
  8     {
  9       "dataSourceId": 2,
 10       "nameTemplate": "",
 11       "displayAttribute": null,
 12       "hasMultipleValue": false,
 13       "hasNullableValue": false,
 14       "maxElements": null,
 15       "hasServerFiltration": false,
 16       "searchSettings": {
 17         "maxElements": null,
 18         "minInputChars": 2,
 19         "searchMode": "Client",
 20         "debounceMs": 300
 21       },
 22       "id": 1,
 23       "caption": "Вид контрагента",
 24       "enable": true,
 25       "visible": true,
 26       "hint": null,
 27       "doActionOnChangeValue": true,
 28       "onAfterChangeValueConditionalActions": null,
 29       "onAfterChangeValueByClientConditionalActions": null,
 30       "rebuildDependentsObjectOnChange": true,
 31       "enableRuleIds": [],
 32       "visibleRuleIds": [],
 33       "access": null,
 34       "isValueChanged": true,
 35       "expressionId": null,
 36       "discriminator": "DictionarySourceEntry"
 37     },
 38     {
 39       "dataSourceId": 3,
 40       "nameTemplate": "",
 41       "displayAttribute": null,
 42       "hasMultipleValue": false,
 43       "hasNullableValue": false,
 44       "maxElements": null,
 45       "hasServerFiltration": false,
 46       "searchSettings": {
 47         "maxElements": null,
 48         "minInputChars": 2,
 49         "searchMode": "Client",
 50         "debounceMs": 300
 51       },
 52       "id": 2,
 53       "caption": "Контрагенты",
 54       "enable": true,
 55       "visible": true,
 56       "hint": null,
 57       "doActionOnChangeValue": false,
 58       "onAfterChangeValueConditionalActions": null,
 59       "onAfterChangeValueByClientConditionalActions": null,
 60       "rebuildDependentsObjectOnChange": true,
 61       "enableRuleIds": [],
 62       "visibleRuleIds": [],
 63       "access": null,
 64       "isValueChanged": false,
 65       "expressionId": null,
 66       "discriminator": "DictionarySourceEntry"
 67     }
 68   ],
 69   "entryDataSources": [
 70     {
 71       "dictionaryId": 10754,
 72       "hierarchyId": null,
 73       "filter": null,
 74       "sortingOptions": null,
 75       "groupingOptions": null,
 76       "dictionaryAttributes": null,
 77       "defaultValue": [],
 78       "defaultValueExpressionId": null,
 79       "parameterId": null,
 80       "dictionarySourceSelectionMode": "None",
 81       "dataSourceAttributesAdditionsSettings": [],
 82       "externalFileStorageUrl": null,
 83       "filePrefix": null,
 84       "defaultNewElementSettings": null,
 85       "id": 2,
 86       "name": "Вид контрагента",
 87       "isReadOnly": true,
 88       "dataEditRuleIds": [],
 89       "beforeSaveDataActions": [],
 90       "afterSaveDataActions": [],
 91       "discriminator": "DictionaryDataSource"
 92     },
 93     {
 94       "dictionaryId": 10755,
 95       "hierarchyId": null,
 96       "filter": {
 97         "dictionaryEntrySourceId": 2,
 98         "sourceAttribute": {
 99           "id": 1,
100           "discriminator": "OwnAttributeDefinitionDto"
101         },
102         "attribute": {
103           "id": 21,
104           "discriminator": "OwnAttributeDefinitionDto"
105         },
106         "conditionType": "AttributeInCollection",
107         "inversion": false,
108         "conditionId": null,
109         "discriminator": "EntryFilter"
110       },
111       "sortingOptions": null,
112       "groupingOptions": null,
113       "dictionaryAttributes": [],
114       "defaultValue": [],
115       "defaultValueExpressionId": null,
116       "parameterId": null,
117       "dictionarySourceSelectionMode": "None",
118       "dataSourceAttributesAdditionsSettings": [],
119       "externalFileStorageUrl": null,
120       "filePrefix": null,
121       "defaultNewElementSettings": null,
122       "id": 3,
123       "name": "Контрагенты",
124       "isReadOnly": true,
125       "dataEditRuleIds": [],
126       "beforeSaveDataActions": [],
127       "afterSaveDataActions": [],
128       "discriminator": "DictionaryDataSource"
129     }
130   ],
131   "parameters": [],
132   "binaryConditionsRules": [],
133   "submitValidateRules": [],
134   "expressions": [],
135   "controlsValueCalculateRules": [],
136   "actions": [],
137   "conditionActionIdsOnOpen": [],
138   "conditionalActions": [],
139   "selectionSets": [],
140   "reportTemplates": [],
141   "useNewDependenciesBuilder": null
142 }

Два поля - Выпадающих списка: Вид контрагента и Контрагенты с источниками-справочниками (Справочник видов контрагентов (id=2, "dictionaryId": 10754,) и справочник Контрагентов (id=3, "dictionaryId": 10755))

В источник "Контрагенты" добавлен фильтр, в котором указан "dictionaryEntrySourceId": 2 - справочник видов контроля от значений которого идет фильтрация, далее указан номер атрибута справочника Контрагенты (id=1), в данном случае мы сравниваем по первому атрибуту - идентификатору. Далее обозначен атрибут текущего источника, справочника "Контрагенты", с которым мы сравниваем и в котором указан вид (id=21).

Таким образом при выборе элемента в поле "Вид контрагента" будет происходить фильтрация в поле "Контрагенты "

Важно! Если необходимо, чтобы фильтрация происходила сразу после выбора "Вида контрагента", необходимо поставить флаг "Выполнить действие при изменении значения", в ином случае будет необходимо Условия

 1 "filter": {
 2         "dictionaryEntrySourceId": 2,
 3         "sourceAttribute": {
 4           "id": 1,
 5           "discriminator": "OwnAttributeDefinitionDto"
 6         },
 7         "attribute": {
 8           "id": 21,
 9           "discriminator": "OwnAttributeDefinitionDto"
10         },
11         "conditionType": "AttributeInCollection",
12         "inversion": false,
13         "conditionId": null,
14         "discriminator": "EntryFilter"
15       },

Пример фильтрации от транзитивного атрибута

Справочник "Контрагенты" содержит атрибут "Адрес (дома)", который связан со справочником номеров домов, элементы которого в свою очередь имеют связанный атрибут "Улица", который связан со справочником "Города". Таблицы выглядят следующим образом:

Контрагенты

Идентификатор (id=1) Наименование (id=2) Полное наименование (id=21) Адрес (дома) (id=22)
1 Петров П.П Петров Петр Петрович 3 (id=3)
2 Сидоров С.С. Сидоров Семен Сергеевич 30 (id=12)
3 Иванов И.И. Иванов Илья Игоревич 3а (id=15)

Номера домов

Идентификатор (id=1) Номер дома (id=2) Улица (id=21)
1 1 Ленина (id=1)
2 2 Ленина (id=1)
3 3 Ленина (id=1)
... ... ...
12 30 Баумана (id=4)
... ... ...
15 Мира (id=5)

Улицы

Идентификатор (id=1) Наименование (id=2) Город (id=21)
1 Ленина Москва (id=1)
2 Ленина Москва (id=1)
... ... ...
4 Баумана Пермь (id=2)
5 Мира Соликамск (id=3)

Города

Идентификатор (id=1) Наименование (id=2)
1 Москва
2 Пермь
3 Соликамск

Чтобы отфильтровать справочник городов напрямую от справочника контрагентов, необходимо в справочнике - источнике "Города" указать следующий фильтр, где в свойстве "sourceAttribute" указать транзитивную связь от справочника "Контрагенты" до справочника "Города":

 1 "filter": {
 2         "dictionaryEntrySourceId": 1,
 3         "sourceAttributeId": null,
 4         "sourceAttribute": {
 5           "innerAttribute": {
 6             "innerAttribute": {
 7               "id": 21,
 8               "discriminator": "OwnAttributeDefinitionDto"
 9             },
10             "id": 21,
11             "discriminator": "TransitiveAttributeDefinitionDto"
12           },
13           "id": 22,
14           "discriminator": "TransitiveAttributeDefinitionDto"
15         },
16         "attributeId": null,
17         "attribute": {
18           "id": 1,
19           "discriminator": "OwnAttributeDefinitionDto"
20         },
21         "conditionType": "AttributeInCollection",
22         "inversion": false,
23         "conditionId": null,
24         "discriminator": "EntryFilter"
25       }

А также в самом справочнике контрагентов необходимо указать эту же связь до транзитивного атрибута в свойстве "dictionaryAttributes":

 1   "dictionaryAttributes": [
 2         {
 3           "innerAttribute": {
 4             "innerAttribute": {
 5               "id": 21,
 6               "discriminator": "OwnAttributeDefinitionDto"
 7             },
 8             "id": 21,
 9             "discriminator": "TransitiveAttributeDefinitionDto"
10           },
11           "id": 22,
12           "discriminator": "TransitiveAttributeDefinitionDto"
13         }
14       ]

При появлении хотя бы одного атрибута (собственного или транзитивного) в "dictionaryAttributes" все прочие собственные атрибуты данного справочника загружаться в серверную карточку не будут, для этого необходимо указывать все требуемые атрибуты. Например, при появлении фильтрации, которая описана выше, для отображения в карточке атрибута "Полое наименование" (id = 21) необходимо прописать данный атрибут в "dictionaryAttributes":

 1   "dictionaryAttributes": [
 2         {
 3           "innerAttribute": {
 4             "innerAttribute": {
 5               "id": 21,
 6               "discriminator": "OwnAttributeDefinitionDto"
 7             },
 8             "id": 21,
 9             "discriminator": "TransitiveAttributeDefinitionDto"
10           },
11           "id": 22,
12           "discriminator": "TransitiveAttributeDefinitionDto"
13         },
14         {
15           "id": 21,
16           "discriminator": "OwnAttributeDefinitionDto"
17         }
18       ]
фильтр от транизитивного атрибута.gif

В примере JSON фильтрация от контрагента происходит как для справочника городов, так и для номеров домов и улиц.

JSON серверной карточки
  1 {
  2   "id": 176,
  3   "name": "Пример фильтра от транзитивного атрибута справочника (EntryFilter)",
  4   "description": null,
  5   "title": "Пример фильтра от транзитивного атрибута справочника (EntryFilter)",
  6   "entrySettings": null,
  7   "uiSources": [
  8     {
  9       "dataSourceId": 1,
 10       "nameTemplate": "",
 11       "displayAttribute": null,
 12       "hasMultipleValue": false,
 13       "hasNullableValue": false,
 14       "maxElements": null,
 15       "hasServerFiltration": false,
 16       "id": 1,
 17       "caption": "Контрагенты",
 18       "enable": true,
 19       "visible": true,
 20       "hint": null,
 21       "doActionOnChangeValue": true,
 22       "onAfterChangeValueConditionalActions": null,
 23       "onAfterChangeValueByClientConditionalActions": null,
 24       "rebuildDependentsObjectOnChange": true,
 25       "enableRuleIds": [],
 26       "visibleRuleIds": [],
 27       "access": null,
 28       "isValueChanged": true,
 29       "expressionId": null,
 30       "discriminator": "DictionarySourceEntry"
 31     },
 32     {
 33       "dataSourceId": 2,
 34       "nameTemplate": "",
 35       "displayAttribute": null,
 36       "hasMultipleValue": false,
 37       "hasNullableValue": false,
 38       "maxElements": null,
 39       "hasServerFiltration": false,
 40       "id": 2,
 41       "caption": "Номера домов",
 42       "enable": true,
 43       "visible": true,
 44       "hint": null,
 45       "doActionOnChangeValue": true,
 46       "onAfterChangeValueConditionalActions": null,
 47       "onAfterChangeValueByClientConditionalActions": null,
 48       "rebuildDependentsObjectOnChange": true,
 49       "enableRuleIds": [],
 50       "visibleRuleIds": [],
 51       "access": null,
 52       "isValueChanged": true,
 53       "expressionId": null,
 54       "discriminator": "DictionarySourceEntry"
 55     },
 56     {
 57       "dataSourceId": 3,
 58       "nameTemplate": "",
 59       "displayAttribute": null,
 60       "hasMultipleValue": false,
 61       "hasNullableValue": false,
 62       "maxElements": null,
 63       "hasServerFiltration": false,
 64       "id": 3,
 65       "caption": "Улица",
 66       "enable": true,
 67       "visible": true,
 68       "hint": null,
 69       "doActionOnChangeValue": true,
 70       "onAfterChangeValueConditionalActions": null,
 71       "onAfterChangeValueByClientConditionalActions": null,
 72       "rebuildDependentsObjectOnChange": true,
 73       "enableRuleIds": [],
 74       "visibleRuleIds": [],
 75       "access": null,
 76       "isValueChanged": true,
 77       "expressionId": null,
 78       "discriminator": "DictionarySourceEntry"
 79     },
 80     {
 81       "dataSourceId": 4,
 82       "nameTemplate": "",
 83       "displayAttribute": null,
 84       "hasMultipleValue": false,
 85       "hasNullableValue": false,
 86       "maxElements": null,
 87       "hasServerFiltration": false,
 88       "id": 4,
 89       "caption": "Город",
 90       "enable": true,
 91       "visible": true,
 92       "hint": null,
 93       "doActionOnChangeValue": true,
 94       "onAfterChangeValueConditionalActions": null,
 95       "onAfterChangeValueByClientConditionalActions": null,
 96       "rebuildDependentsObjectOnChange": true,
 97       "enableRuleIds": [],
 98       "visibleRuleIds": [],
 99       "access": null,
100       "isValueChanged": true,
101       "expressionId": null,
102       "discriminator": "DictionarySourceEntry"
103     },
104     {
105       "nameTemplate": "",
106       "displayAttribute": null,
107       "hasMultipleValue": false,
108       "hasNullableValue": false,
109       "maxElements": null,
110       "hasServerFiltration": false,
111       "id": 121,
112       "uiDataSource": {
113         "attribute": {
114           "id": 21,
115           "discriminator": "OwnAttributeDefinitionDto"
116         },
117         "attributeId": null,
118         "sourceId": 1,
119         "discriminator": "UiDataSourceDictionary"
120       },
121       "caption": "Полное наименование.Контрагенты",
122       "enable": true,
123       "visible": true,
124       "hint": null,
125       "doActionOnChangeValue": true,
126       "onAfterChangeValueConditionalActions": null,
127       "onAfterChangeValueByClientConditionalActions": null,
128       "rebuildDependentsObjectOnChange": true,
129       "enableRuleIds": [],
130       "visibleRuleIds": [],
131       "access": null,
132       "isValueChanged": true,
133       "expressionId": null,
134       "discriminator": "StringSourceEntry"
135     }
136   ],
137   "entryDataSources": [
138     {
139       "dictionaryId": 174,
140       "hierarchyId": null,
141       "filter": null,
142       "sortingOptions": null,
143       "groupingOptions": null,
144       "dictionaryAttributes": [
145         {
146           "innerAttribute": {
147             "innerAttribute": {
148               "id": 21,
149               "discriminator": "OwnAttributeDefinitionDto"
150             },
151             "id": 21,
152             "discriminator": "TransitiveAttributeDefinitionDto"
153           },
154           "id": 22,
155           "discriminator": "TransitiveAttributeDefinitionDto"
156         },
157         {
158           "innerAttribute": {
159             "id": 21,
160             "discriminator": "OwnAttributeDefinitionDto"
161           },
162           "id": 22,
163           "discriminator": "TransitiveAttributeDefinitionDto"
164         },
165         {
166           "id": 22,
167           "discriminator": "OwnAttributeDefinitionDto"
168         },
169         {
170           "id": 21,
171           "discriminator": "OwnAttributeDefinitionDto"
172         }
173       ],
174       "defaultValue": [],
175       "defaultValueExpressionId": null,
176       "parameterId": null,
177       "dictionarySourceSelectionMode": "None",
178       "dataSourceAttributesAdditionsSettings": [],
179       "externalFileStorageUrl": null,
180       "filePrefix": null,
181       "defaultNewElementSettings": null,
182       "id": 1,
183       "name": "Контрагенты",
184       "isReadOnly": false,
185       "dataEditRuleIds": [],
186       "beforeSaveDataActions": [],
187       "afterSaveDataActions": [],
188       "discriminator": "DictionaryDataSource"
189     },
190     {
191       "dictionaryId": 173,
192       "hierarchyId": null,
193       "filter": {
194         "dictionaryEntrySourceId": 1,
195         "sourceAttributeId": null,
196         "sourceAttribute": {
197           "id": 22,
198           "discriminator": "OwnAttributeDefinitionDto"
199         },
200         "attributeId": null,
201         "attribute": {
202           "id": 1,
203           "discriminator": "OwnAttributeDefinitionDto"
204         },
205         "conditionType": "AttributeInCollection",
206         "inversion": false,
207         "conditionId": null,
208         "discriminator": "EntryFilter"
209       },
210       "sortingOptions": null,
211       "groupingOptions": null,
212       "dictionaryAttributes": null,
213       "defaultValue": [],
214       "defaultValueExpressionId": null,
215       "parameterId": null,
216       "dictionarySourceSelectionMode": "SelectFirst",
217       "dataSourceAttributesAdditionsSettings": [],
218       "externalFileStorageUrl": null,
219       "filePrefix": null,
220       "defaultNewElementSettings": null,
221       "id": 2,
222       "name": "Номер дома",
223       "isReadOnly": true,
224       "dataEditRuleIds": [],
225       "beforeSaveDataActions": [],
226       "afterSaveDataActions": [],
227       "discriminator": "DictionaryDataSource"
228     },
229     {
230       "dictionaryId": 172,
231       "hierarchyId": null,
232       "filter": {
233         "dictionaryEntrySourceId": 1,
234         "sourceAttributeId": null,
235         "sourceAttribute": {
236           "innerAttribute": {
237             "id": 21,
238             "discriminator": "OwnAttributeDefinitionDto"
239           },
240           "id": 22,
241           "discriminator": "TransitiveAttributeDefinitionDto"
242         },
243         "attributeId": null,
244         "attribute": {
245           "id": 1,
246           "discriminator": "OwnAttributeDefinitionDto"
247         },
248         "conditionType": "AttributeInCollection",
249         "inversion": false,
250         "conditionId": null,
251         "discriminator": "EntryFilter"
252       },
253       "sortingOptions": null,
254       "groupingOptions": null,
255       "dictionaryAttributes": [],
256       "defaultValue": [],
257       "defaultValueExpressionId": null,
258       "parameterId": null,
259       "dictionarySourceSelectionMode": "SelectFirst",
260       "dataSourceAttributesAdditionsSettings": [],
261       "externalFileStorageUrl": null,
262       "filePrefix": null,
263       "defaultNewElementSettings": null,
264       "id": 3,
265       "name": "Улицы",
266       "isReadOnly": true,
267       "dataEditRuleIds": [],
268       "beforeSaveDataActions": [],
269       "afterSaveDataActions": [],
270       "discriminator": "DictionaryDataSource"
271     },
272     {
273       "dictionaryId": 170,
274       "hierarchyId": null,
275       "filter": {
276         "dictionaryEntrySourceId": 1,
277         "sourceAttributeId": null,
278         "sourceAttribute": {
279           "innerAttribute": {
280             "innerAttribute": {
281               "id": 21,
282               "discriminator": "OwnAttributeDefinitionDto"
283             },
284             "id": 21,
285             "discriminator": "TransitiveAttributeDefinitionDto"
286           },
287           "id": 22,
288           "discriminator": "TransitiveAttributeDefinitionDto"
289         },
290         "attributeId": null,
291         "attribute": {
292           "id": 1,
293           "discriminator": "OwnAttributeDefinitionDto"
294         },
295         "conditionType": "AttributeInCollection",
296         "inversion": false,
297         "conditionId": null,
298         "discriminator": "EntryFilter"
299       },
300       "sortingOptions": null,
301       "groupingOptions": null,
302       "dictionaryAttributes": [],
303       "defaultValue": [],
304       "defaultValueExpressionId": null,
305       "parameterId": null,
306       "dictionarySourceSelectionMode": "SelectFirst",
307       "dataSourceAttributesAdditionsSettings": [],
308       "externalFileStorageUrl": null,
309       "filePrefix": null,
310       "defaultNewElementSettings": null,
311       "id": 4,
312       "name": "Города",
313       "isReadOnly": true,
314       "dataEditRuleIds": [],
315       "beforeSaveDataActions": [],
316       "afterSaveDataActions": [],
317       "discriminator": "DictionaryDataSource"
318     }
319   ],
320   "parameters": [],
321   "binaryConditionsRules": [],
322   "submitValidateRules": [],
323   "expressions": [],
324   "controlsValueCalculateRules": [],
325   "actions": [],
326   "conditionActionIdsOnOpen": [],
327   "conditionalActions": [],
328   "selectionSets": [],
329   "reportTemplates": [],
330   "useNewDependenciesBuilder": null
331 }