Перейти к содержанию

Атрибут типа «Текст». Контроль и форматирование значений с помощью масок и регулярных выражений

Введение

Атрибут типа «Текст» может содержать неограниченное количество любых символов.

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 — для недопустимых.

Также следует задать сообщение при отрицательном результате проверки.

Если атрибут имеет недопустимое значение, при попытке сохранения записи отобразится заданное сообщение и запись не будет сохранена. Для сохранения записи пользователь должен будет изменить значение атрибута на допустимое.

Прикладная задача

Требуется настроить текстовые атрибуты «ИНН» и «КПП» для юридического лица и контролировать их заполнение.

При вводе недопустимых значений необходимо выводить наглядные сообщения об ошибках.

Исходные данные

Имеется шаблон «Юридические лица», в котором хранятся реквизиты контрагентов.

Настройка масок и проверок значений атрибутов типа «Текст»

  1. Создайте и сохраните атрибут «ИНН» со следующими свойствами:

    • Тип данных: текст
    • Системное имя: ИНН
    • Формат отображения: ИНН юрлица
    • Регулярное выражение маски: ([0-9]{10}) (заполняется автоматически)
  2. Откройте созданный атрибут «ИНН».

  3. В окне настройки атрибута на вкладке «Проверка значения» настройте проверку:

    • Проверка значения по выражению: формула

      # Возвращаем True, если значение атрибута "ИНН" 
      # соответствует готовой маске "ИНН юрлица"
      MATCHES($ИНН, "^[0-9]{10}$")

      Синтаксис формулы

      [0-9]{10} — последовательность из 10 цифр от 0-9. Это регулярное выражение маски, скопированное со вкладки «Свойства». - ^ — символ начала строки. - $ — символ конца строки.

    • Сообщение при отрицательном результате проверки: формула

      "Неверно указан ИНН" 
  4. Создайте и сохраните атрибут «КПП» со следующими свойствами:

    • Тип данных: текст
    • Системное имя: КПП
    • Формат отображения: особая маска
    • Регулярное выражение маски: ^\d{9}$
  5. Откройте созданный атрибут «КПП».

  6. В окне настройки атрибута на вкладке «Проверка значения» и настройте проверку:

    • Проверка значения по выражению: формула

      # Возвращаем True, если значение атрибута "КПП" 
      # соответствует заданной особой маске
      MATCHES($КПП, "^\d{9}$")

      Синтаксис формулы

      \d{9} — последовательность из 9 цифр. Это регулярное выражение маски, скопированное со вкладки «Свойства». - ^ — символ начала строки. - $ — символ конца строки.

    • Сообщение при отрицательном результате проверки: формула

      "Неверно указан КПП" 
  7. Поместите атрибуты «ИНН» и «КПП» на форму шаблона «Юридические лица».

  8. Сохраните форму.

Тестирование

  1. Создайте новую запись в шаблоне «Юридические лица».
  2. Не заполняйте поля «ИНН» и «КПП».
  3. Нажмите кнопку «Сохранить».
  4. Должно отобразиться сообщение «Имеются ошибки».
  5. Нажмите кнопку «Показать детали» в сообщении об ошибке, кнопку над формой или значок у подписи поля с ошибкой.
  6. Отобразится список ошибок, возникших при заполнении полей.
  7. Введите корректные значения ИНН и КПП.
  8. Нажмите кнопку «Сохранить».
  9. Запись должна быть сохранена без ошибок.

Результат проверки значений атрибутов при вводе

Результат проверки значений атрибутов при вводе

К началу