Creatio development guide

Правило 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. —  Демонстрация результата выполнения кейса

 

© Terrasoft 2002-2017.

Был ли данный материал полезен?

Как можно улучшить эту статью?