Реализовать валидацию поля типа [Дата/Время] на странице записи

Средний
PDF

Пример. Реализовать валидацию поля Дата создания (Created on) типа Дата/Время (Date/Time) на странице продажи. Значение поля Дата создания (Created on) должно быть меньше значения поля Дата закрытия (Closed on).

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

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

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

    • Код (Code) — "OpportunityPageV2".
    • Заголовок (Title) — "Страница редактирования продажи" ("Opportunity edit page").
    • Родительский объект (Parent object) — выберите "OpportunityPageV2".
  4. Добавьте локализуемую строку.

    1. В контекстном меню узла Локализуемые строки (Localizable strings) нажмите кнопку scr_add_button.png.
    2. Заполните свойства локализуемой строки.

      • Код (Code) — "CreatedOnLessDueDateMessage".
      • Значение (Value) — "Дата создания должна быть меньше даты закрытия" ("Created on must be less than Closed on").
    3. Для добавления локализуемой строки нажмите Добавить (Add).
  5. Реализуйте валидацию поля типа Дата/Время (Date/Time).

    Для этого в свойстве methods реализуйте методы:

    • dueDateValidator() — метод-валидатор, который определяет выполнение условия.
    • setValidationConfig() — переопределенный базовый метод, в котором метод-валидатор привязан к колонкам DueDate и CreatedOn.

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

    OpportunityPageV2
    define("OpportunityPageV2", [], function() {
        return {
            /* Название схемы объекта страницы записи. */
            entitySchemaName: "Opportunity",
            /* Методы модели представления страницы раздела. */
            methods: {
                /* Метод-валидатор значения колонок [DueDate] и [CreatedOn]. */
                dueDateValidator: function() {
                    /* Переменная для хранения сообщения об ошибке валидации. */
                    var invalidMessage = "";
                    /* Проверка значений колонок [DueDate] и [CreatedOn]. */
                    if (this.get("DueDate") < this.get("CreatedOn")) {
                        /* Если значение колонки [DueDate] меньше значения колонки [CreatedOn], то в переменную invalidMessage помещается значение локализуемой строки с сообщением об ошибке валидации. */
                        invalidMessage = this.get("Resources.Strings.CreatedOnLessDueDateMessage");
                    }
                    /* Объект, свойство которого содержит сообщение об ошибке валидации. Если валидация прошла успешна, то в объекте возвращается пустая строка. */
                    return {
                        /* Сообщение об ошибке валидации. */
                        invalidMessage: invalidMessage
                    };
                },
                /* Переопределение базового метода, который инициализирует пользовательские валидаторы. */
                setValidationConfig: function() {
                    /* Вызывает инициализацию валидаторов родительской модели представления. */
                    this.callParent(arguments);
                    /* Для колонки [DueDate] добавляется метод-валидатор dueDateValidator(). */
                    this.addColumnValidator("DueDate", this.dueDateValidator);
                    /* Для колонки [CreatedOn] добавляется метод-валидатор dueDateValidator(). */
                    this.addColumnValidator("CreatedOn", this.dueDateValidator);
                }
            }
        };
    });
    
  6. На панели инструментов дизайнера нажмите Сохранить (Save).

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

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

  1. Обновите страницу раздела Продажи (Opportunities).
  2. В поле Дата закрытия (Closed on) выберите дату, значение которой меньше значения поля Дата создания (Created on).

В результате выполнения примера на странице продажи отображается соответствующее предупреждение.

При попытке сохранить продажу, у которой значение поля Дата закрытия (Closed on) меньше значения поля Дата создания (Created on) отображается информационное сообщение.