Атрибут типа «Текст». Контроль и форматирование значений с помощью масок и регулярных выражений
Введение
Атрибут типа «Текст» может содержать неограниченное количество любых символов.
Comindware Platform позволяет контролировать допустимые набор, последовательность и количество символов для текстового атрибута следующими способами:
- при вводе с помощью маски;
- при сохранении записи с помощью проверки значения.
Здесь представлен пример настройки текстовых атрибутов для контроля, форматирования и проверки значений с использованием регулярных выражений.
Форматирование значения атрибута с помощью маски ввода
Для контроля и форматирования значения текстового атрибута при вводе в качестве его формата отображения можно задать готовую или особую маску.
Маска ввода представляет собой строку символов (регулярное выражение), задающую допустимый формат значения текстового атрибута.
Когда пользователь вводит текст в поле атрибута с заданной маской, система автоматически форматирует текст так, чтобы он соответствовал маске.
Предусмотрены следующие готовые маски:
- Телефон РФ:
7 (123) 456-78-90
— 7, пробел, 3 цифры в скобках, пробел, 3 цифры, дефис, 2 цифры, дефис, 2 цифры. - Адрес эл. почты:
my_e-mail.2022@компания.рф
— буквы (строчные: английские и русские), цифры, знак @, символы подчёркивания, дефисы, точки. - Паспорт (РФ):
1234 567890
— 4 цифры, пробел, 6 цифр. - Индекс (РФ):
100000
— 6 цифр. - ИНН
1234567890
или123456789012
— 10 или 12 цифр. - ОГРН
1234567890123
— 13 цифр. - Регистрационный номер ТС (РФ)»:
А123БВ 456
— 1 буква (прописные, строчные: русские), 3 цифры, 2 буквы, пробел 3 цифры.
Также можно задать особую маску с помощью регулярного выражения.
Синтаксис регулярного выражения маски
Регулярное выражение представляет собой набор символов, с которым сравнивается строковое значение.
Вот несколько базовых примеров и элементов регулярных выражений:
[а-яА-ЯёЁ]
— все буквы русского алфавита.[0-9]+
или\d+
— набор из одной или более цифр. Диапазон[0-9]
и выражение\d
обозначают любую цифру от 0 до 9, а плюс + обозначает, что таких цифр может быть одна или более.{5}
— последовательность из 5 символов определённого типа.[А-ЯЁ]{3}
— последовательность из 3 заглавных букв русского алфавита.^
— символ начала строки.$
— символ конца строки.
Ознакомиться с полным синтаксисом регулярных выражений, поэкспериментировать и отладить их можно на следующем сайте: https://regex101.com/
Пример
-
Дано регулярное выражение:
"^\d{5}$"
-
Строка
12345
— соответствует регулярному выражению. - Строки
12345
и1абв2
— не соответствуют регулярному выражению.
Проверка значения атрибута при сохранении записи
Для контроля значения текстового атрибута при сохранении записи в его свойствах можно задать выражение с помощью формулы, выражения на N3 или другого атрибута.
Это выражение должно возвращать True
для допустимых значений атрибута и False
— для недопустимых.
Также следует задать сообщение при отрицательном результате проверки.
Если атрибут имеет недопустимое значение, при попытке сохранения записи отобразится заданное сообщение и запись не будет сохранена. Для сохранения записи пользователь должен будет изменить значение атрибута на допустимое.
Прикладная задача
Требуется настроить текстовые атрибуты «ИНН» и «КПП» для юридического лица и контролировать их заполнение.
При вводе недопустимых значений необходимо выводить наглядные сообщения об ошибках.
Исходные данные
Имеется шаблон «Юридические лица», в котором хранятся реквизиты контрагентов.
Настройка масок и проверок значений атрибутов типа «Текст»
-
Создайте и сохраните атрибут «ИНН» со следующими свойствами:
- Тип данных: текст
- Системное имя: ИНН
- Формат отображения: ИНН юрлица
- Регулярное выражение маски:
([0-9]{10})
(заполняется автоматически)
-
Откройте созданный атрибут «ИНН».
-
В окне настройки атрибута на вкладке «Проверка значения» настройте проверку:
-
Проверка значения по выражению: формула
# Возвращаем True, если значение атрибута "ИНН"
# соответствует готовой маске "ИНН юрлица"
MATCHES($ИНН, "^[0-9]{10}$")
Синтаксис формулы
[0-9]{10}
— последовательность из 10 цифр от 0-9. Это регулярное выражение маски, скопированное со вкладки «Свойства». -^
— символ начала строки. -$
— символ конца строки. -
Сообщение при отрицательном результате проверки: формула
"Неверно указан ИНН"
-
-
Создайте и сохраните атрибут «КПП» со следующими свойствами:
- Тип данных: текст
- Системное имя: КПП
- Формат отображения: особая маска
- Регулярное выражение маски:
^\d{9}$
-
Откройте созданный атрибут «КПП».
-
В окне настройки атрибута на вкладке «Проверка значения» и настройте проверку:
-
Проверка значения по выражению: формула
# Возвращаем True, если значение атрибута "КПП"
# соответствует заданной особой маске
MATCHES($КПП, "^\d{9}$")
Синтаксис формулы
\d{9}
— последовательность из 9 цифр. Это регулярное выражение маски, скопированное со вкладки «Свойства». -^
— символ начала строки. -$
— символ конца строки. -
Сообщение при отрицательном результате проверки: формула
"Неверно указан КПП"
-
-
Поместите атрибуты «ИНН» и «КПП» на форму шаблона «Юридические лица».
- Сохраните форму.
Тестирование
- Создайте новую запись в шаблоне «Юридические лица».
- Не заполняйте поля «ИНН» и «КПП».
- Нажмите кнопку «Сохранить».
- Должно отобразиться сообщение «Имеются ошибки».
- Нажмите кнопку «Показать детали» в сообщении об ошибке, кнопку над формой или значок у подписи поля с ошибкой.
- Отобразится список ошибок, возникших при заполнении полей.
- Введите корректные значения ИНН и КПП.
- Нажмите кнопку «Сохранить».
- Запись должна быть сохранена без ошибок.
Эта статья была полезна 1 чел.