TGViewer
Журнал инженера-программиста Журнал инженера-программиста @software_engineer_notes · 250 subscribers
Post #116 194
😸 С версии платформы 1С 8.3.23 в стандартную библиотеку наконец-то добавили поддержку регулярных выражений. Об этой возможности разработчики просили вендора годами, но получали отказ с формулировкой: "большинству адинесников не хватит квалификации для работы с регулярками и потому от их реализации на платформе будет больше вреда чем пользы". В результате, люди стали использовать COM-объект VBScript.RegExp, Python-скрипты и самописные компоненты.

😯 В конце-концов вендор сдался и добавил нам регулярки. Или не сдался? Такое ощущение, что добавили их точно так же, как ранее добавляли для нас "реактивность" с целью не превращать код в спагетти из обработчиков оповещений (для тех, кто не из мира 1С, уточню - очень хреново добавили).

👨‍💻 Сегодня у меня подвернулась задачка по поиску фрагментов в тексте по определенному образцу. Пора протестировать новые возможности!

🤝 Открываю справку в EDT, где я сейчас большую часть времени разрабатываю:

Method name: StrFindAllByRegularExpression
Syntax: StrFindAllByRegularExpression(String, MultilineSearch)
Description: Finds all regular expression occurrences in the source string.

Return value type: •Array
Return value description: Array of elements of the ResultOfSearchByRegularExpression type.

Parameters:
•String (Required). Type: String. Description: Source string.
•MultilineSearch (Not required). Type: Boolean. Description: True. Multiline search is performed...


⛔️ Что? А куда саму регулярку передавать???

🛠 Ладно, всем известно, что в EDT Справка по платформе 1С просто для галочки и ею абсолютно никто не пользуется. Делаю как и все мои коллеги - запускаю Конфигуратор и смотрю уже в его справке:

StrFindAllByRegularExpression
Syntax: StrFindAllByRegularExpression(<String>, <MultilineSearch>, <IgnoreCase>, <MultilineSearch>)
Parameters:
<String> (required) Type: String. Source string.
<MultilineSearch> (required) Type: String. Regular expression.
<IgnoreCase> (optional) Type: Boolean. True - don't match case, False - match case.
<MultilineSearch> (optional) Type: Boolean. True. Multiline search is performed. In a regular expression template


🤨 Получше, но все еще не имеет смысла - нет параметра для паттерна, а параметр построчной работы с текстом почему-то указан дважды...

✔️ Как мы знаем, в C# и в ряде других языков для поиска по регулярке используется функция, где первый параметр Текст, а второй - сама регулярка (кстати, в PHP, Python и Go - наоборот). Так же именно такая последовательность параметров в старой функции поиска по подстроке. В общем, я попробовал вторым параметром передать свой паттерн и успешно получил требуемый массив вхождений образца!

ℹ️ Кстати, подобной чехарды нет в описании функций замены StrReplaceByRegularExpression() и проверки на подобие StrLikeByRegularExpression(). Все нормально описано и в Конфигураторе, и в EDT. Даже имеются примеры применения.

❗️ Но, если бы все проблемы были только в кривой справке, я бы даже не стал начинать писать эту заметку. Оказывается, что ни одна из новых функций не работает на клиенте! Только серверные вызовы 🧐

Т.е. платформа как бы умеет теперь работать с регулярками. Но, если нам нужно анализировать тексты в файлах на клиенте или нужно выполнять парсинг веб-страниц именно на стороне пользователя, то как и прежде требуется использовать сторонние инструменты. Кря 🦆
  • 👍 6
More from @software_engineer_notes
  1. Oct 3, 2026"Вы автоматизируете хаос" - этим страхом любят пугать своих бизнес-заказчиков консалтеры,…
  2. Sep 28, 2026Уже второй проект на работе делаю в методике "парного программирования" с Claude Code. И с…
  3. Sep 13, 2026За последний месяц произошло много событий, но наиболее интересным является использование…
  4. Sep 1, 2026Самая обычная бумажная книга учета - это пока лучший инструмент фиксации проектных изменен…
  5. Aug 31, 2026Очень показательная причина моей нелюбви реализации сравнения/объединения конфигураций в 1…
  6. Aug 29, 2026О концепции LLM-Wiki я впервые прочитал на X (Twitter). Чтобы позже ознакомится детальнее,…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →