Платформа 3V/Справочник/Задание атрибутов в справочнике/Вычислимые атрибуты

Материал из 3v-wiki
< Платформа 3V‎ | Справочник‎ | Задание атрибутов в справочнике
Версия от 14:11, 29 ноября 2021; Il.iashin (обсуждение | вклад)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к навигации Перейти к поиску

Вычислимый атрибут - это атрибут, значение которого вычисляется по формуле.

Пример: При помощи вычислимого столбца можно вывести Ф.И.О. сотрудника в одном столбце, если в справочнике есть атрибуты: Фамилия, Имя, Отчество.

Для создания вычислимого атрибута необходимо: 1. Создать атрибут с типом "Вычислимый" ("type": "Calculated"); 2. Установить для атрибута режим "Только для чтения" ("isReadOnly: true"); 2. Задать для атрибута формулу вычисления (formula).

Пример:

 1 [{
 2         "id": 21,
 3         "name": "Имя",
 4         "dataType": "String"
 5     }, {
 6         "id": 22,
 7         "name": "Фамилия",
 8         "dataType": "String"
 9     }, {
10         "id": 23,
11         "name": "Отчество",
12         "dataType": "String"
13     }, {
14         "id": 24,
15         "name": "Ф.И.О",
16         "type": "Calculated",
17         "isReadOnly": true,
18         "dataType": "String",
19         "formula": {
20             "id": 1,
21             "name": "Формула вычисления Ф.И.О"
22             "code": "FIO_FORMULA",
23             "expression": "[0]+[1]+[2]",
24             "operands": [{
25                     "id": 1,
26                     "code": null,
27                     "name": null,
28                     "discriminator": "InvariantAttributeFormulaOperandDto",
29                     "attribute": {
30                         "id": 22,
31                         "discriminator": "OwnAttributeDefinitionDto"
32                     },
33                 }, {
34                     "id": 2,
35                     "code": null,
36                     "name": null,
37                     "discriminator": "InvariantAttributeFormulaOperandDto",
38                     "attribute": {
39                         "id": 21,
40                         "discriminator": "OwnAttributeDefinitionDto"
41                     }
42                 }, {
43                     "id": 3,
44                     "code": null,
45                     "name": null,
46                     "discriminator": "InvariantAttributeFormulaOperandDto",
47                     "attribute": {
48                         "id": 23,
49                         "discriminator": "OwnAttributeDefinitionDto"
50                     }
51                 }
52             ]
53         }
54     }
55 ]


Еще пример описания вычислимого атрибута в json:

 1    {
 2         "id": 25,
 3         "name": "Выч. атрибут Bool",
 4         "code": "CODE_8",
 5         "description": "",
 6         "dataType": "Boolean",
 7         "type": "Calculated",
 8         "isNullable": true,
 9         "hasMultipleValues": false,
10         "isVisible": true,
11         "isReadOnly": false,
12         "formula": {
13           "expression": "[1] > 2",
14           "operands": [
15             {
16               "attribute": {
17                 "discriminator": "OwnAttributeDefinitionDto",
18                 "id": 1
19               },
20               "discriminator": "InvariantAttributeFormulaOperandDto",
21               "code": null,
22               "id": 1,
23               "name": null
24             }
25           ],
26           "code": null,
27           "id": 0,
28           "name": null
29         },
30         "tableName": "",
31         "identIndex": {
32           "code": null,
33           "isUnique": false,
34           "dbIndexName": null,
35           "fields": [],
36           "isNew": true
37         },
38         "referenceIndex": {
39           "code": null,
40           "isUnique": false,
41           "dbIndexName": null,
42           "fields": [],
43           "isNew": true
44         },
45         "defaultValue": null,
46         "defaultValueExpression": null,
47         "component": null,
48         "parentAttributeId": null,
49         "locale": null
50       }