Настройка компонента
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:
После первого вычисления calculatedValue (первое или нет определяется по флагу calculatedValueWasCalculated) проставляется значение флага valueChangedByUser.
calculatedValueWasCalculated проставляется в true
Если флаг valueChangedByUser = false, то меняется dataValue, иначе с dataValue действия не производятся
Дополнительная логика:
Если значение dataValue меняется пользователем, то проставляется флаг valueChangedByUser = true
Пример работы с компонентом TableForm
Задача
данные должны вычисляться на основе компонента 1 и помещаться в компонент 2, и после этого у пользователя должна быть возможность их изменять.
И если пользователь ошибся или изменил решение, то удалить данные из компонента 2 и снова путем перевыбора в компоненте 1 получить другие данные и также изменять их:
- Реализация:
использование флага allow Manual Override,
но вместо calculated value, логика подтягивания записей перенесена в раздел компонента «Logic» (table form)
Логика включается по событию нажатия кнопки (только когда пользователь действительно хочет перезаписать свои значения вычисленными)
Итог: работает перезапись, ручной запуск вычисления данных (на формах создания и редактирования). Не работало ранее, до использования 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).