Настроить условия блокировки поля на странице записи

Средний

Пример. Настроить блокировку поля Рабочий телефон (Business phone) страницы контакта. Поле заблокировано при отсутствии значения в поле Мобильный телефон (Mobile phone).

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

  1. Перейдите в раздел Конфигурация (Configuration) и выберите пользовательский пакет, в который будет добавлена схема.
  2. На панели инструментов реестра раздела нажмите Добавить —> Замещающая модель представления (Add —> Replacing view model).

  3. Заполните свойства схемы.

    • Код (Code) — "ContactPageV2".
    • Заголовок (Title) — "Схема отображения карточки контакта" ("Display schema - Contact card").
    • Родительский объект (Parent object) — выберите "ContactPageV2".
  4. В объявлении класса модели представления в качестве зависимостей добавьте модуль BusinessRuleModule.
  5. Реализуйте условия блокировки поля.

    1. В свойство rules для колонки Phone:

      • В свойстве ruleType укажите значение BINDPARAMETER, которое задает тип бизнес-правила. Типы правил представлены перечислением BusinessRuleModule.enums.RuleType.
      • В свойстве property укажите значение ENABLED, которое устанавливает доступность колонки. Свойства бизнес-правила BINDPARAMETER представлены перечислением BusinessRuleModule.enums.Property.
      • В массиве conditions укажите условия выполнения бизнес-правила. Значение колонки MobilePhone не должно быть пустым.

    Исходный код схемы замещающей модели представления страницы контакта представлен ниже.

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

Результат выполнения примера 

Чтобы посмотреть результат выполнения примера, обновите страницу раздела Контакты (Contacts).

В результате выполнения примера на странице контакта поле Рабочий телефон (Business phone) заблокировано при отсутствии значения в поле Мобильный телефон (Mobile phone).