Creatio development guide
Это документация Creatio версии 7.8.0. Мы рекомендуем использовать новую версию документации.

Добавление валидации к полю страницы

Glossary Item Box

Общие сведения

Валидация — это проверка значений заполненных полей на соответствие определенным требованиям. Валидация значений полей страницы bpm'online реализуется на уровне колонок моделей представления страниц. Логика проверки значения поля выполняется в пользовательском методе-валидаторе.

Валидатор — это метод модели представления, в котором выполняется анализ значения колонки модели представления на соответствие бизнес-требованиям. Особенностью этого метода является то, что он должен возвращать объект с результатами валидации, который имеет два свойства:

  • fullInvalidMessage — это строка, которая будет отображаться в информационном окне при попытке сохранить страницу с заполненным полем, которое не прошло валидацию.
  • invalidMessage — это строка с сообщением, которая отобразится под элементом управления при попытке ввести в поле некорректные данные.

Если валидация значения прошла успешно, то метод-валидатор возвращает объект с пустыми строками.

Чтобы валидация поля начала работать, нужно выполнить привязку соответствующей колонки модели представления конкретному валидатору. Для этого в модели представления необходимо переопределить базовый метод setValidationConfig(), в котором вызвать метод addColumnValidator().

Метод addColumnValidator() принимает два параметра:

  • имя колонки модели представления, к которой привязывается валидатор;
  • имя метода-валидатора значения колонки.

ВАЖНО

Если валидация поля реализуется в замещающей клиентской схеме базовой страницы, то для того, чтобы были корректно проинициализированы валидаторы полей базовой страницы, перед вызовом метода addColumnValidator() необходимо добавить вызов родительской реализации метода setValidationConfig().

Последовательность действий для добавления проверки корректности значения поля:

  1. Добавить в коллекцию методов модели представления метод-валидатор, проверяющий значение поля.
  2. Переопределить метод setValidationConfig(), в котором выполнить привязку валидатора к соответствующей колонке модели представления.

Пример 1

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

Настроить валидацию на странице редактирования продажи следующим образом: значение в поле [Дата создания] должно быть меньше значения в поле [Дата закрытия].

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

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

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

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

2. В коллекцию локализуемых строк замещающей схемы страницы добавить строку ошибки

Для этого, щелкнув правой кнопкой по узлу структуры [LocalizableStrings], выбрать [Добавить] (рис. 2).

Рис. 2 — Добавление в схему локализуемой строки

Для созданной строки заполнить следующие свойства (рис. 6):

  • [Название] — "CreatedOnLessDueDate";
  • [Заголовок] — "CreatedOnLessDueDate";
  • [Значение] — "Дата создания должна быть меньше даты закрытия".

Рис. 3. — Свойства пользовательской локализованной строки

4. В коллекцию methods модели представления добавить необходимые методы

Необходимо добавить метод-валидатор dueDateValidator(), который будет определять выполняется ли условие. А также необходимо переопределить базовый метод setValidationConfig(), в котором привязать метод-валидатор к колонкам [DueDate] и [CreatedOn].

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.CreatedOnLessDueDate");
                }
                // Объект, свойства которого содержат сообщения об ошибке валидации.
                // Если валидация прошла успешна, в объекте возвращаются пустые строки.
                return {
                    // Сообщение об ошибке валидации, которое отображается в информационном окне
                    // при сохранении страницы.
                    fullInvalidMessage: invalidMessage,
                    // Сообщение об ошибке валидации, которое отображается под элементом управления.
                    invalidMessage: invalidMessage
                };
            },
            // Переопределение базовой функции, инициализирующей пользовательские валидаторы.
            setValidationConfig: function() {
                // Вызывает инициализацию валидаторов родительской модели представления.
                this.callParent(arguments);
                // Для колонки [DueDate] добавляется метод-валидатор dueDateValidator.
                this.addColumnValidator("DueDate", this.dueDateValidator);
                //Для колонки [CreatedOn] добавляется метод-валидатор dueDateValidator.
                this.addColumnValidator("CreatedOn", this.dueDateValidator);
            }
        }
    };
});

После сохранения схемы и обновления веб-страницы системы на странице редактирования продажи при вводе даты закрытия или даты создания не соответствующих условию валидации (дата создания должна быть меньше даты закрытия) будет появляться строка с соответствующим сообщением (рис. 4), а при попытке сохранить такую продажу появится информационное окно (рис. 5).

Рис. 4. — Демонстрация результатов. Сообщение при выборе неправильной даты

Рис. 5. — Демонстрация результатов. Сообщение при сохранении

Пример 2

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

Настроить валидацию поля [Рабочий телефон] страницы редактирования контактов следующим образом: номер телефона должен соответствовать маске [+7 ХХХ ХХХ ХХ ХХ], иначе появляется сообщение "Неверный формат номера".

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

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

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

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

2. В коллекцию локализуемых строк замещающей схемы страницы добавить строку ошибки

Для этого, щелкнув правой кнопкой по узлу структуры [LocalizableStrings], выбрать [Добавить] (рис. 2).

Для созданной строки заполнить следующие свойства (рис. 7):

  • [Название] — "InvalidPhoneFormat";
  • [Заголовок] — "InvalidPhoneFormat";
  • [Значение] — "Неправильный формат номера".

Рис. 7. — Свойства пользовательской локализованной строки

4. В коллекцию methods модели представления добавить необходимые методы

Необходимо добавить метод-валидатор phoneValidator, который будет определять выполняется ли условие. А также необходимо переопределить метод базовой схемы setValidationConfig(), в котором привязать метод-валидатор к колонке [Phone].

define("ContactPageV2", ["ConfigurationConstants"], function(ConfigurationConstants) {
    return {
        entitySchemaName: "Contact",
        methods: {
            setValidationConfig: function() {
                this.callParent(arguments);
                this.addColumnValidator("Phone", this.phoneValidator);
            },
            phoneValidator: function(value) {
                // Переменная для хранения сообщения об ошибке валидации.
                var invalidMessage = "";
                // Переменная для хранения результата проверки номера.
                var isValid = true;
                // Переменная для хранения номера телефона.
                var number = value || this.get("Phone");
                // Определение правильности формата номера с помощью регулярного выражения.
                isValid = (Ext.isEmpty(number) ||
                    new RegExp("^\\+7\\s\\d{3}\\s\\d{3}\\s\\d{2}\\s\\d{2}$").test(number));
                // Если формат номера неправильный, то заполняется сообщение об ошибке.
                if (!isValid) {
                    invalidMessage = this.get("Resources.Strings.InvalidPhoneFormat");
                }
                // Объект, свойства которого содержат сообщения об ошибке валидации.
                // Если валидация прошла успешна, в объекте возвращаются пустые строки.
                return {
                    fullInvalidMessage: invalidMessage,
                    invalidMessage: invalidMessage
                };
            }
        }
    };
});

После сохранения схемы и обновления веб-страницы системы на странице редактирования контакта или контрагента при редактировании номера рабочего телефона будет происходить проверка правильности формата номера и если формат неверный, то будет появляться строка с соответствующим сообщением (рис. 8, 9).

Рис. 8. — Демонстрация результата. Сообщение при вводе неправильного номера

Рис. 9. — Демонстрация результата. Сообщение при сохранении

© Terrasoft 2002-2016.

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

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