Creatio development guide

Правило BINDPARAMETER. Как сделать поле обязательным для заполнения по определенному условию

Glossary Item Box

Описание кейса

Настроить поля на странице редактирования контакта таким образом, чтобы поле [Рабочий телефон] было обязательным для заполнения при условии, что в поле [Тип контакта] выбрано значение "Клиент".

Алгоритм реализации кейса

1. Создать замещающий клиентский модуль страницы редактирования контакта

Необходимо создать замещающий клиентский модуль, в котором в качестве родительского объекта указать схему ContactPageV2 (рис. 1). Процесс создания замещающей страницы описан в статье "Создание клиентской схемы".

Рис. 1. — Свойства замещающей страницы редактирования

2. В свойство rules модели представления страницы добавить правило

В свойство rules модели представления страницы добавить необходимо добавить правило с типом BINDPARAMETER для колонки [Phone]. Свойству property правила нужно установить значение BusinessRuleModule.enums.Property.REQUIRED.  В массив conditions добавить условие выполнения правила — значение колонки [Type] модели должно быть равно конфигурациооной константе ConfigurationConstants.ContactType.Client.

К СВЕДЕНИЮ

Конфигурационная константа ConfigurationConstants.ContactType.Client содержит идентификатор записи "Клиент" справочника [Типы контактов].

Полностью исходный код замещающей схемы:

// В список зависимостей модуля добавить модули BusinessRuleModule и ConfigurationConstants.
define("ContactPageV2", ["BusinessRuleModule", "ConfigurationConstants"],
    function(BusinessRuleModule, ConfigurationConstants) {
        return {
            // Название схемы объекта страницы редактирования.
            entitySchemaName: "Contact",
            // Правила модели представления страницы редактирования.
            rules: {
                // Набор правил для колонки [Рабочий телефон] модели представления.
                "Phone": {
                    // Правило зависимости обязательности поля [Рабочий телефон] от значения в поле [Тип].
                    "BindParameterRequiredAccountByType": {
                        // Тип правила BINDPARAMETER.
                        "ruleType": BusinessRuleModule.enums.RuleType.BINDPARAMETER,
                        // Правило регулирует свойство REQUIRED. 
                        "property": BusinessRuleModule.enums.Property.REQUIRED,
                        // Массив условий, при выполнении которых отрабатывает правило. В данном 
                        // случае массив содержит одно условие для определения, равно ли значение
                        // в колонке [Type] значению Клиент. 
                        "conditions": [{
                            // Выражение левой части условия.
                            "leftExpression": {
                                // Тип выражения ATTRIBUTE указывает на то, что в качестве выражения выступает 
                                // атрибут (колонка) модели представления. 
                                "type": BusinessRuleModule.enums.ValueType.ATTRIBUTE,
                                // Название колонки модели представления, значение которой сравнивается в выражении.
                                "attribute": "Type"
                            },
                            // Тип операции сравнения. 
                            "comparisonType": Terrasoft.ComparisonType.EQUAL,
                            // Выражение правой части условия.
                            "rightExpression": {
                                // Тип выражения CONSTANT указывает на то, что в качестве значения выражения выступает 
                                // константное значение.
                                "type": BusinessRuleModule.enums.ValueType.CONSTANT,
                                // Значение, с которым сравнивается выражение левой части. В данном случае
                                // значение выражено через перечисление ContactType из модуля ConfigurationConstants.
                                "value": ConfigurationConstants.ContactType.Client
                            }
                        }]
                    }
                }
            }
        };
    });

После сохранения схемы и обновления веб-страницы системы на странице редактирования контакта поле [Контрагент] будет обязательным для заполнения, если тип контакта — клиент (рис. 2, 3).

Рис. 2. — Результат выполнения кейса. Поле [Рабочий телефон] — необязательно

Рис. 2. — Результат выполнения кейса. Поле [Рабочий телефон] — обязательно

 

© Terrasoft 2002-2017.

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

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