RexV8

26.05.14

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

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
RexV8 - 1.0.0.3
.zip 145,30Kb
208
208 Скачать (1 SM) Купить за 1 850 руб.

Для работы с юникодом 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, в которой устранен ряд ошибок, иногда приводящих к вылету программы.

См. также

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

Внешняя компонента в виде библиотеки (.dll файл), позволяющая посылать команды и получать ответы по протоколу WebSocket из 1С. Компонента работает только на стороне "клиента".

4440 руб.

22.06.2020    18126    18    33    

22

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

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

2400 руб.

04.05.2018    46787    122    66    

66

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

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

3000 руб.

12.05.2020    28220    138    100    

90

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

Внешняя компонента, позволяющая посылать команды и получать ответы по GraphQL протоколу из 1С.Может быть использована при интеграции. В 1С работает на стороне "клиента".

4600 руб.

27.06.2023    3394    2    0    

4

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

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

1500 руб.

17.09.2018    36476    113    127    

114

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

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

26.01.2024    6767    starik-2005    32    

44

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

Пример взаимодействия 1С с Apach Kafka посредством внешней компоненты, разработанной на основе официальной библиотеки librdkafka (the Apache Kafka C/C++ client library).

22.11.2023    4358    86    ivan1703    26    

41
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. andrewks 1375 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 1375 15.04.13 21:30 Сейчас в теме
(2) отлично, будет очень интересно подглядеть :)
4. MarSeN 987 15.04.13 21:39 Сейчас в теме
(2)
Я бы тоже глянул, как делается real native.
5. ADirks 187 16.04.13 08:10 Сейчас в теме
Ну так то может и хорошо, что просто спрятали, а не как с SQL. Прикинь, Регулярные Выражения от 1С... страшно же...
6. andrewks 1375 16.04.13 08:19 Сейчас в теме
(5) ADirks, в том и цимус, что они не от 1С :)
это, типа, как в 7.7 zlibeng для архивации - приаттачили опенсорсовую длл-ку для внутренних нужд
7. Evil Beaver 8243 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 8243 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 1375 16.04.13 12:30 Сейчас в теме
(9) Evil Beaver,
а в линукс-дистрибутиве же то же самое, скорее всего?

в линукс COM нет
12. orefkov 1152 16.04.13 12:41 Сейчас в теме
(11)
По сути своей (если не брать деталей межпроцессного обмена) - COM очень прост.
Он описывает правила вызова методов интерфейсов, подсчета ссылок на объект, и интерфейс IUnknown.
Вот всё, что я хотел сказать о COM.
14. andrewks 1375 16.04.13 13:03 Сейчас в теме
13. Evil Beaver 8243 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 1375 16.04.13 13:04 Сейчас в теме
(13) Evil Beaver, ну так dll-ка и не обязана всегда иметь COM-интерфейс, в общем случае
17. tormozit 7229 16.04.13 13:14 Сейчас в теме
Для совместимости RegExMatch.SubMatches(0) должен возвращать Неопределено в случае, если подгруппа не найдена. Сейчас возвращает пустую строку.
18. orefkov 1152 16.04.13 13:18 Сейчас в теме
(17)
Хм, странно. Вообще, по моей задумке должно было исключение кидать.
Приведи пожалуйста пример для ясности, я проверю.
19. tormozit 7229 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 7229 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 7229 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 7229 16.04.13 13:59 Сейчас в теме
Ну я говорю про VBScript.RegExp, который очень распространен в коде 1С. Так вот он работает именно так, как я описал, что легко проверить в моем примере, заменив первую строку.

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

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

На сколько (%)?
29. orefkov 1152 18.04.13 17:00 Сейчас в теме
(28)
На некоторых тестах первая версия RexV8 обгоняла VBScript.Regexp не на проценты, а в 5 раз, а на других тестах - проигрывала в 2 раза. Вот жду, когда tormozit сделает замеры на новой версии.
30. DrAku1a 1745 20.04.13 11:57 Сейчас в теме
31. coder1cv8 3477 23.04.13 13:56 Сейчас в теме
Класс!
"Просмотра назад" в VBScript.RegExp бывало очень не хватало, да..
32. Andry.Boris 59 25.04.13 00:29 Сейчас в теме
Хорошая вещь... автору +
33. It-developer 26 26.04.13 18:01 Сейчас в теме
Какая цель? Что с помощью этого можно делать?
48. BorovikSV 1037 29.06.13 11:17 Сейчас в теме
(33) It-developer,
подумай, ты же как никак It-developer
34. tormozit 7229 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 7229 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 7229 16.05.13 11:28 Сейчас в теме
В новой версии 1.0.0.3 тест (36) по-прежнему приводит к падению.
40. orefkov 1152 16.05.13 11:31 Сейчас в теме
(39)
Странно, у меня не падает.
Напиши версию 1С и архитектуру (32/64)
41. tormozit 7229 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 7229 16.05.13 11:08 Сейчас в теме
Будет хорошо, если в описании указать про неполную совместимость с VB (пустая строка против Неопределено для не найденных необязательных подгрупп). Речь про этот фрагмент
Таким образом, в существующем коде достаточно поменять создание объекта с Новый COMОбъект("Vbscript.RegExp") на Новый("V8RegEx").
Дальше я бы дописал "Однако следует учитывать, что при получении не найденных необязательных подгрупп метод SubMatches в VBScript возвращает Неопределено, а в V8RegExp возвращает пустую строку".
42. tormozit 7229 17.05.13 09:55 Сейчас в теме
Несколько часов пытался, но не удалось сделать чистый пример. Ошибка точно есть (остаток от первоначальной). Сделал демо-базу из ИР, где в включен режим использования этого RegExp, и снял 2 видеоролика для демонстрации багов, насколько было возможно отвязал от логики ИР. http://rghost.ru/46054911. Я готов показать более подробно teamviewer'у, если есть желание.
43. tormozit 7229 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 7229 28.05.13 10:14 Сейчас в теме
Ну что, есть надежда на исправление бага (43)?
45. tormozit 7229 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 7229 10.06.13 09:52 Сейчас в теме
(46) еще одно отличие от MS реализации. Там это не вызывает ошибки. Теперь вспомнил, что фигурные скобки для числа повторов используются. Но видимо в зависимости от контекста они автоматом распознаются в других реализациях как символы. Ок, буду везде их экранить для надежности.
49. tormozit 7229 23.08.13 09:53 Сейчас в теме
Ждать ли нам стабильной версии?
50. tormozit 7229 27.12.13 08:18 Сейчас в теме
51. GreenLab 85 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 45 06.02.14 16:45 Сейчас в теме
Платформа 8.3.4.408, при подключение ВК(ПодключитьВнешнююКомпоненту(ПутьКВК, "RegEx", ТипВнешнейКомпоненты.Native)) платформа вылетает в дамп!!!.
Можно ли как нить исправить этот косяк?
54. UncleVader 129 18.06.14 21:22 Сейчас в теме
Отличная штука!
Странно что в 1С нет штатного объекта для регулярок.
Мне не хватает до полного счастья только версии под линукс и параметра /U (Ungreedy), его сложно реализовать?
55. deevil 161 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 161 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 161 04.09.14 02:44 Сейчас в теме
(58) да теперь все работает.
64х битного сервера к сожалению нет, поэтому не могу проверить.
А на 32х битном все работает отлично.

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

PS Касательно линукс версии - тоже было бы круто поскорей увидеть)
60. Поручик 4692 04.09.14 11:41 Сейчас в теме
(58) Спасибо. Я тоже сейчас использовал на 8.3.4.
62. Поручик 4692 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 7229 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 726 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 102 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 102 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 463 26.08.19 20:35 Сейчас в теме
(76) Сравните с той версией, что находится на сайте автора https://snegopat.ru/downloads/
78. sphere 27.08.19 11:45 Сейчас в теме
(77) вчера перешёл на использование VBScript.RegExp и проблема ушла. а файлы сейчас сравнил - совпадают (а за ссылку спасибо, вчера тут не смог найти раздел скачивания)
79. ImHunter 327 03.08.23 10:41 Сейчас в теме
Проект вообще живой? Хочу на 8.3.22 под win что-то запустить для RegExp.
И документацию бы отдельно выложить. А то непонятно, за что sm тратить - в свете неоплаты постов каждую копеечку приходится экономить.
80. tormozit 7229 03.08.23 11:45 Сейчас в теме
(79) Мертвый. В нем привязка к версии платформы. Есть классическая внешняя компонента https://infostart.ru/1c/tools/940766/
81. ImHunter 327 03.08.23 11:46 Сейчас в теме
(80) Ага, спасибо. Тоже уже нашел.
Оставьте свое сообщение