Платформа 3V/Формы/Действия/Расчет элемента: различия между версиями

Материал из 3v-wiki
Перейти к навигации Перейти к поиску
 
(не показана 31 промежуточная версия 3 участников)
Строка 1: Строка 1:
Действие, которое вычисляет отметку с помощью [[Платформа_3V/Формы/Выражения|'''выражения''']] и устанавливает ее в указанный [[Платформа_3V/Формы/Элементы_управления|'''элемента управления''']], имеет следующую структуру:
+
Действие '''"Установить значение в контрол"''', которое вычисляет отметку с помощью [[Платформа_3V/Формы/Выражения|'''выражения''']] и устанавливает ее в указанный [[Платформа_3V/Формы/Элементы_управления|'''элемент управления''']], имеет следующую структуру:
  
 
<syntaxhighlight lang="JSON" line>
 
<syntaxhighlight lang="JSON" line>
Строка 25: Строка 25:
  
 
==Пример использования(вычисление периода)==
 
==Пример использования(вычисление периода)==
Кейс: Вычислить длительность периода по датам начала и конца периода.
+
Кейс: Вычислить количество дней между датам начала и конца периода.
  
В отдельном выражении из конечной даты вычесть начальную и вывести ее в [[Платформа_3V/Формы/Элементы_управления|'''элемента управления''']]. Вычисление происходит при нажатии кнопки.
+
В отдельном выражении из конечной даты вычесть начальную и вывести ее в отдельный [[Платформа_3V/Формы/Элементы_управления|'''элемент управления''']] "Длительность периода (дней)". Вычисление происходит при нажатии на кнопку.
  
 +
[[Файл:Дата.gif|мини|слева]]
 +
 +
 +
 +
<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;">
 
<div style="font-weight:bold;line-height:1.6;">JSON серверной карточки</div>
 
<div style="font-weight:bold;line-height:1.6;">JSON серверной карточки</div>
Строка 50: Строка 55:
 
       "onBeforeClickConditionalActions": [],
 
       "onBeforeClickConditionalActions": [],
 
       "id": 206100,
 
       "id": 206100,
       "caption": "Кнопка",
+
       "caption": "Кнопка для вычисления длительности периода",
 
       "enable": true,
 
       "enable": true,
 
       "visible": true,
 
       "visible": true,
Строка 78: Строка 83:
 
     {
 
     {
 
       "id": 222,
 
       "id": 222,
       "caption": "default",
+
       "caption": "Длительность периода",
 
       "enable": true,
 
       "enable": true,
 
       "visible": true,
 
       "visible": true,
Строка 89: Строка 94:
 
       "value": null,
 
       "value": null,
 
       "id": 21,
 
       "id": 21,
       "caption": "Длительность",
+
       "caption": "Дата начала периода",
 
       "enable": true,
 
       "enable": true,
 
       "visible": true,
 
       "visible": true,
Строка 105: Строка 110:
 
       "value": null,
 
       "value": null,
 
       "id": 22,
 
       "id": 22,
       "caption": "Длительность",
+
       "caption": "Дата конца периода",
 
       "enable": true,
 
       "enable": true,
 
       "visible": true,
 
       "visible": true,
Строка 118: Строка 123:
 
     }
 
     }
 
   ],
 
   ],
   "entryDataSources": [
+
   "entryDataSources": [],
    {
 
      "dictionaryId": 368,
 
      "groupingOptions": null,
 
      "dictionaryAttributes": null,
 
      "defaultValue": [],
 
      "filter": null,
 
      "defaultValueExpressionId": null,
 
      "parameterId": null,
 
      "dictionarySourceSelectionMode": "None",
 
      "dataSourceAttributesAdditionsSettings": [],
 
      "id": 368,
 
      "name": "Data",
 
      "isReadOnly": false,
 
      "dataEditRuleIds": [],
 
      "beforeSaveDataActions": [],
 
      "afterSaveDataActions": [],
 
      "discriminator": "DictionaryDataSource"
 
    }
 
  ],
 
 
   "parameters": null,
 
   "parameters": null,
 
   "binaryConditionsRules": [],
 
   "binaryConditionsRules": [],
Строка 143: Строка 129:
 
     {
 
     {
 
       "id": 222,
 
       "id": 222,
       "expression": "TrimTime([22])-TrimTime([21])",
+
       "expression": "if(IsNullOrEmpty([21]) or IsNullOrEmpty([22]), Null(), (TrimTime([22])-TrimTime([21]))+1)",
 
       "returnFirstParameterValue": false,
 
       "returnFirstParameterValue": false,
 
       "parameters": [
 
       "parameters": [
Строка 184: Строка 170:
 
==Пример использования(вывод строки)==
 
==Пример использования(вывод строки)==
  
Кейс: Вывод строки при нажатии на кнопку.
+
Кейс: Вывести фразу "Строка" при нажатии на кнопку.
  
Строка добавляется в выражение и выводится с помощью CalculateControlValueAction при нажатии кнопки.
+
Добавить фразу в выражение и вывести ее в [[Платформа_3V/Формы/Элементы_управления|'''элемент управления''']]. Вывод производится при нажатии на кнопку.
 +
[[Файл:Строка.gif|мини|слева]]
 +
<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;">
 
<div style="font-weight:bold;line-height:1.6;">JSON серверной карточки</div>
 
<div style="font-weight:bold;line-height:1.6;">JSON серверной карточки</div>
Строка 208: Строка 196:
 
       "onBeforeClickConditionalActions": [],
 
       "onBeforeClickConditionalActions": [],
 
       "id": 206100,
 
       "id": 206100,
       "caption": "Кнопка",
+
       "caption": "Кнопка для вывода строки",
 
       "enable": true,
 
       "enable": true,
 
       "visible": true,
 
       "visible": true,
Строка 236: Строка 224:
 
     {
 
     {
 
       "id": 111,
 
       "id": 111,
       "caption": "default",
+
       "caption": "Вывод строки",
 
       "enable": true,
 
       "enable": true,
 
       "visible": true,
 
       "visible": true,
Строка 290: Строка 278:
 
</syntaxhighlight>
 
</syntaxhighlight>
 
</div></div>
 
</div></div>
 +
 +
==Пример: Назначение даты и названия договора на открытие==
 +
 +
Кейс: При умолчанию необходимо выставить в поля дату первого дня первого месяца текущего года и наименование договора "Договор"
 +
 +
Для этого настройте следующее выражение для даты. Данное выражение позволяет вычислить первый день первого месяца текущего года:
 +
<syntaxhighlight lang="JSON" line>
 +
{
 +
"expression": "ComposeDate(Year(Today()), 1, 1) ",
 +
"returnFirstParameterValue": false,
 +
"operands": [],
 +
"id": 2,
 +
"name": "Выражение",
 +
"code": null
 +
}
 +
</syntaxhighlight>
 +
 +
И следующее выражение для текста. Данное выражение вычисляет статичное выражение "Договор":
 +
<syntaxhighlight lang="JSON" line>
 +
{
 +
"expression": "'Договор'",
 +
"returnFirstParameterValue": false,
 +
"operands": [],
 +
"id": 1,
 +
"name": "Выражение 1 для выставления значения в текстовое поле ",
 +
"code": null
 +
}
 +
</syntaxhighlight>
 +
 +
И реализовать действие следующего вида, где '''expressionId''' - идентификатор выражения, '''controlId''' - идентификатор:
 +
<syntaxhighlight lang="JSON" line>
 +
{
 +
"expressionId": 1,
 +
"controlId": 1,
 +
"discriminator": "CalculateControlValueAction",
 +
"comment": "",
 +
"enableExpressionId": null,
 +
"id": 1,
 +
"name": "Установить значение в поле Наименование",
 +
"code": null
 +
}
 +
</syntaxhighlight>
 +
 +
Как настраивать действия на открытие формы смотрите [[Платформа_3V/Формы/Действия/Действия_на_открытие_формы|здесь]]
 +
 +
<div class="NavFrame collapsed" style="width:700px; overflow:auto;">
 +
  <div class="NavHead">Примеры</div>
 +
  <div class="NavContent">
 +
[https://study.3v-cloud.com/navigator/#/home?objectId=1534 Форма с установкой полей при открытии]
 +
</div> 
 +
</div>

Текущая версия на 11:43, 9 февраля 2022

Действие "Установить значение в контрол", которое вычисляет отметку с помощью выражения и устанавливает ее в указанный элемент управления, имеет следующую структуру:

1 {
2       "id": 111,
3       "controlId": 111,
4       "expressionId": 111,
5       "discriminator": "CalculateControlValueAction"
6 }

Описание свойств действия

Свойство Описание
id Идентификатор действия
controlId Идентификатор элемента управления
expressionId Идентификатор выражения
discriminator CalculateControlValueAction

Пример использования(вычисление периода)

Кейс: Вычислить количество дней между датам начала и конца периода.

В отдельном выражении из конечной даты вычесть начальную и вывести ее в отдельный элемент управления "Длительность периода (дней)". Вычисление происходит при нажатии на кнопку.

Дата.gif












JSON серверной карточки

Пример использования(вывод строки)

Кейс: Вывести фразу "Строка" при нажатии на кнопку.

Добавить фразу в выражение и вывести ее в элемент управления. Вывод производится при нажатии на кнопку.

Строка.gif








JSON серверной карточки

Пример: Назначение даты и названия договора на открытие

Кейс: При умолчанию необходимо выставить в поля дату первого дня первого месяца текущего года и наименование договора "Договор"

Для этого настройте следующее выражение для даты. Данное выражение позволяет вычислить первый день первого месяца текущего года:

1 {
2  "expression": "ComposeDate(Year(Today()), 1, 1) ",
3  "returnFirstParameterValue": false,
4  "operands": [],
5  "id": 2,
6  "name": "Выражение",
7  "code": null
8 }

И следующее выражение для текста. Данное выражение вычисляет статичное выражение "Договор":

1 {
2  "expression": "'Договор'",
3  "returnFirstParameterValue": false,
4  "operands": [],
5  "id": 1,
6  "name": "Выражение 1 для выставления значения в текстовое поле ",
7  "code": null
8 }

И реализовать действие следующего вида, где expressionId - идентификатор выражения, controlId - идентификатор:

 1 {
 2  "expressionId": 1,
 3  "controlId": 1,
 4  "discriminator": "CalculateControlValueAction",
 5  "comment": "",
 6  "enableExpressionId": null,
 7  "id": 1,
 8  "name": "Установить значение в поле Наименование",
 9  "code": null
10 }

Как настраивать действия на открытие формы смотрите здесь