Правила ввода
В BPMSoft вы можете создавать и настраивать правила для ввода значений в текстовых полях, используя фиксированные маски, ограничения на символы, регулярные выражения и код JavaScript для валидации введенных значений. Например, можно установить маску для ввода номера мобильного телефона или номера документа контакта.
Создание и настройка правил ввода осуществляется в разделе «Правила ввода», расположенном в рабочем месте «Конструктор». Вы можете создавать правила, которые будут выполняться как для определенного пользователя, так и для группы, используя организационные и функциональные роли.
Рисунок 1 — Правила ввода
Параметры и условия правила ввода
Правила ввода применимы только к полям с типом «Строка». Подробнее: Поля. Для правила задаются параметры и условия, при которых оно выполняется. Подробнее о параметрах правила ввода смотрите в таблице 1.
Таблица 1 — Параметры правила ввода
Параметр | Описание |
Название |
Уникальное название правила ввода. Автоматически генерируемое значение на основании выбранного объекта. Значение можно изменить вручную. Примечание. Перед тем как указать название правила, выберите объект в поле «Объект». Если значение поля «Название» будет задано до выбора объекта, то после выбора объекта название будет сброшено и установлено автогененируемое значение |
Активно | Признак, который означает, что данное правило активно и используется в системе. Если снять признак с правила, то оно не будет применяться в системе. По умолчанию правило активно |
Объект | Объект системы, для колонки которого требуется установить правило ввода. Для выбора доступны все зарегистрированные объекты системы |
Колонка на странице |
Колонка на странице, для значения которой необходимо установить правило ввода. Значение выбирается из справочного окна, в котором отображаются все колонки выбранного объекта. Примечание. Правило ввода работает только на странице указанного объекта. Если у объекта нет страницы редактирования, то правило для колонки не применится. Примером такого объекта является деталь «Средства связи» страницы контакта. Добавление и редактирование записей детали осуществляется с помощью страницы другого объекта — «Контакт» |
Код колонки | Уникальный код колонки в конфигурации системы. Значение в поле устанавливается автоматически при выборе значения в поле «Колонка на странице». Например, для колонки «Контакт» уникальный код может быть «Contact» |
Маска |
Требование к заполнению поля, которое визуально отображается в заданной форме. Маска ввода предназначена для единообразного внесения данных и запрещает ввод значений, которые не соответствуют установленным в правиле требованиям. Маска отображается при установке курсора в поле, для которого необходимо указать значение. Доступные для заполнения символы отображаются в виде нижнего подчеркивания «_». Для задания маски ввода используются следующие символы:
Маска может включать дополнительные символы, например, скобки, дефисы и т.д., а также пробелы. Например, маска «+7 (999) 999-99-99» разрешает ввод номера телефона в формате «+7 (___) ___-__-__». Примечание. При вставке скопированного значения в поле с маской необходимо, чтобы это значение полностью соответствовало заданной маске. В противном случае итоговое значение может отличаться, например, из-за наличия запрещенных символов или ограничений их количества |
Разрешенные символы | Символы, которые разрешены для ввода значения. Дополнительные ограничения ввода символов, которые не устанавливаются с помощью маски. Разрешенные символы задаются в виде регулярного выражения. Например, выражение «[^0-9A-Z]» позволяет ввод в поле только цифр и прописных латинских букв. Все символы, не соответствующие указанному выражению, являются запрещенными и не доступны для ввода |
Регулярное выражение для валидации |
Регулярное выражение, которое будет применяться к полю при валидации. Валидация осуществляется при снятии фокуса с поля ввода и сохранении изменений. Если значение поля не соответствует регулярному выражению, изменения не сохраняются. Может быть использовано в случае, когда использование строгой маски невозможно. Например, валидация email адресов, которые не ограничены по количеству символов, но имеют определенную форму для заполнения. С помощью регулярных выражений также возможно проверить полноту введенного значения в поле. Маска предназначена для определения формы значения, но позволяет сохранить изменения с неправильно введенным количеством символов. Например, при маске «+7 (999) 999-99-99» можно сохранить запись со значением «+7 (913) 000-__-__». Пример: выражение «^\d{3}$» означает, что значение поля должно содержать три цифры |
Код Javascript |
Фрагмент программного кода на языке JavaScript, в котором могут быть описаны как основные (в случае, если для правила установлен только данный параметр), так и дополнительные условия валидации поля. Валидация осуществляется при снятии фокуса с поля ввода и сохранении изменений. Фрагмент кода должен завершаться возвращением значения true или false. При использовании условий if..else возврат значений должен быть предусмотрен во всех ветках. Для получения значения колонки используйте конструкцию scope.get('ColumnCode’), где 'ColumnCode’ — код соответствующей колонки. Использование запросов и объявление функций не допускается. Фрагмент кода в базе хранится в виде текста без переноса строк, поэтому важно наличие всех точек с запятой в качестве разделительных символов. Используйте только одинарные кавычки. В случае ошибки в коде результат не повлияет на валидацию (функция вернёт true), в консоль будет выведено описание ошибки |
Текст ошибки | Текст, который будет выведен пользователю в случае ошибки при проверке значения поля регулярным выражением или с помощью JavaScript кода |
Примечание. Вы можете использовать ограничения как в комбинации, так и по отдельности. Например, можно установить маску и регулярное выражение для валидации и не прибегать к использованию остальных ограничений и проверок.
Настройка условий правила ввода осуществляется аналогично настройке расширенного фильтра для реестра записей. Подробнее о настройке расширенного фильтра смотрите в статье Фильтрация и группировка
Правила ввода не применимы для заданной даты. При настройке фильтра не используйте колонки с типами «Дата» или «Дата и время».
Создание правила ввода с использованием регулярного выражения для валидации
Рассмотрим пример создания маски для ввода мобильного телефона контакта. Для этого:
- Перейдите в рабочее место «Конструктор» и откройте раздел «Правила ввода».
- Нажмите на кнопку «Добавить», расположенную на панели управления разделом.
Рисунок 2 — Переход к созданию правила ввода
- На открывшейся странице создания правила укажите следующие параметры:
Рисунок 3 — Страница создания правила ввода
- В поле «Объект» укажите объект, для поля которого требуется добавить маску. Например, для создания маски для мобильного телефона контакта выберите объект «Контакт»;
- В поле «Название» автоматически отображается название выбранного объекта. Вы можете изменить название правила после выбора объекта;
Примечание. При изменении объекта на другой название правила сбрасывается и устанавливается автогенерируемое значение на основании нового объекта.
- В поле «Колонка на странице» выберите значение поля, для которого необходимо установить маску. Например, «Мобильный телефон»;
- В поле «Маска» введите значение маски. Подробнее о возможных символах для задания маски смотрите в таблице 1. Например, для маски номера телефона введите значение «+7 (999) 999-99-99»;
- В поле «Разрешенные символы» введите регулярное выражение, которое дополнительно ограничивает ввод символов. Например, установите выражение «[^0-9]» для возможности ввода в поле только цифр;
- В поле «Регулярное выражение для валидации» укажите выражение, которое применяется для проверки поля на соответствие требованиям. Например, если указать выражение «^\+7 \(\d{3}\) \d{3}-\d{2}-\d{2}$», то пользователю потребуется ввести цифры согласно заданному формату +7 (999) 999-99-99, иначе сохранить изменения невозможно;
- В поле «Текст ошибки» введите сообщение, которое будет отображаться пользователю в случае, если поле не соответствует указанным в правиле требованиям. Например, «Некорректный номер телефона. Введите 10 цифр.».
- На вкладке «Настройка условий» (Рисунок 4) нажмите на кнопку «
Добавить условие», откроется окно для выбора колонки.
- Укажите колонку, по которой необходимо фильтровать записи. Например, маска «+7 (999) 999-99-99» для ввода мобильного телефона предназначена контактов с русским языком общения. Выберите колонку «Язык общения» и нажмите на кнопку
.
- Установите оператор сравнения «=».
- Нажмите на кнопку
, в открывшемся окне будут отображены справочные значения поля «Приоритет». Выберите значение «Русский (Россия)» и нажмите на кнопку
.
Рисунок 4 — Условие для правила ввода
- Сохраните правило, нажав на кнопку
.
Примечание. Создать два правила для одной колонки одинаковых разделов невозможно. При попытке сохранить правило с аналогичными настройками отображается ошибка «Правило для этих колонок уже существует».
В результате созданное правило отобразится в реестре раздела «Правила ввода». При выполнении заданных условий в поле будет установлена маска. Например, при создании контакта из России отображается установленная в правиле маска номера телефона.
Рисунок 5 — Пример маски ввода значения
Если значение введено не верно, то при переходе к настройке других параметров контакта, отображается сообщение об ошибке. Сохранить контакт с неверно введенным значением нельзя.
Рисунок 6 — Пример сообщения об ошибке
Примечание. Для переноса созданных правил на другую среду необходимо прикрепить к переносимому пакету данные объекта «Правила ввода» (WSPattern). Также может потребоваться прикрепление к пакету данных, указанных в правилах Контакта (Contact) или Роли (SysAdminUnit). Колонку «Объект» (WSFolder, объект SysShema) к данным записей «Правила ввода» рекомендуется не прикреплять во избежание ошибок при переносе. Однако, колонки WSModuleName, WSSchemaName (Название схемы объекта) и WSSchemaId (Id объекта) должны быть прикреплены.
Создание правила ввода с использованием кода для валидации
Рассмотрим пример создания правила для валидации номера договора, значение которого должно содержать текущую дату. Если текущая дата в значении не задана, сохранить такой договор невозможно. Для этого:
- Перейдите в рабочее место «Конструктор» и откройте раздел «Правила ввода».
- Нажмите на кнопку «Добавить», расположенную на панели управления разделом.
- На открывшейся странице создания правила укажите следующие параметры):
Рисунок 7 — Страница создания правила для валидации значения
- В поле «Объект» укажите объект, для поля которого требуется добавить проверку. Например, для проверки значения номера договора выберите объект «Договор»;
- В поле «Название» автоматически отображается название выбранного объекта. Вы можете изменить название правила после выбора объекта;
Примечание. При изменении объекта на другой название правила сбрасывается и устанавливается автогенерируемое значение на основании нового объекта.
- В поле «Колонка на странице» выберите значение поля, для которого необходимо установить маску. Например, «Номер»;
- В поле «Код Javascript» укажите фрагмент программного кода на языке JavaScript, в котором заданы условия для валидации поля. Подробнее об ограничениях программного кода смотрите в таблице 1;
Например, для проверки значения номера договора на содержание текущей даты можете указать следующий фрагмент кода:
let now = new Date(Date.now()).toLocaleString().split(',')[0]; let dateLength = 10; let columnValue = scope.get('Number'); let dateFromColumn = columnValue.substr(0, dateLength); let result = now === dateFromColumn; return result;
- В поле «Текст ошибки» введите сообщение для отображения пользователю, если значение поля не будет соответствовать заданным условиям валидации. Например, «Укажите номер в формате «ДД.ММ.ГГГГ— № договора», где «ДД.ММ.ГГГГ» — текущая дата».
- Если валидация значения поля необходима только при определенных условиях, то установите соответствующие фильтры на вкладке «Настройка условий». Например, валидацию значения поля «Номер» необходимо проводить только для договоров с типом «Договор». Для этого на вкладке «Настройка условий» нажмите на кнопку «
Добавить условие», откроется окно для выбора колонки.
- Выберите колонку «Тип» и нажмите на кнопку
.
- Установите оператор сравнения «=».
- Нажмите на кнопку
, в открывшемся окне будут отображены справочные значения колонки. Выберите значение «Договор» и нажмите на кнопку
.
Рисунок 8 — Настройка условий для правила
- Сохраните правило, нажав на кнопку
.
В результате созданное правило отобразится в реестре раздела «Правила ввода». При создании или редактировании договора с типом «Договор» осуществляется проверка значения введенного номера, которое должно включать текущую дату. Если значение введено некорректно, то внизу поля будет отображено сообщение об ошибке. Без ввода корректного значения сохранить договор невозможно
Рисунок 9 — Некорректное значение номера договора
Рекомендуем изучить
Бизнес-правила
Фильтрация и группировка
Организационные роли
Функциональные роли