Платформа 3V/Методика/Настроить параметры: различия между версиями

Материал из 3v-wiki
Перейти к навигации Перейти к поиску
 
(не показаны 2 промежуточные версии этого же участника)
Строка 1: Строка 1:
Страница в разработке
+
По аналогии с параметрами отчета, в методике расчета можно использоваться параметры простые, типизированные и параметры на справочнике.
 +
[[Файл:параметр методика.png]] <br>
 +
 
 +
== Простой параметр (SimpleValueParameterDto) ==
 +
'''Простой параметр''' - это параметр значение которого задается константой.
 +
 
 +
<syntaxhighlight lang="JSON" line>
 +
    {
 +
      "defaultValue": "Значение по умолчанию",
 +
      "value": "Значение",
 +
      "isMultiselect": false,
 +
      "isEmptyValuePossible": false,
 +
      "isDisableable": false,
 +
      "isDisabled": false,
 +
      "dataControlOptions": null,
 +
      "id": 1,
 +
      "name": "Простой параметр",
 +
      "discriminator": "SimpleValueParameterDto"
 +
    }
 +
</syntaxhighlight>
 +
 
 +
{| class="wikitable"
 +
|-
 +
! Свойство !! Описание
 +
|-
 +
| id || Идентификатор параметра
 +
|-
 +
| name || Наименование параметра
 +
|-
 +
| isMultiselect || Признак, что параметр может иметь множественное значение
 +
|-
 +
| isEmptyValuePossible || Признак, что параметр может иметь пустое значение
 +
|-
 +
| isDisableable || Признак, что параметр может быть отключён
 +
|-
 +
| IsDisabled || Признак, что параметр отключен
 +
|-
 +
| DataControlOptions || Настройки элемента управления (контрола) параметром [[Платформа_3V/Отчет/PivotDto/DataControlOptionsDto|'''DataControlOptionsDto''']]
 +
|-
 +
| value || Значение параметра, если isMultiselect == true, то в значении может быть массив значений.
 +
|-
 +
| defaultValue || Значение параметра по умолчанию
 +
|}
 +
 
 +
== Типизированный параметр (TypedValueParameterDto) ==
 +
'''Типизированный параметр''' - это параметр значение которого задается типизированной константой.
 +
 
 +
<syntaxhighlight lang="JSON" line>
 +
    {
 +
      "dataType": "String",
 +
      "defaultValue": "Значение по умолчанию",
 +
      "value": "Значение",
 +
      "isMultiselect": false,
 +
      "isEmptyValuePossible": false,
 +
      "isDisableable": false,
 +
      "isDisabled": false,
 +
      "dataControlOptions": null,
 +
      "id": 1,
 +
      "name": "Типизированный параметр",
 +
      "discriminator": "TypedValueParameterDto"
 +
    }
 +
</syntaxhighlight>
 +
 
 +
Ключевое отличие типизированного параметра от простого заключается в строгой типизации значения, если для простого параметра не важно что в значение будет: строка, число, дата, то для типизированного важно.
 +
 
 +
{| class="wikitable"
 +
|-
 +
! Свойство !! Описание
 +
|-
 +
| dataType || Тип данных значений параметра
 +
|}
 +
</br>
 +
Остальные свойства '''TypedValueParameterDto''' такие же как в '''SimpleValueParameterDto''' за исключением dataType.
 +
 
 +
== Параметр на справочнике (DictionaryParameterDto) ==
 +
'''Параметр на справочнике''' - это параметр значения которого берутся из атрибута справочника.
 +
 
 +
<syntaxhighlight lang="JSON" line>
 +
    {
 +
      "options": {
 +
        "groupingOptions": null,
 +
        "groupingMethod": "Default",
 +
        "sortingOptions": null,
 +
        "rootElement": null,
 +
        "virtualElements": null,
 +
        "displayValueOptions": null,
 +
        "dictionaryId": 8237,
 +
        "filter": null,
 +
        "selection": null,
 +
        "hierarchyId": null
 +
      },
 +
      "selectionFilter": {
 +
        "value": [
 +
          1
 +
        ],
 +
        "skipIfValueNull": false,
 +
        "attributeId": null,
 +
        "attribute": {
 +
          "id": 1,
 +
          "discriminator": "OwnAttributeDefinitionDto"
 +
        },
 +
        "conditionType": "AttributeInCollection",
 +
        "inversion": false,
 +
        "discriminator": "ValueConditionalDictionaryFilterDto"
 +
      },
 +
      "attributeValues": null,
 +
      "defaultValue": [],
 +
      "value": null,
 +
      "isMultiselect": false,
 +
      "isEmptyValuePossible": true,
 +
      "isDisableable": false,
 +
      "isDisabled": false,
 +
      "dataControlOptions": null,
 +
      "id": 2,
 +
      "name": "Ремонты",
 +
      "discriminator": "DictionaryParameterDto"
 +
    }
 +
</syntaxhighlight>
 +
 
 +
{| class="wikitable"
 +
|-
 +
! Свойство !! Описание
 +
|-
 +
| options || Настройки справочника для параметра [[Платформа_3V/Отчет/PivotDto/DictionaryOptionsDto|'''DictionaryOptionsDto''']]
 +
|-
 +
| attributeValues || Значения атрибута справочника, которые будут использоваться в качестве значений (вместо value) [[Платформа_3V/Отчет/PivotDto/DictionaryAttributeParameterValueDto|'''DictionaryAttributeParameterValueDto''']]
 +
|-
 +
| selectionFilter|| Фильтр, по которому будет определятся отметка справочника в параметре.
 +
|}
 +
Свойства dictionaryId, sortingOptions, displayValueOptions являются устаревшими.
 +
</br>
 +
Остальные свойства '''DictionaryParameterDto''' такие же как в '''SimpleValueParameterDto'''.
 +
</br>
 +
=== Способы задания отметки для параметра на справочнике ===
 +
# Value или DefaultValue
 +
# AttributeValues (Теперь устаревшее, т.к. появился фильтр, но поддержка остается)
 +
# SelectionFilter
 +
 
 +
Приоритет отдается SelectionFilter, затем AttributeValues и в последнюю очередь Value и DefaultValue.
 +
 
 +
'''При открытии отмечать все элементы'''
 +
<syntaxhighlight lang="JSON" line>
 +
"selectionFilter": {
 +
        "value": null,
 +
        "skipIfValueNull": false,
 +
        "attributeId": null,
 +
        "attribute": {
 +
          "id": 1,
 +
          "discriminator": "OwnAttributeDefinitionDto"
 +
        },
 +
        "conditionType": "AllElements",
 +
        "inversion": false,
 +
        "discriminator": "ValueConditionalDictionaryFilterDto"
 +
      },
 +
</syntaxhighlight>
 +
 
 +
== Вычислимый параметр ==
 +
'''Вычислимый параметр''' - это параметр значение которых вычисляется по выражению.
 +
 
 +
#Вычисление значения параметра поддерживается только для [[Платформа_3V/Отчет/Параметры#Простой параметр (SimpleValueParameterDto)|'''SimpleValueParameterDto''']].
 +
#Выражение описывается в свойстве параметра DefaultValue или Value.
 +
#Выражение '''ДОЛЖНО''' начинаться с символа '=', например "=1+2".
 +
#Тип данных параметра определяется по результату вычисления, поэтому нет смысла использовать [[Платформа_3V/Отчет/Параметры#Типизированный параметр (TypedValueParameterDto)|'''TypedValueParameterDto''']].
 +
 
 +
Лучше вначале настроить фильтрацию справочник на параметр, заданный через конструктор, а затем переназначить через json на добавленный вычислимый параметр SimpleValueParameterDto , т.к. вычислимый SimpleValueParameterDto  не очень корректно отображаются в конструкторе на текущий момент.<br>
 +
 
 +
'''Пример описания параметра с вычислением даты завтрашнего дня.'''
 +
<syntaxhighlight lang="JSON" line>
 +
{
 +
  "id": 1,
 +
  "name": "Завтра",
 +
  "IsDisabled": true,
 +
  "defaultValue": "=Now()+1",   
 +
  "discriminator": "SimpleValueParameterDto"
 +
}
 +
</syntaxhighlight>
 +
 
 +
'''Пример описания параметра с вычислением числа.'''
 +
<syntaxhighlight lang="JSON" line>
 +
{
 +
  "id": 1,
 +
  "name": "Число",
 +
  "IsDisabled": true,
 +
  "defaultValue": "=1 + 2.3",   
 +
  "discriminator": "SimpleValueParameterDto"
 +
}
 +
</syntaxhighlight>
 +
 
 +
'''Пример описания параметра с вычислением строки.'''
 +
<syntaxhighlight lang="JSON" line>
 +
{
 +
  "id": 1,
 +
  "name": "Строка",
 +
  "IsDisabled": true,
 +
  "defaultValue": "=('ab' + 'cd')",   
 +
  "discriminator": "SimpleValueParameterDto"
 +
}
 +
</syntaxhighlight>
 +
 
 +
'''Пример методики с параметром равным текущему дню'''<br>
 +
 
 +
Ссылка на пример на study: https://study.3v-cloud.com/navigator/#/?viewId=883 <br>
 +
 
 +
Суть методики - записать значение атрибута календарного справочника, отфильтрованного от вычисляемого параметра, который равен текущему дню.
 +
<syntaxhighlight lang="JSON" line>
 +
{
 +
  "parameters": [
 +
    {
 +
      "dataType": "DateTime",
 +
      "discriminator": "TypedValueParameterDto",
 +
      "defaultValue": [
 +
        "2021-11-11T00:00:00Z"
 +
      ],
 +
      "value": [
 +
        "2021-11-11T00:00:00Z"
 +
      ],
 +
      "isMultiselect": false,
 +
      "isEmptyValuePossible": true,
 +
      "isDisableable": false,
 +
      "isDisabled": false,
 +
      "id": 1,
 +
      "name": "New calendar dictionary"
 +
    },
 +
    {
 +
      "discriminator": "SimpleValueParameterDto",
 +
      "defaultValue": "=Today()",
 +
      "value": null,
 +
      "isMultiselect": false,
 +
      "isEmptyValuePossible": false,
 +
      "isDisableable": false,
 +
      "isDisabled": false,
 +
      "id": 2,
 +
      "name": "Сегодня"
 +
    }
 +
  ],
 +
  "folders": [],
 +
  "formulas": [
 +
    {
 +
      "expression": "[1]",
 +
      "operands": [
 +
        {
 +
          "sourceId": 2,
 +
          "aggregationType": "None",
 +
          "selections": [
 +
            {
 +
              "attributeMapping": [],
 +
              "dictionaryId": 140425,
 +
              "filter": {
 +
                "type": "And",
 +
                "filters": [
 +
                  {
 +
                    "value": [
 +
                      6
 +
                    ],
 +
                    "skipIfValueNull": false,
 +
                    "attributeId": null,
 +
                    "attribute": {
 +
                      "discriminator": "OwnAttributeDefinitionDto",
 +
                      "id": 7
 +
                    },
 +
                    "conditionType": "AttributeEqualConstant",
 +
                    "discriminator": "ValueConditionalDictionaryFilterDto",
 +
                    "inversion": false
 +
                  },
 +
                  {
 +
                    "value": {
 +
                      "id": 2,
 +
                      "name": null
 +
                    },
 +
                    "skipIfValueNull": false,
 +
                    "attributeId": 5,
 +
                    "attribute": {
 +
                      "discriminator": "OwnAttributeDefinitionDto",
 +
                      "id": 5
 +
                    },
 +
                    "conditionType": "AttributeEqualConstant",
 +
                    "discriminator": "ParameterConditionalDictionaryFilterDto",
 +
                    "inversion": false
 +
                  }
 +
                ],
 +
                "discriminator": "CompoundDictionaryFilterDto",
 +
                "inversion": false
 +
              },
 +
              "hierarchyId": null,
 +
              "limit": null
 +
            }
 +
          ],
 +
          "dictionarySelectionTransformations": [],
 +
          "asArray": false,
 +
          "code": null,
 +
          "id": 1,
 +
          "name": "New calendar dictionary"
 +
        }
 +
      ],
 +
      "dataFilters": [],
 +
      "discriminator": "CalculationFormulaDto",
 +
      "enable": true,
 +
      "folderId": null,
 +
      "sourceId": 1,
 +
      "selections": [
 +
        {
 +
          "attributeMapping": [],
 +
          "dictionaryId": 16255,
 +
          "filter": {
 +
            "value": null,
 +
            "skipIfValueNull": false,
 +
            "attributeId": null,
 +
            "attribute": {
 +
              "discriminator": "OwnAttributeDefinitionDto",
 +
              "id": 1
 +
            },
 +
            "conditionType": "AllElements",
 +
            "discriminator": "ValueConditionalDictionaryFilterDto",
 +
            "inversion": false
 +
          },
 +
          "hierarchyId": null,
 +
          "limit": null
 +
        }
 +
      ],
 +
      "code": null,
 +
      "id": 1,
 +
      "name": "Formula1"
 +
    }
 +
  ],
 +
  "sources": [
 +
    {
 +
      "metaObjectId": 140424,
 +
      "discriminator": "IndicatorSourceDto",
 +
      "id": 1,
 +
      "name": "New indicator"
 +
    },
 +
    {
 +
      "attribute": {
 +
        "discriminator": "OwnAttributeDefinitionDto",
 +
        "id": 2
 +
      },
 +
      "metaObjectId": 140425,
 +
      "discriminator": "DictionaryAttributeSourceDto",
 +
      "id": 2,
 +
      "name": "New calendar dictionary"
 +
    }
 +
  ],
 +
  "maxCalculationIdleSec": null,
 +
  "maxOverallCalculationCoords": null,
 +
  "code": "New_CalculationMethod_259",
 +
  "id": 140423,
 +
  "name": "New calculation method"
 +
}
 +
</syntaxhighlight>

Текущая версия на 12:48, 29 ноября 2021

По аналогии с параметрами отчета, в методике расчета можно использоваться параметры простые, типизированные и параметры на справочнике. параметр методика.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 }