Правило BINDPARAMETER. Как заблокировать поле на странице редактирования по определенному условию
Glossary Item Box
Описание кейса
Настроить поля на странице редактирования контакта таким образом, чтобы поле [Рабочий телефон] было доступным только при условии, что заполнено поле [Мобильный телефон].
Алгоритм реализации кейса
1. Создать замещающий клиентский модуль страницы редактирования контакта
Необходимо создать замещающий клиентский модуль, в котором в качестве родительского объекта указать схему ContactPageV2 (рис. 1). Процесс создания замещающей страницы описан в статье "Создание клиентской схемы".
Рис. 1. — Свойства замещающей страницы редактирования
2. Добавить правило с типом BINDPARAMETER для колонки [Phone]
В свойство rules модели представления страницы добавить необходимо добавить правило с типом BINDPARAMETER для колонки [Phone]. Свойству property правила нужно установить значение BusinessRuleModule.enums.Property.ENABLED. В массив conditions добавить условие выполнения правила — значение колонки [MobilePhone] модели не должно быть равно пустым.
Полностью исходный код замещающей схемы:
// В список зависимостей модуля добавить модуль BusinessRuleModule. define("ContactPageV2", ["BusinessRuleModule"], function(BusinessRuleModule) { return { // Название схемы объекта страницы редактирования. entitySchemaName: "Contact", // Правила модели представления страницы редактирования. rules: { // Набор правил для колонки [Phone] модели представления. "Phone": { // Правило зависимости доступности поля [Рабочий телефон] от значения в поле [Мобильный телефон]. "BindParameterEnabledPhoneByMobile": { // Тип правила BINDPARAMETER. "ruleType": BusinessRuleModule.enums.RuleType.BINDPARAMETER, // Правило регулирует свойство ENABLED. "property": BusinessRuleModule.enums.Property.ENABLED, // Массив условий, при выполнении которых отрабатывает правило. В данном // случае массив содержит одно условие для определения, установлено ли значение // в колонке [MobilePhone]. "conditions": [{ // Выражение левой части условия. "leftExpression": { // Тип выражения ATTRIBUTE указывает на то, что в качестве выражения выступает // атрибут (колонка) модели представления. "type": BusinessRuleModule.enums.ValueType.ATTRIBUTE, // Название колонки модели представления, значение которой сравнивается в выражении. "attribute": "MobilePhone" }, // Тип операции сравнения — не равно. "comparisonType": Terrasoft.ComparisonType.NOT_EQUAL, // Выражение правой части условия. "rightExpression": { // Тип выражения CONSTANT указывает на то, что в качестве значения выражения выступает // константное значение. "type": BusinessRuleModule.enums.ValueType.CONSTANT, // Значение, с которым сравнивается выражение левой части. "value": "" } }] } } } }; });
После сохранения схемы и обновления веб-страницы системы на странице редактирования контакта поле [Рабочий телефон] будет недоступно для редактирования до тех пор, пока в поле [Мобильный телефон] не будут введены данные (рис. 2).
Рис. 2. — Демонстрация результата выполнения кейса