Платформа 3V/Методика/Настроить параметры

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

По аналогии с параметрами отчета, в методике расчета можно использоваться параметры простые, типизированные и параметры на справочнике. параметр методика.png

Простой параметр (SimpleValueParameterDto)

Простой параметр - это параметр значение которого задается константой.

 1     {
 2       "defaultValue": "Значение по умолчанию",
 3       "value": "Значение",
 4       "isMultiselect": false,
 5       "isEmptyValuePossible": false,
 6       "isDisableable": false,
 7       "isDisabled": false,
 8       "dataControlOptions": null,
 9       "id": 1,
10       "name": "Простой параметр",
11       "discriminator": "SimpleValueParameterDto"
12     }
Свойство Описание
id Идентификатор параметра
name Наименование параметра
isMultiselect Признак, что параметр может иметь множественное значение
isEmptyValuePossible Признак, что параметр может иметь пустое значение
isDisableable Признак, что параметр может быть отключён
IsDisabled Признак, что параметр отключен
DataControlOptions Настройки элемента управления (контрола) параметром DataControlOptionsDto
value Значение параметра, если isMultiselect == true, то в значении может быть массив значений.
defaultValue Значение параметра по умолчанию

Типизированный параметр (TypedValueParameterDto)

Типизированный параметр - это параметр значение которого задается типизированной константой.

 1     {
 2       "dataType": "String",
 3       "defaultValue": "Значение по умолчанию",
 4       "value": "Значение",
 5       "isMultiselect": false,
 6       "isEmptyValuePossible": false,
 7       "isDisableable": false,
 8       "isDisabled": false,
 9       "dataControlOptions": null,
10       "id": 1,
11       "name": "Типизированный параметр",
12       "discriminator": "TypedValueParameterDto"
13     }

Ключевое отличие типизированного параметра от простого заключается в строгой типизации значения, если для простого параметра не важно что в значение будет: строка, число, дата, то для типизированного важно.

Свойство Описание
dataType Тип данных значений параметра


Остальные свойства TypedValueParameterDto такие же как в SimpleValueParameterDto за исключением dataType.

Параметр на справочнике (DictionaryParameterDto)

Параметр на справочнике - это параметр значения которого берутся из атрибута справочника.

 1     {
 2       "options": {
 3         "groupingOptions": null,
 4         "groupingMethod": "Default",
 5         "sortingOptions": null,
 6         "rootElement": null,
 7         "virtualElements": null,
 8         "displayValueOptions": null,
 9         "dictionaryId": 8237,
10         "filter": null,
11         "selection": null,
12         "hierarchyId": null
13       },
14       "selectionFilter": {
15         "value": [
16           1
17         ],
18         "skipIfValueNull": false,
19         "attributeId": null,
20         "attribute": {
21           "id": 1,
22           "discriminator": "OwnAttributeDefinitionDto"
23         },
24         "conditionType": "AttributeInCollection",
25         "inversion": false,
26         "discriminator": "ValueConditionalDictionaryFilterDto"
27       },
28       "attributeValues": null,
29       "defaultValue": [],
30       "value": null,
31       "isMultiselect": false,
32       "isEmptyValuePossible": true,
33       "isDisableable": false,
34       "isDisabled": false,
35       "dataControlOptions": null,
36       "id": 2,
37       "name": "Ремонты",
38       "discriminator": "DictionaryParameterDto"
39     }
Свойство Описание
options Настройки справочника для параметра DictionaryOptionsDto
attributeValues Значения атрибута справочника, которые будут использоваться в качестве значений (вместо value) DictionaryAttributeParameterValueDto
selectionFilter Фильтр, по которому будет определятся отметка справочника в параметре.

Свойства dictionaryId, sortingOptions, displayValueOptions являются устаревшими.
Остальные свойства DictionaryParameterDto такие же как в SimpleValueParameterDto.

Способы задания отметки для параметра на справочнике

  1. Value или DefaultValue
  2. AttributeValues (Теперь устаревшее, т.к. появился фильтр, но поддержка остается)
  3. SelectionFilter

Приоритет отдается SelectionFilter, затем AttributeValues и в последнюю очередь Value и DefaultValue.

При открытии отмечать все элементы

 1  "selectionFilter": {
 2         "value": null,
 3         "skipIfValueNull": false,
 4         "attributeId": null,
 5         "attribute": {
 6           "id": 1,
 7           "discriminator": "OwnAttributeDefinitionDto"
 8         },
 9         "conditionType": "AllElements",
10         "inversion": false,
11         "discriminator": "ValueConditionalDictionaryFilterDto"
12       },

Вычислимый параметр

Вычислимый параметр - это параметр значение которых вычисляется по выражению.

  1. Вычисление значения параметра поддерживается только для SimpleValueParameterDto.
  2. Выражение описывается в свойстве параметра DefaultValue или Value.
  3. Выражение ДОЛЖНО начинаться с символа '=', например "=1+2".
  4. Тип данных параметра определяется по результату вычисления, поэтому нет смысла использовать TypedValueParameterDto.

Лучше вначале настроить фильтрацию справочник на параметр, заданный через конструктор, а затем переназначить через json на добавленный вычислимый параметр SimpleValueParameterDto , т.к. вычислимый SimpleValueParameterDto не очень корректно отображаются в конструкторе на текущий момент.

Пример описания параметра с вычислением даты завтрашнего дня.

1 {
2    "id": 1,
3    "name": "Завтра",
4    "IsDisabled": true,
5    "defaultValue": "=Now()+1",    
6    "discriminator": "SimpleValueParameterDto"
7 }

Пример описания параметра с вычислением числа.

1 {
2    "id": 1,
3    "name": "Число",
4    "IsDisabled": true,
5    "defaultValue": "=1 + 2.3",    
6    "discriminator": "SimpleValueParameterDto"
7 }

Пример описания параметра с вычислением строки.

1 {
2    "id": 1,
3    "name": "Строка",
4    "IsDisabled": true,
5    "defaultValue": "=('ab' + 'cd')",    
6    "discriminator": "SimpleValueParameterDto"
7 }

Пример методики с параметром равным текущему дню

Ссылка на пример на study: https://study.3v-cloud.com/navigator/#/?viewId=883

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

  1 {
  2   "parameters": [
  3     {
  4       "dataType": "DateTime",
  5       "discriminator": "TypedValueParameterDto",
  6       "defaultValue": [
  7         "2021-11-11T00:00:00Z"
  8       ],
  9       "value": [
 10         "2021-11-11T00:00:00Z"
 11       ],
 12       "isMultiselect": false,
 13       "isEmptyValuePossible": true,
 14       "isDisableable": false,
 15       "isDisabled": false,
 16       "id": 1,
 17       "name": "New calendar dictionary"
 18     },
 19     {
 20       "discriminator": "SimpleValueParameterDto",
 21       "defaultValue": "=Today()",
 22       "value": null,
 23       "isMultiselect": false,
 24       "isEmptyValuePossible": false,
 25       "isDisableable": false,
 26       "isDisabled": false,
 27       "id": 2,
 28       "name": "Сегодня"
 29     }
 30   ],
 31   "folders": [],
 32   "formulas": [
 33     {
 34       "expression": "[1]",
 35       "operands": [
 36         {
 37           "sourceId": 2,
 38           "aggregationType": "None",
 39           "selections": [
 40             {
 41               "attributeMapping": [],
 42               "dictionaryId": 140425,
 43               "filter": {
 44                 "type": "And",
 45                 "filters": [
 46                   {
 47                     "value": [
 48                       6
 49                     ],
 50                     "skipIfValueNull": false,
 51                     "attributeId": null,
 52                     "attribute": {
 53                       "discriminator": "OwnAttributeDefinitionDto",
 54                       "id": 7
 55                     },
 56                     "conditionType": "AttributeEqualConstant",
 57                     "discriminator": "ValueConditionalDictionaryFilterDto",
 58                     "inversion": false
 59                   },
 60                   {
 61                     "value": {
 62                       "id": 2,
 63                       "name": null
 64                     },
 65                     "skipIfValueNull": false,
 66                     "attributeId": 5,
 67                     "attribute": {
 68                       "discriminator": "OwnAttributeDefinitionDto",
 69                       "id": 5
 70                     },
 71                     "conditionType": "AttributeEqualConstant",
 72                     "discriminator": "ParameterConditionalDictionaryFilterDto",
 73                     "inversion": false
 74                   }
 75                 ],
 76                 "discriminator": "CompoundDictionaryFilterDto",
 77                 "inversion": false
 78               },
 79               "hierarchyId": null,
 80               "limit": null
 81             }
 82           ],
 83           "dictionarySelectionTransformations": [],
 84           "asArray": false,
 85           "code": null,
 86           "id": 1,
 87           "name": "New calendar dictionary"
 88         }
 89       ],
 90       "dataFilters": [],
 91       "discriminator": "CalculationFormulaDto",
 92       "enable": true,
 93       "folderId": null,
 94       "sourceId": 1,
 95       "selections": [
 96         {
 97           "attributeMapping": [],
 98           "dictionaryId": 16255,
 99           "filter": {
100             "value": null,
101             "skipIfValueNull": false,
102             "attributeId": null,
103             "attribute": {
104               "discriminator": "OwnAttributeDefinitionDto",
105               "id": 1
106             },
107             "conditionType": "AllElements",
108             "discriminator": "ValueConditionalDictionaryFilterDto",
109             "inversion": false
110           },
111           "hierarchyId": null,
112           "limit": null
113         }
114       ],
115       "code": null,
116       "id": 1,
117       "name": "Formula1"
118     }
119   ],
120   "sources": [
121     {
122       "metaObjectId": 140424,
123       "discriminator": "IndicatorSourceDto",
124       "id": 1,
125       "name": "New indicator"
126     },
127     {
128       "attribute": {
129         "discriminator": "OwnAttributeDefinitionDto",
130         "id": 2
131       },
132       "metaObjectId": 140425,
133       "discriminator": "DictionaryAttributeSourceDto",
134       "id": 2,
135       "name": "New calendar dictionary"
136     }
137   ],
138   "maxCalculationIdleSec": null,
139   "maxOverallCalculationCoords": null,
140   "code": "New_CalculationMethod_259",
141   "id": 140423,
142   "name": "New calculation method"
143 }