RexV8

26.05.14

Разработка - Разработка внешних компонент

Компонента для использования скрытых в v8 регулярных выражений.
Более мощная альтернатива VBScript.RegExp.

Скачать файлы

Наименование Файл Версия Размер
RexV8 - 1.0.0.3
.zip 145,30Kb
207
.zip 145,30Kb 207 Скачать

Для работы с юникодом V8 использует кроссплатформенную библиотеку ICU, которая помимо прочего, содержит и функционал по работе с регулярными выражениями. По какой-то неизвестной причине, 1С не "вытащила" этот функционал "наружу", и пользоваться им из языка 1С возможности нет.

Однако, как всегда, на помощь приходят ВК.

Представляю свою разработку, которая строит "мостик" из библиотеки ICU в язык 1С. Она может работать и как Native ВК, и как аддин к Снегопату.

Разработка выполнена по технологии "real native", т.е. не просто нативная по терминологии 1С, а использует "родные" методы движка 1С и притворяется штатным объектом 1С. (В семерке так работали 1С++, Rainbow и пр.)

Работа проверялась в толстом и тонком клиенте, и на серверах 32 и 64 бит. Поддерживаются релизы 8.2, 8.3.

Для работы в релизах 8.2 младше 14ого, необходимо скопировать в папку bin файлы icuXXX46.dll из каталогов bin более старших релизов 1С.

Подробнее о регулярных выражениях в ICU можно посмотреть здесь. 

Если сравнивать их с обычно используемыми VBScript.RegExp - регулярки от ICU:

  • Поддерживает look behind
  • Поддерживает поиск по unicode-свойствам символов
  • Поддерживает комментарии в выражении
  • Более полный и гибкий набор флагов поиска
  • Всегда есть с 1С, даже под linux
  • Быстрее работает

Для упрощения перехода, часть методов компоненты сделана совместима с VBScript.Regexp.
Таким образом, в существующем коде достаточно поменять создание объекта с Новый COMОбъект("Vbscript.RegExp") на Новый("V8RegEx").
После этого можно пользоваться и остальными методами компоненты, в том числе и split - разбиением строки на части по регулярному выражению.

В поставку входит два файла:

  • rex32.dll - для работы в 32-битных клиентах и сервере
  • rex64.dll - для работы в 64-битном сервере

Также имеется полная документация в html и текстовом формате.

 

 

Основные планы на ближайшее будещее - сделать linux-версию.

 

Обновлено:

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

См. также

Медиадисплей. Рекламный информационный монитор для покупателя.

Разработка внешних компонент POS терминал Рабочее место Розничная торговля Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Управление торговлей 10 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Розничная и сетевая торговля (FMCG) Рестораны, кафе и фаст-фуд Реклама, PR и маркетинг Управленческий учет Платные (руб)

Монитор покупателя может отображать текущую покупку на кассовом месте, показывать видеорекламу, баннеры, во время простоя разворачивать рекламу на весь экран. Можно использовать в качестве графического меню-борда в кафе и видеовывески. Управление выводом на телевизор через hdmi-приставку на базе Windows или Android. В качестве устройства отображения можно использовать Android-планшеты, фоторамки с Android, монитор любого Windows-компьютера, доступного по сети. Настраивается ЛЮБОЙ ДИЗАЙН экрана!

16800 руб.

30.05.2017    52099    34    69    

43

Внешняя компонента для сканирования (замена TWAIN-компоненты БСП) (Native Win 32/64)

Разработка внешних компонент Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Внешняя компонента позволяет работать c TWAIN-совместимым оборудованием (сканерами, камерами) . Полностью совместима со стандартной TWAIN-компонентой из БСП и может применяться как ее замена без изменения вызовов, при этом может работать с 64-разрядной платформой, а так же имеет расширенную функциональность, например, сохранение результата непосредственно в PDF без использования сторонних утилит. Прекрасно работает на сервере, тонком клиенте и веб-клиенте (проверена работа в браузерах Google Chrome, Mozilla Firefox и Microsoft Internet Explorer).

2400 руб.

12.05.2020    26243    131    99    

83

Внешняя компонента для подключения 1С к телефонии Asterisk

Разработка внешних компонент Телефония, SIP Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Внешняя компонента выполнена по технологии Native API для 1С 8.х, обеспечивает доступ к программным АТС Asterisk (FreePBX, Elastix) через AMI интерфейс. Через него можно управлять многими функциями Asterisk (определение номеров, перевод звонков, набор телефона и т. д.)

2400 руб.

04.05.2018    44974    117    64    

60

Внешняя компонента печати PDF (Native Win 32/64)

Разработка внешних компонент Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Внешняя компонента позволяет печатать PDF файлы непосредственно из 1С, не используя при этом сторонних программ. Прекрасно работает на сервере, тонком клиенте и веб-клиенте. Основана на проекте PDFium из состава проекта Chromium/Chrome

1500 руб.

17.09.2018    35078    104    123    

111

Мастер создания внешних компонент 1С (технология COM) для DELPHI 6/7/8/2005/2006/2007/2008/2010/XE/XE2/XE3

Разработка внешних компонент Платформа 1С v8.3 Платные (руб)

Средство для сверхбыстрой разработки внешних компонент 1С:Предприятия 7.7 и 8 по технологии COM на всех версиях DELPHI, начиная с 6.

2000 руб.

28.03.2013    53998    35    14    

68

QR-код с логотипом компании (обычная и управляемая форма)

Разработка внешних компонент Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Платные (руб)

Как известно, стремление сделать свою рекламную продукцию запоминающейся и выделяющейся — верный путь к успеху. Сегодня, мы поговорим с вами о том, что можно сделать с обычным черно-белым QR-кодом, чтобы он стал более живым и привлекательным. Если вам не терпится попробовать сделать QR-код с логотипом компании, то эта обработка для вас!

2400 руб.

22.06.2016    30839    4    4    

8

Внешняя компонента 1С и С++. Продолжаем разговор.

Разработка внешних компонент Платформа 1С v8.3 Бесплатно (free)

А давайте запилим 8.3.26 до релиза, или оповещение с сервера...

19.02.2024    4037    starik-2005    28    

52

Внешние компоненты 1С и язык C++

Разработка внешних компонент Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

Некоторые практические аспекты создания внешних компонент на языке С++ для платформы 1С 8.3++.

26.01.2024    4778    starik-2005    32    

39
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. andrewks 1368 15.04.13 20:39 Сейчас в теме
зачёт. а исходники потом выложить не планируете?
2. orefkov 1152 15.04.13 20:52 Сейчас в теме
(1)
Планирую, как линукс версию сделаю.
starik-2005; tormozit; sa1m0nn; SirYozha; MarSeN; wowik; awa; steban; Evil Beaver; cool.vlad4; andrewks; +11 Ответить
3. andrewks 1368 15.04.13 21:30 Сейчас в теме
(2) отлично, будет очень интересно подглядеть :)
4. MarSeN 984 15.04.13 21:39 Сейчас в теме
(2)
Я бы тоже глянул, как делается real native.
5. ADirks 186 16.04.13 08:10 Сейчас в теме
Ну так то может и хорошо, что просто спрятали, а не как с SQL. Прикинь, Регулярные Выражения от 1С... страшно же...
6. andrewks 1368 16.04.13 08:19 Сейчас в теме
(5) ADirks, в том и цимус, что они не от 1С :)
это, типа, как в 7.7 zlibeng для архивации - приаттачили опенсорсовую длл-ку для внутренних нужд
7. Evil Beaver 8107 16.04.13 11:33 Сейчас в теме
А есть ли вообще в сети документация по SCOM? Я так понимаю, "притворяться" объектом 1С можно, если библиотека реализует этот одинэсовский креатив? Интересно, как можно вызвать, скажем moxel.dll из стороннего кода..
8. orefkov 1152 16.04.13 11:42 Сейчас в теме
(7)
Откуда ж документации-то в сети взяться?
Да и нет никакого SCOM на самом деле. Внутри там обычный COM - куча интерфейсов от IUnknown отнаследована, а объекты реализуют кучу интерфейсов, все через QueryInterface получается.
9. Evil Beaver 8107 16.04.13 12:17 Сейчас в теме
(8) а в линукс-дистрибутиве же то же самое, скорее всего? Я так думал, SCOM, это Sамодельный COM, с целью абстрагироваться от обычного.
Откуда ж документации-то в сети взяться?

Ну на *.cf и *.1cd откуда-то взялся, так что почему нет...
10. orefkov 1152 16.04.13 12:28 Сейчас в теме
(9)
Я не могу точно сказать, что в 1С имели ввиду под аббревиатурой SCOM.
Делать его самодельным - ну я не знаю. Сам по себе COM прост как три рубля, и довольно легко имплементируется.
11. andrewks 1368 16.04.13 12:30 Сейчас в теме
(9) Evil Beaver,
а в линукс-дистрибутиве же то же самое, скорее всего?

в линукс COM нет
12. orefkov 1152 16.04.13 12:41 Сейчас в теме
(11)
По сути своей (если не брать деталей межпроцессного обмена) - COM очень прост.
Он описывает правила вызова методов интерфейсов, подсчета ссылок на объект, и интерфейс IUnknown.
Вот всё, что я хотел сказать о COM.
14. andrewks 1368 16.04.13 13:03 Сейчас в теме
13. Evil Beaver 8107 16.04.13 12:58 Сейчас в теме
(11) andrewks, дык и я про что. COM нет, а SCOM, скорее всего есть.
Помнится, давно, я пытался извлечь из 1С-овской dll набор типов в виде type library. Так вот, ни один инструмент не опознал в ней COM-dll и ничего о внутренностях не сказал. Я это дело забросил, а вообще - жутко интересно, как можно правильно вызвать код из родной 1С-овской dll.
15. orefkov 1152 16.04.13 13:03 Сейчас в теме
(13)
TypeLibrary - это уже OLE, которое базируется на COM.
Сам COM для работы ни в каких type library не нуждается.
16. andrewks 1368 16.04.13 13:04 Сейчас в теме
(13) Evil Beaver, ну так dll-ка и не обязана всегда иметь COM-интерфейс, в общем случае
17. tormozit 7136 16.04.13 13:14 Сейчас в теме
Для совместимости RegExMatch.SubMatches(0) должен возвращать Неопределено в случае, если подгруппа не найдена. Сейчас возвращает пустую строку.
18. orefkov 1152 16.04.13 13:18 Сейчас в теме
(17)
Хм, странно. Вообще, по моей задумке должно было исключение кидать.
Приведи пожалуйста пример для ясности, я проверю.
19. tormozit 7136 16.04.13 13:34 Сейчас в теме
(18) Речь о необязательных подгруппах.
аа = Новый ("V8RegEx");
аа.Pattern = "(\d)?";
Результат = аа.Execute("");
Сообщить(ТипЗнч(Результат.Item(0).SubMatches(0)));

Должно выдавать Неопределено, а не Строка.
20. orefkov 1152 16.04.13 13:53 Сейчас в теме
Нет, все правильно выдает "Строка".
Найдено одно совпадение, захвачена группа - пустая строка.
В javascript себя так же ведет:
Код
typeof "".match(/(\d)?/)[1]
"string"
Показать полностью
22. tormozit 7136 16.04.13 14:03 Сейчас в теме
(20) Я конечно не специалист в JavaScript, но возможно в твоем коде сообщается тип первой Группы, а не первой Подгруппы первой Группы.
23. orefkov 1152 16.04.13 14:15 Сейчас в теме
(22)
В javascript - если регэксп не глобальный, возвращает объект, где [0] - все совпадение, [1] и далее - подгруппы.

А с (19) я наверное не смогу ничего делать.
Налицо разная реализация самих регекспов в разных библиотеках.
То есть ICU и javascript считают, что захвачена подгруппа - пустая строка, VBScript считает, что подгруппа не захвачена. Я же не полезу внутрь ICU переделывать реализацию самих регэкспов. Или VBScript всегда для подгрупп - пустых строк возвращает Неопределено? Если это так, то можно и сделать в этом частном случае.

Преобразование одного результата в строку - как его сделать? Выдавать значение свойства Value? Или выдавать "COMОбъект", как у VBScript?
cool.vlad4; +1 Ответить
25. tormozit 7136 16.04.13 14:30 Сейчас в теме
(23) Преобразование к строке есть насколько я знаю у всех типов 1С. Раз уж имитировать родной тип, то и эту особенность следует учесть. По умолчанию для всех типов платформы преобразование к строке возвращает имя типа. Думаю в нашем случае нужно сделать также.

> VBScript всегда для подгрупп - пустых строк возвращает Неопределено?
Нет. Неопределено возвращается в качестве подгруппы, если она необязательная и была не найдена. Для пустых строк возвращается пустая строка. Что очень логично, т.к. есть возможность различать
- не найденную необязательную подгруппу
- найденную пустую подгруппу

Такой код для VBScript.RegExp
аа.Pattern = "()?";
Результат = аа.Execute("");
Сообщить(ТипЗнч(Результат.Item(0).SubMatches(0)));
аа.Pattern = "(\d)?";
Результат = аа.Execute("");
Сообщить(ТипЗнч(Результат.Item(0).SubMatches(0)));
выдает

Строка
Не определено
24. cool.vlad4 2 16.04.13 14:22 Сейчас в теме
(20) а у меня undefined, что в html страничке, что в phantomjs.
26. orefkov 1152 16.04.13 14:41 Сейчас в теме
(24)
Ну тут уже в-принципе, не так важно, что в разных реализациях javascript выдает, важно, как себя ведет ICU.
А в ICU вообще невозможно отследить, захватилась или нет группа, ибо она всегда захватывается. Так что это тот порог, на котором борьбу за совместимость придется остановить.
cool.vlad4; +1 Ответить
21. tormozit 7136 16.04.13 13:59 Сейчас в теме
Ну я говорю про VBScript.RegExp, который очень распространен в коде 1С. Так вот он работает именно так, как я описал, что легко проверить в моем примере, заменив первую строку.

Кстати для новых типов объектов неплохо бы обеспечить преобразование к строке. Модифицировав мой пример
аа.Pattern = "(\d)?";
Результат = аа.Execute("");
Для Каждого Элемент Из Результат Цикл
	Сообщить("" + Элемент);
КонецЦикла;

получаем исключение
Преобразование значения к типу Строка не может быть выполнено
27. wirg 17.04.13 15:17 Сейчас в теме
28. StepByStep 3667 18.04.13 10:12 Сейчас в теме
Вопрос по производительности:
Быстрее работает

На сколько (%)?
29. orefkov 1152 18.04.13 17:00 Сейчас в теме
(28)
На некоторых тестах первая версия RexV8 обгоняла VBScript.Regexp не на проценты, а в 5 раз, а на других тестах - проигрывала в 2 раза. Вот жду, когда tormozit сделает замеры на новой версии.
30. DrAku1a 1679 20.04.13 11:57 Сейчас в теме
31. coder1cv8 3468 23.04.13 13:56 Сейчас в теме
Класс!
"Просмотра назад" в VBScript.RegExp бывало очень не хватало, да..
32. Andry.Boris 59 25.04.13 00:29 Сейчас в теме
Хорошая вещь... автору +
33. It-developer 24 26.04.13 18:01 Сейчас в теме
Какая цель? Что с помощью этого можно делать?
48. BorovikSV 1036 29.06.13 11:17 Сейчас в теме
(33) It-developer,
подумай, ты же как никак It-developer
34. tormozit 7136 01.05.13 12:22 Сейчас в теме
Провел сравнительный замер новой версии следующим кодом в консоли кода ИР
ПодключитьВнешнююКомпоненту("D:\Program Files\1cv82\common\rex32.dll", "V8RegEx", ТипВнешнейКомпоненты.Native);
текст = "луоалаокоащроощурагк кашгкаршгукрашгукр 87677 ыолвраылораыолршгр 8777 ыолвапаоыпорыпа рыпарваорпаырпа 999";
Количество = 100000;

ре = Новый("V8RegEx");
ре.Global = Истина; 
ЛксНачатьЗамер(Количество);
Для К = 1 По Количество Цикл
	результат1 = Новый Массив;
	ре.Шаблон = "";
	ре.Шаблон = "(\d+)";
	Вхождения = Ре.Execute(Текст);
	Для Каждого Вхождение Из Вхождения Цикл
	    результат1.Добавить(Вхождение.SubMatches(0));
	КонецЦикла;
КонецЦикла;
ЛксКончитьЗамер();

ре = Новый COMОбъект("Vbscript.RegExp");
ре.Global = Истина; 
ЛксНачатьЗамер(Количество);
Для К = 1 По Количество Цикл
	результат2 = Новый Массив;
	ре.Pattern = "";
	ре.Pattern  = "(\d+)";
    Вхождения = ре.Execute(текст);
	Для Каждого Вхождение Из Вхождения Цикл
        результат2.Добавить(Вхождение.SubMatches(0));
    КонецЦикла;
КонецЦикла;
ЛксКончитьЗамер();

///////////////////////////////////////

ре = Новый("V8RegEx");
ре.Global = Истина; 
ре.Шаблон = "(\d+)";
ЛксНачатьЗамер(Количество);
Для К = 1 По Количество Цикл
	результат1 = Новый Массив;
	Вхождения = Ре.Execute(Текст);
	Для Каждого Вхождение Из Вхождения Цикл
	    результат1.Добавить(Вхождение.SubMatches(0));
	КонецЦикла;
КонецЦикла;
ЛксКончитьЗамер();

ре = Новый COMОбъект("Vbscript.RegExp");
ре.Global = Истина; 
ре.Pattern  = "(\d+)";
ЛксНачатьЗамер(Количество);
Для К = 1 По Количество Цикл
	результат2 = Новый Массив;
    Вхождения = ре.Execute(текст);
	Для Каждого Вхождение Из Вхождения Цикл
        результат2.Добавить(Вхождение.SubMatches(0));
    КонецЦикла;
КонецЦикла;
ЛксКончитьЗамер();
Показать

Получил
Окончание замера "Замер_30" - Длительность = 1.135с, Среднее = 0.00001135с
Окончание замера "Замер_31" - Длительность = 2.849с, Среднее = 0.00002849с
Окончание замера "Замер_32" - Длительность = 1.08с, Среднее = 0.0000108с
Окончание замера "Замер_33" - Длительность = 2.538с, Среднее = 0.00002538с

Т.е. этот объект в 2-3 раз быстрее работает, чем VBScript.RegExp.
35. orefkov 1152 01.05.13 12:32 Сейчас в теме
(34)
Огромное спасибо за тесты!
Результаты радуют.
36. tormozit 7136 02.05.13 13:05 Сейчас в теме
Такой код приводит к недопустимой операции (переполнению стека?). 8.2.18.51
ПодключитьВнешнююКомпоненту("D:\Program Files\1cv82\common\rex32.dll", "V8RegEx", ТипВнешнейКомпоненты.Native);
текст = "луоалаокоащроощурагк кашгкаршгукрашгукр 87677 ыолвраылораыолршгр 8777 ыолвапаоыпорыпа рыпарваорпаырпа 999";
Количество = 1000;
ре = Новый("V8RegEx");
ре.Global = Истина; 
Для К = 1 По Количество Цикл
	ре.Шаблон = "(\d+)" + новый УникальныйИдентификатор;
	Ре.Заменить(текст, "$1");
КонецЦикла;
Показать

Problem signature:
Problem Event Name: APPCRASH
Application Name: 1CV8.exe
Application Version: 8.2.18.51
Application Timestamp: 513e4ca9
Fault Module Name: icudt46.dll
Fault Module Version: 4.6.1.5
Fault Module Timestamp: 50751a3d
Exception Code: c0000005
Exception Offset: 0029007a
OS Version: 6.1.7601.2.1.0.256.1
Locale ID: 1049
Additional Information 1: 0a9e
Additional Information 2: 0a9e372d3b4ad19135b953a78882e789
Additional Information 3: 0a9e
Additional Information 4: 0a9e372d3b4ad19135b953a78882e789
Показать

Видимо внутренний кэш не имеет контроля роста.
39. tormozit 7136 16.05.13 11:28 Сейчас в теме
В новой версии 1.0.0.3 тест (36) по-прежнему приводит к падению.
40. orefkov 1152 16.05.13 11:31 Сейчас в теме
(39)
Странно, у меня не падает.
Напиши версию 1С и архитектуру (32/64)
41. tormozit 7136 16.05.13 11:59 Сейчас в теме
(40) Да. Теперь в чистом виде (36) не воспроизводится, но в грязном воспроизводится. Пока могу лишь описание ошибки предоставить (ОС Win7 32b)
Problem signature:
Problem Event Name: APPCRASH
Application Name: 1CV8.exe
Application Version: 8.2.18.51
Application Timestamp: 513e4ca9
Fault Module Name: V8RegEx32.dll
Fault Module Version: 1.0.0.3
Fault Module Timestamp: 5194801f
Exception Code: c0000005
Exception Offset: 00006bb7
OS Version: 6.1.7601.2.1.0.256.1
Locale ID: 1049
Additional Information 1: 0a9e
Additional Information 2: 0a9e372d3b4ad19135b953a78882e789
Additional Information 3: 0a9e
Additional Information 4: 0a9e372d3b4ad19135b953a78882e789
Показать
Позже выясню детально, какое еще условие нужно для воспроизведения.
37. orefkov 1152 16.05.13 10:56 Сейчас в теме
Выложил версию 1.0.0.3.
Устранен ряд ошибок, иногда приводящий к вылету программы.
38. tormozit 7136 16.05.13 11:08 Сейчас в теме
Будет хорошо, если в описании указать про неполную совместимость с VB (пустая строка против Неопределено для не найденных необязательных подгрупп). Речь про этот фрагмент
Таким образом, в существующем коде достаточно поменять создание объекта с Новый COMОбъект("Vbscript.RegExp") на Новый("V8RegEx").
Дальше я бы дописал "Однако следует учитывать, что при получении не найденных необязательных подгрупп метод SubMatches в VBScript возвращает Неопределено, а в V8RegExp возвращает пустую строку".
42. tormozit 7136 17.05.13 09:55 Сейчас в теме
Несколько часов пытался, но не удалось сделать чистый пример. Ошибка точно есть (остаток от первоначальной). Сделал демо-базу из ИР, где в включен режим использования этого RegExp, и снял 2 видеоролика для демонстрации багов, насколько было возможно отвязал от логики ИР. http://rghost.ru/46054911. Я готов показать более подробно teamviewer'у, если есть желание.
43. tormozit 7136 20.05.13 23:20 Сейчас в теме
Вывел в чистом виде остаток бага. Так
ПодключитьВнешнююКомпоненту("D:\Program Files\1cv82\common\rex32.dll", "V8RegEx", ТипВнешнейКомпоненты.Native);
текст = "луоалаокоащроощурагк кашгкаршгукрашгукр 87677 ыолвраылораыолршгр 8777 ыолвапаоыпорыпа рыпарваорпаырпа 999";
Количество = 1000;
ре = Новый("V8RegEx");
ре.Global = Истина; 
ре.IgnoreCase = Истина;
Для К = 1 По Количество Цикл
	ре.Шаблон = "(\d+)" + Новый УникальныйИдентификатор + "";
	Ре.Заменить(текст, "$1");
КонецЦикла;
Показать

возникает недопустимая операция
Problem signature:
Problem Event Name: APPCRASH
Application Name: 1CV8.exe
Application Version: 8.2.18.51
Application Timestamp: 513e4ca9
Fault Module Name: rex32.dll
Fault Module Version: 1.0.0.3
Fault Module Timestamp: 5194801f
Exception Code: c0000005
Exception Offset: 00006bb7
OS Version: 6.1.7601.2.1.0.256.1
Locale ID: 1049
Additional Information 1: 0a9e
Additional Information 2: 0a9e372d3b4ad19135b953a78882e789
Additional Information 3: 0a9e
Additional Information 4: 0a9e372d3b4ad19135b953a78882e789
Показать
44. tormozit 7136 28.05.13 10:14 Сейчас в теме
Ну что, есть надежда на исправление бага (43)?
45. tormozit 7136 10.06.13 08:58 Сейчас в теме
При выполнении поиска с таким шаблоном
\[(DisplayName\("(\w+")\)\s*:\s*\w+,)?Description\("(.*?)"\)\s*[^\n]+\]\s*class\s+(\w+)\s*:\s*\w+\s*{(.*?)};
ругается

Ошибка при вызове метода контекста (Выполнить): Не удалось создать регулярное выражение. Строка 1, Позиция 106, текст до: '+)\s*:\s*\w+\s*', после: '{(.*?)};'
46. orefkov 1152 10.06.13 09:29 Сейчас в теме
Так фигурные скобки тоже надо экранировать
Код
\{(.*?)\};
Показать полностью
47. tormozit 7136 10.06.13 09:52 Сейчас в теме
(46) еще одно отличие от MS реализации. Там это не вызывает ошибки. Теперь вспомнил, что фигурные скобки для числа повторов используются. Но видимо в зависимости от контекста они автоматом распознаются в других реализациях как символы. Ок, буду везде их экранить для надежности.
49. tormozit 7136 23.08.13 09:53 Сейчас в теме
Ждать ли нам стабильной версии?
50. tormozit 7136 27.12.13 08:18 Сейчас в теме
51. GreenLab 83 02.01.14 09:44 Сейчас в теме
У кого-нибудь работает под 8.3.4. ? При подключении компоненты под 8.3.4.389 падает платформа. ОС:Win7 Pro x64.
52. helgi 28.01.14 14:03 Сейчас в теме
(0) orefkof,

а почему не Новый("V8RegExp") ? :)
53. manaxov83 44 06.02.14 16:45 Сейчас в теме
Платформа 8.3.4.408, при подключение ВК(ПодключитьВнешнююКомпоненту(ПутьКВК, "RegEx", ТипВнешнейКомпоненты.Native)) платформа вылетает в дамп!!!.
Можно ли как нить исправить этот косяк?
54. UncleVader 129 18.06.14 21:22 Сейчас в теме
Отличная штука!
Странно что в 1С нет штатного объекта для регулярок.
Мне не хватает до полного счастья только версии под линукс и параметра /U (Ungreedy), его сложно реализовать?
55. deevil 157 02.09.14 10:40 Сейчас в теме
Была платформа 8.2.19 - все работало нормально.
Обновились на 8.3.15 - начал падать 1с в момент подключения внешней обработки...
56. orefkov 1152 02.09.14 11:00 Сейчас в теме
(55)
8.3.15 пока не поддерживается. Следите за обновлениями.
57. deevil 157 02.09.14 21:19 Сейчас в теме
(56) ну хотя бы ориентир по срокам какой?

И желательно в описании написать до какой версии поддерживается...
58. orefkov 1152 03.09.14 16:48 Сейчас в теме
(57)
Проверяй - https://snegopat.ru/downloads/rex83.zip
Для 8.3.4.x, 8.3.5.x.
Я наскоро проверял на 8.3.5.823, на клиенте. На 64битном сервере не проверял.

59. deevil 157 04.09.14 02:44 Сейчас в теме
(58) да теперь все работает.
64х битного сервера к сожалению нет, поэтому не могу проверить.
А на 32х битном все работает отлично.

Спасибо за оперативность)

PS Касательно линукс версии - тоже было бы круто поскорей увидеть)
60. Поручик 4670 04.09.14 11:41 Сейчас в теме
(58) Спасибо. Я тоже сейчас использовал на 8.3.4.
62. Поручик 4670 17.02.15 20:41 Сейчас в теме
(58) Компонента успешно проработала с сентября месяца, а вчера внезапно началась валиться без выдачи каких-либо сообщений и исключений, просто программа тупо завершает работу. Пришлось в срочном порядке переключать на виндовый VBScript.RegExp.
Если интересно, вот набор регулярок

МассивШаблонов.Добавить("(евро[а-яa-z]{0,5}\s{0,1}[а-яa-z]{0,15}\s{0,1}отдел[а-яa-z]{0,5}\s{0,1})");
МассивШаблонов.Добавить("(итальян[а-яa-z]{0,5}\s{0,1}[а-яa-z]{0,10}\s{0,1}кафел[а-яa-z]{0,5}\s{0,1})");
МассивШаблонов.Добавить("(встроен[а-яa-z]{0,5}\s{0,1}[а-яa-z]{0,10}\s{0,1}шкаф[а-яa-z]{0,5}\s{0,1}купе[а-яa-z]{0,5}\s{0,1})");
МассивШаблонов.Добавить("(отдел[а-яa-z]{0,5}\s{0,1}[а-яa-z]{0,15}\s{0,1}евро[а-яa-z]{0,5}\s{0,1})");
МассивШаблонов.Добавить("(тепл[а-яa-z]{0,5}\s{0,1}[а-яa-z]{0,10}\s{0,1}пол[а-яa-z]{0,5}\s{0,1})");
		
МассивШаблонов.Добавить("(евро\s?ремон[а-яa-z]{0,5}\s?)|(evro\s?ремон[а-яa-z]{0,5}\s?)");
МассивШаблонов.Добавить("(ремон[а-яa-z]{0,5}\s{0,1}[а-яa-z]{0,10}\s{0,1}евро[а-яa-z]{0,5}\s{0,1})");
МассивШаблонов.Добавить("(сост[а-яa-z]{0,5}\s{0,1}[а-яa-z]{0,15}\s{0,1}отлич[а-яa-z]{0,5}\s{0,1})|(отлич[а-яa-z]{0,5}\s{0,1}[а-яa-z]{0,15}\s{0,1}сост[а-яa-z]{0,5}\s{0,1})");
МассивШаблонов.Добавить("(отлич[а-яa-z]{0,5}\s{0,1}[а-яa-z ]{0,35}\s{0,1}ремон[а-яa-z]{0,5}\s{0,1})");
МассивШаблонов.Добавить("([а-яa-z]{0,15}качествен[а-яa-z]{0,5}\s{0,1}[а-яa-z ]{0,35}\s{0,1}ремон[а-яa-z]{0,5}\s{0,1})");
МассивШаблонов.Добавить("(соврем[а-яa-z]{0,5}\s{0,1}[а-яa-z ]{0,35}\s{0,1}ремон[а-яa-z]{0,5}\s{0,1})|(ремон[а-яa-z]{0,5}\s{0,1}[а-яa-z ]{0,35}\s{0,1}соврем[а-яa-z]{0,5}\s{0,1})");
МассивШаблонов.Добавить("(дорогой[а-яa-z]{0,5}\s{0,1}[а-яa-z ]{0,35}\s{0,1}ремон[а-яa-z]{0,5}\s{0,1})|(ремон[а-яa-z]{0,5}\s{0,1}[а-яa-z ]{0,35}\s{0,1}дорогой[а-яa-z]{0,5}\s{0,1})");
МассивШаблонов.Добавить("(дизайн[а-яa-z]{0,5}\s{0,1}[а-яa-z ]{0,35}\s{0,1}ремон[а-яa-z]{0,5}\s{0,1})|(ремон[а-яa-z]{0,5}\s{0,1}[а-яa-z ]{0,35}\s{0,1}дизайн[а-яa-z]{0,5}\s{0,1})");

Для каждого ЭлементМассива Из МассивШаблонов Цикл    
	RegExp.Pattern = ЭлементМассива;
	Результат = RegExp.Test(ТекстовоеСодержимое);
	Если Результат Тогда //Результат.Count > 0
............ здесь что-то делаем
	КонецЕсли; 
КонецЦикла; //Для каждого ЭлементМассива Из  
Показать


Платформа 8.3.5.1383. Очень странно. Виндовый объект отрабатывает спокойно, причём ТекстовоеСодержимое предварительно очищается от всех небуквенно-цифровых символов.
63. tormozit 7136 18.02.15 07:38 Сейчас в теме
(62) Так я же еще в (41),(45) предупреждал. Автор до сих пор динамит багу =)
61. kolayuk 18.12.14 11:27 Сейчас в теме
Здравствуйте, не могли бы вы предоставить исходники данной компоненты? Очень интересует работа real native компонент, необходимо интегрировать свое окно в существующую форму 1С, через FindWindowEx это сделать проблематично, тк там куча окон с одинаковыми классами у всех ЭУ, нужно хотя бы получить HWND конкретной формы, судя по FormEx это возможно. Нашел исходники 1С++, но они для 7.7 и там, судя по инициализации компоненты с IDispatch она загружается как COM-объект, а не как Native... Собственно интересуют даже не столько исходники конкретной компоненты, сколько технология создания real-native компонент. Спасибо! Мои контакты: kolayuk at gmail.com
64. sashocq 193 28.07.15 23:50 Сейчас в теме
Давно ещё приметил эту разработку, а сейчас вот случай представился. И первый же случай не работает :-( На выражение
(?<Code>BD-?\d+).*

ругается:
Не удалось создать регулярное выражение. Строка 1, Позиция 4, текст до: '(?<', после: 'Code>BD-?\d+).*'

Прикрепленные файлы:
65. grumagargler 723 04.10.15 19:40 Сейчас в теме
на 1С:Предприятие x32 сервере 8.3.x, в многопользовательском режиме, использование этой компоненты приводит к падению рабочих процессов 1с, пришлось вернуться на regexp
66. Петров-Водкин 185 23.10.15 13:53 Сейчас в теме
А как можно ПодключитьВнешнююКомпоненту через макет?
67. Петров-Водкин 185 23.10.15 16:12 Сейчас в теме
Отвечаю сам себе.
Отлично подключается zip-архив с манифестом из общего макета.

68. q4a 100 28.10.15 11:20 Сейчас в теме
Выложите исходники, пожалуйста!
Версии под Linux очень не хватает =(
69. orefkov 1152 01.11.15 01:15 Сейчас в теме
(68)
Сейчас глянул исходники - это ужас. Я сейчас сам там с трудом разберусь - что нужно, что не нужно, что можно выкладывать, а что нет.
Давайте я постараюсь до Нового Года как-то решить вопрос. Сейчас есть мысль на базе нового снегопата сделать по аналогии работу в предприятии, там и регулярки тогда будут.
70. ChannelOne 02.06.16 13:22 Сейчас в теме
На сервере х64 Дерево результата заполняется мусором (8.3.7), на x32 все в порядке. Дело явно в ерунде! Может все-таки имеет смысл выложить исходники? Компонента крайне полезная! Автору Большое спасибо!
kao_andi; crtru; +2 Ответить
71. orefkov 1152 02.07.16 01:30 Сейчас в теме
(70) Pupkindt,
Дело то на самом деле не в исходниках. Эта ВК - костыли, причём релизо-зависимые. Как одинэсники-то докатились до жизни такой, что стоя уже обеими ногами в 21 веке - не имеют в своём распоряжении такого элементарного инструмента, как регулярные выражения? Они сейчас чуть не в каждой микроволновке есть. Даже С++ - и то уже включил их в стандарт языка - да, даже в С++ они теперь уже не сторонняя библиотека, а часть языка. И как я показал, внутри движка они есть. Но партия решила - одинэсники обойдутся.
kao_andi; tormozit; zeeman; murat_; cool.vlad4; +5 Ответить
72. sigmov 26.09.16 07:47 Сейчас в теме
Приложение умирает при "ПодключитьВнешнююКомпоненту".
Только у меня?

Сигнатура проблемы:
Имя события проблемы: BEX
Имя приложения: 1CV8C.exe
Версия приложения: 8.3.7.2008
Отметка времени приложения: 56f1d2b8
Имя модуля с ошибкой: StackHash_0a9e
Версия модуля с ошибкой: 0.0.0.0
73. kirillkr 29 13.03.17 14:38 Сейчас в теме
Исходников компоненты не будет?
kao_andi; kote; +2 Ответить
74. q4a 100 13.03.17 17:20 Сейчас в теме
Да, я еще в 2015 году просил. Пусть лучше будут хоть какие-то исходники, чем ничего.
Спасибо!
MariusUrsus; zakiap; kao_andi; kote; +4 Ответить
75. bke 01.12.17 12:52 Сейчас в теме
Добрый день, после обновления платформы с 8.3.10 до 8.3.11.2867 (по крайней мере других изменений в системе и коде не произошло) компонента "отвалилась" :) метод ПодключитьВнешнююКомпоненту() возвращает Ложь. При попытке перерегистрировать "ругается" на то, что "не найдена указанная процедура" (см. рис. во вложении).

Возможно, кто-то сталкивался с подобным, буду рад советам/комментариям. Спасибо!
Прикрепленные файлы:
76. sphere 26.08.19 15:43 Сейчас в теме
наткнулся на не корректную работу компоненты... как бы понять по используемому сейчас dll файлу, последняя ли это версия?
77. kuntashov 449 26.08.19 20:35 Сейчас в теме
(76) Сравните с той версией, что находится на сайте автора https://snegopat.ru/downloads/
78. sphere 27.08.19 11:45 Сейчас в теме
(77) вчера перешёл на использование VBScript.RegExp и проблема ушла. а файлы сейчас сравнил - совпадают (а за ссылку спасибо, вчера тут не смог найти раздел скачивания)
79. ImHunter 312 03.08.23 10:41 Сейчас в теме
Проект вообще живой? Хочу на 8.3.22 под win что-то запустить для RegExp.
И документацию бы отдельно выложить. А то непонятно, за что sm тратить - в свете неоплаты постов каждую копеечку приходится экономить.
80. tormozit 7136 03.08.23 11:45 Сейчас в теме
(79) Мертвый. В нем привязка к версии платформы. Есть классическая внешняя компонента https://infostart.ru/1c/tools/940766/
81. ImHunter 312 03.08.23 11:46 Сейчас в теме
(80) Ага, спасибо. Тоже уже нашел.
Оставьте свое сообщение