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

Средний
PDF

Пример. Настроить обязательность для поля Рабочий телефон (Business phone) страницы контакта. Поле обязательное для контакта типа "Клиент" ("Customer") (т. e. в поле Тип контакта (Type) выбрано значение "Клиент" ("Customer")).

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

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

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

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

    Для этого задайте свойство rules для колонки Phone:

    1. В свойстве ruleType укажите значение BINDPARAMETER, которое задает тип бизнес-правила. Типы правил представлены перечислением BusinessRuleModule.enums.RuleType.
    2. В свойстве property укажите значение REQUIRED, которое устанавливает обязательность заполнения колонки. Свойства бизнес-правила BINDPARAMETER представлены перечислением BusinessRuleModule.enums.Property.
    3. В массиве conditions укажите условия выполнения бизнес-правила. Значение колонки Type должно быть равно конфигурационной константе ConfigurationConstants.ContactType.Client, которая содержит идентификатор записи "Клиент" ("Customer") справочника Типы контактов (Contact types).

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

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

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

Чтобы посмотреть результат выполнения примера:

  1. Обновите страницу раздела Контакты (Contacts).
  2. При необходимости, в поле Тип контакта (Type) страницы контакта выберите "Клиент" ("Customer").

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

При попытке сохранить контакт типа "Клиент" ("Customer"), у которого не заполнено поле Рабочий телефон (Business phone), отображается информационное сообщение.

Поле Рабочий телефон (Business phone) является необязательным для другого типа контакта (например, "Сотрудник" ("Employee").