Найти в Дзене

Подключение RegEx1CAddin к 1с с картинками!

В статье я расскажу о том как подключить модуль (компоненту) RegEx1CAddin к 1с без регистраций в regsrv32 и подобных!

Вначале расскажу о проблеме, почему у меня возникла такая задача.

Мне необходимо было получить значения через регулярные выражения, но стандартные процедуры работы с регулярными выражениями вызванные через \\Новый COMОбъект("VBScript.RegExp")\\ не имели в составе работу с такими позиционными проверками как Lookaround (?<=) и Lookbehind (?=). При вызове функции происходила ошибка исключения 0x800A1399.

Пример паттерна: "(?<='DISCOUNT_VALUE':')[0-9]*(?=')";

5017 (0x800A1399) Regular expression syntax error. Решение!
Полный список ошибок по regex VBA, здесь: https://ss64.com/vb/syntax-errors.html
5017 (0x800A1399) Regular expression syntax error. Решение! Полный список ошибок по regex VBA, здесь: https://ss64.com/vb/syntax-errors.html

После этого встал вопрос о решении данной проблемы. И как выяснилось проблема была в неполноценности используемого COM модуля VBScript.RegExp.

Теперь о решении!

Нам поможет товарищ alexkmbk с модулем RegEx1CAddin.
https://github.com/alexkmbk/RegEx1CAddin

В описании всё просто и по функционалу не вызывает проблем, но вот с установкой (подключением) был затык. А именно "Предполагается что архив с компонентами был загружен в общий макет "RegEx". Так как же его подключить?! И теперь давайте по пунктам:

Шаг 1: Скачиваем компилированные файлы (я буду далее писать про win (WinServ2019)).
Копилированные файлы здесь:
https://github.com/alexkmbk/RegEx1CAddin/releases/tag/14.2 (проверяйте обновления ссылка может устареть!)

Окно гита по ссылке https://github.com/alexkmbk/RegEx1CAddin/releases/tag/14.2
Окно гита по ссылке https://github.com/alexkmbk/RegEx1CAddin/releases/tag/14.2

Шаг 2: Распаковываем архив под win. В нём будут следующие файлы:

Содержимое архива RegEx1CAddin_14
Содержимое архива RegEx1CAddin_14

Шаг 3: Копируем файлы *.dll в директорию 1с.
У меня путь был следующим, но у вас может отличаться в зависимости от выбранной папки при установке.

C:\Program Files (x86)\1cv8\8.3.18.1208\bin\dmf\native\

далее соответственно RegExWin32_14_2.dll копируем в x86, и RegExWin64_14_2.dll в x64.

Шаг 4: Подключаем общий макет.
Создаем макет в Общие->Общие макеты. Далее выбираем Внешняя компоновка и задаём имя "RegEx". Указываем путь к скопированному x86 файлу.

Конструктор макета для RegEx1CAddin . Выбрать Внешняя компоновка.
Конструктор макета для RegEx1CAddin . Выбрать Внешняя компоновка.

Шаг 5: Пишем код... (далее к программистам!)

ПодключитьВнешнююКомпоненту("ОбщийМакет.RegEx", "Component", ТипВнешнейКомпоненты.Native);
RegExpLocal = Новый("AddIn.Component.RegEx");

Использованные в статье источники:
https://proglib.io/p/learn-regex - по RegEx
https://github.com/alexkmbk/RegEx1CAddin - Описание модуля
https://github.com/alexkmbk/RegEx1CAddin/releases/tag/14.2 - Компилированная версия модуля RegEx1CAddin