Top.Mail.Ru
Заказать консультацию
специалиста 1С
Отправить заявку

ИнфоСофт использует файлы «cookie» с целью персонализации сервисов и повышения удобства пользования веб-сайтом. Вы можете запретить обработку сookies в настройках браузера. Пожалуйста, ознакомьтесь с политикой использования cookies.
Оставаясь на сайте, вы соглашаетесь с политикой использования cookies.

Регулярные выражения в 1С:Предприятие.Элемент

Молько Дмитрий Посмотреть все статьи >> Разработчик 1С партнёрской сети "ИнфоСофт"
14.07.2025
958
Время прочтения - 7 мин.
Заказать консультацию

1. Что такое регулярные выражения

Регулярные выражения (или сокращённо — регулярки) — это формальный язык поиска и манипуляции строками текста. Они позволяют находить, проверять, заменять и извлекать данные из текста по заданному шаблону. Регулярные выражения применяются в различных сферах: от валидации форм на сайтах до анализа логов и обработки текстовых файлов в больших системах.

Простейший пример регулярного выражения: \d+. Оно соответствует одной или нескольким цифрам подряд. Более сложный пример: ^\+7\d{10}$ проверяет, соответствует ли строка российскому номеру телефона в формате +7XXXXXXXXXX.

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

2. Поддержка регулярок в 1С:Предприятие

До появления языка «Элемент» в 1С:Предприятии не было встроенной поддержки регулярных выражений. Разработчики использовали сторонние библиотеки через внешние компоненты, такие как VBScript.RegExp, .NET RegEx или JavaScript. Это усложняло архитектуру решений и увеличивало зависимость от внешних компонентов.

В платформе 1С:Предприятие.Элемент ситуация изменилась. Новый язык получил поддержку специального механизма под названием образцы — это альтернатива регулярным выражениям, адаптированная под синтаксис и структуру языка 1С. Образцы можно применять непосредственно к строкам, используя встроенные методы. Это значительно упрощает обработку строк и делает код более читаемым.

Важно отметить, что образцы — это не точная реализация классических регулярных выражений, но они заимствуют большинство ключевых конструкций, таких как классы символов, квантификаторы, группы и альтернативы.

3. Основные функции для работы с регулярными выражениями и спец символы для создания регулярок

Перечень основных спецсимволов и конструкции, которые поддерживаются в образцах языка Элемент:

.

любой символ, кроме перевода строки

\d

цифра (0–9)

\D

не цифра

\w

буква или цифра (латиница, цифры и подчёркивание)

\W

всё, кроме буквы, цифры и подчёркивания

\s

пробельный символ

\S

не пробельный символ

^

начало строки

$

конец строки

*

0 и более повторений

?

0 или 1 повторение

+

1 и более повторений

{n}

ровно n повторений

{n,m}

от n до m повторений

[...]

перечисление символов

Помимо базового синтаксиса, в языке «1С:Предприятие.Элемент» стали доступны следующие функции:

Образец(строка)Конструирование образца регулярного выражения из исходной строки РегулярноеВыражение.

Образец. ВСтроку()— Возвращает исходное регулярное выражение, из которого был сконструирован объект

Образец. НайтиСовпадения Строка,КоличествоСовпадений) — Позволяет найти первые «КоличествоСовпадений» совпадений в строке «Строка». Возвращает массив с описанием этих совпадений в объектах «Match». В случае отсутствия соответствий возвращаемый массив будет пустым.

Если суммарно в строке Строка совпадений меньше, чем «КоличествоСовпадений», то массив будет размера - суммарное количество совпадений в строке «Строка». Если величина «КоличествоСовпадений» = 0, то выполняется поиск всех совпадений в строке «Строка».

Образец. КоличествоГрупп()— Возвращает количество групп захвата в образце.

После выполнения метода найти совпадения, возвращает объект с типом «Совпадение». Он представляет собой описание подстроки-совпадения, полученной в результате применения некоторого образца к некоторой строке

4. Практическое применение в 1С:Предприятие.Элемент

С появлением образцов (аналогов регулярных выражений) в языке «Элемент» работа со строками в 1С стала намного проще и мощнее. В реальных конфигурациях разработчики сталкиваются с задачами валидации данных, трансформации текста, парсинга и извлечения информации. Всё это удобно реализуется через образцы.

Применение образцов в практике позволяет:

  1. Валидировать пользовательский ввод на этапе сохранения данных;
  2. Автоматически приводить данные к нужному формату;
  3. Анализировать журналы, системные сообщения и лог-файлы;
  4. Извлекать части информации из строк (например, домены, номера, идентификаторы);
  5. Писать более универсальный и лаконичный код при работе со строками.

Популярные кейсы, которые решаются с помощью регулярных выражений:

  • Проверка email: «^[\w.-]+@[\w.-]+\.[A-Za-z]{2,}$»
  • Проверка российского телефонного номера: ^\+7\d{10}$
  • Автоматическая разбивка ФИО: «^(\S+)\s+(\S+)\s*(\S*)$»
  • Вытаскивание кода валюты из строки вида "Счет 12345678 в банке в USD" :    «([A-Z]{3})»

5. Примеры для объектов конфигурации 1С:Предприятие.Элемент

Пример 1: Проверка ИНН при вводе

Как устроен ИНН в России:

  • ИНН физлица — 12 цифр (123456789012)

  • ИНН организации — 10 цифр (1234567890)

Напишем следующее регулярное выражение для получения ИНН из строки:

    знч образецИНН = новый Образец("^\\9{10}$|^\\9{12}$")
    знч РезультатПоиска = образецИНН.НайтиСовпадения(Источник.ВСтроку())
    знч ЕстьРезультат = не РезультатПоиска.Пусто()
    если ЕстьРезультат == Ложь
        Сообщить("ИНН должен содержать 10 или 12 цифр без пробелов и символов")
    иначе
        для ОчереднойРезультат из РезультатПоиска
            Сообщить(ОчереднойРезультат.ВСтроку())
        ;
    ;

 

После ввода строки «123абв123456» получаем результат:

1.png

Теперь введем два правильных ИНН: «1234567890 123123123123».

Видим следующий результат:

2.png

Пример 2: Поиск всех IP-адресов в логе

В реальной практике администрирования, сопровождения и мониторинга систем часто возникает задача:

  • Найти все IP-адреса, которые упоминаются в логах событий;
  • Выявить подозрительную активность с определённых адресов;
  • Построить отчёты о подключениях;
  • Проанализировать, с каких подсетей чаще происходят ошибки или атаки.

Имеем лог:

3.png

Чтобы извлечь из лога IP-адреса напишем следующее регулярное выражение:

знч Лог = "[2025-04-28 09:14:12] INFO: User login from IP 192.168.1.101\n" +
        "[2025-04-28 09:15:45] WARNING: Failed login from IP 203.0.113.45\n" +
        "[2025-04-28 09:17:03] ERROR: Timeout from IP 10.0.0.23\n" +
        "[2025-04-28 09:18:55] INFO: Logout from IP 172.16.5.77\n"
       
    знч образецИНН = новый Образец("(?:\\d{1,3}\\.){3}\\d{1,3}")
    знч РезультатПоиска = образецИНН.НайтиСовпадения(Лог)
    пер НоваяСтрока = ""
   
    для ОчереднойРезультат из РезультатПоиска
         НоваяСтрока += ОчереднойРезультат.Группа(0) + "\n"
    ;
   
    Сообщить(НоваяСтрока)

 

Получаем следующий результат:

4.png

Все IP-адреса были получены из лога верно. Дополнительно можно дописать выражения для получения не только IP-адресов, но и портов, если такие присутствуют


Использование регулярных выражений в 1С:Предприятие.Элемент через механизм образцов позволяет разработчикам писать более эффективный, читаемый и лаконичный код. Регулярки отлично подходят для валидации, преобразования и анализа данных. Благодаря интеграции образцов в язык «Элемент» у разработчиков появился мощный инструмент, который раньше был доступен только через внешние компоненты. Теперь многие задачи решаются буквально в несколько строк без дополнительных библиотек. Сейчас этот инструмент позволяет существенно упростить повседневную разработку в 1С.


Заказать консультацию специалиста 1С
Оставьте заявку и наши эксперты проконсультируют вас по данной статье.
Рассказать друзьям
1С:Предприятие.Элемент
Вам может быть интересно: