Настройка компонента

Allow Manual Override of Calculated Value / Разрешить ручное переопределение вычисляемого значения

Настройка расположена на вкладке «Данные».

При помощи Allow Manual Override of Calculated Value / Разрешить ручное переопределение вычисляемого значения поле перевычисляется до тех пор, пока пользователь не поменяет это значение.

Описание работы

Режим создания

Чтобы calculated value установилось, необходимо, чтобы valueChangedByUser = false (при условии, что включен Allow Manual Override of Calculated Value). Тогда в режиме создания достаточно просто очистить компонент, и calculatedValue снова заполнит его.

Режим редактирования

В режиме редактирования если очистить компонент, то это также считается за пользовательские правки, следовательно, нет возможности снова получить значение из calculatedValue.

Описание полей и логики

Имя

Значение по умолчанию

Описание

calculatedValue

null

вычисленное значение

dataValue

значение с сервера

значение в поле

режим формы

по умолчанию выставить значение «CREATE».
Возможные значения - CREATE, EDIT

calculatedValueWasCalculated

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

valueChangedByUser

false

Внутренний флаг, который определяет, что текущее значение (dataValue) отвязано от вычисленного

До проставления dataValue у всех полей проверятся, что никакая логика с формы не начинает вычисляться.

Для каждого перевычисления calculatedValue:

  1. После первого вычисления calculatedValue (первое или нет определяется по флагу calculatedValueWasCalculated) проставляется значение флага valueChangedByUser.

  2. calculatedValueWasCalculated проставляется в true

  3. Если флаг valueChangedByUser = false, то меняется dataValue, иначе с dataValue действия не производятся

Дополнительная логика:

  1. Если значение dataValue меняется пользователем, то проставляется флаг valueChangedByUser = true

Пример работы с компонентом TableForm

Задача

данные должны вычисляться на основе компонента 1 и помещаться в компонент 2, и после этого у пользователя должна быть возможность их изменять.

И если пользователь ошибся или изменил решение, то удалить данные из компонента 2 и снова путем перевыбора в компоненте 1 получить другие данные и также изменять их:

Реализация:
  1. использование флага allow Manual Override,

  2. но вместо calculated value, логика подтягивания записей перенесена в раздел компонента «Logic» (table form)

  3. Логика включается по событию нажатия кнопки (только когда пользователь действительно хочет перезаписать свои значения вычисленными)

Итог: работает перезапись, ручной запуск вычисления данных (на формах создания и редактирования). Не работало ранее, до использования instance.setValue().

Custom Default Value / Пользовательское значение по умолчанию

Настройка расположена на вкладке «Данные».

Свойство customDefaultValue позволяет задать динамическое значение по умолчанию при помощи JavaScript-выражения. Результат присваивается переменной value. Выражение выполняется при инициализации формы в режиме создания.

Примечание

Статическое свойство defaultValue предназначено только для фиксированных значений. Для динамических (текущая дата, текущий пользователь и т.д.) используйте customDefaultValue.

Примеры

Текущая дата для компонента Date/Time:

value = new Date();

Фиксированная строка для текстового поля:

value = "значение по умолчанию";

Пример JSON-конфигурации компонента Date/Time с текущей датой:

{
  "key": "startDate",
  "type": "datetime",
  "input": true,
  "format": "yyyy-MM-dd",
  "enableTime": false,
  "customDefaultValue": "value = new Date();",
  "defaultValue": ""
}

Current User by Default / Текущий пользователь по умолчанию (selectOrgstruct)

Настройка расположена на вкладке «Кастомные» компонента selectOrgstruct.

Свойство currentUserByDefault автоматически подставляет текущего пользователя в поле при открытии формы на создание. Настройка работает только в режиме создания (formMode = CREATE) и только для компонента selectOrgstruct.

Пример JSON-конфигурации:

{
  "key": "responsible",
  "type": "selectOrgstruct",
  "input": true,
  "allowedAuthorityType": "USER",
  "currentUserByDefault": true,
  "defaultValue": ""
}

Примечание

Для динамических значений по умолчанию в других типах компонентов используйте customDefaultValue (см. Custom Default Value).