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

См. также

Разработка внешних компонент 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 и маркетинг Управленческий учет Платные (руб)

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

18000 руб.

30.05.2017    54042    9    69    

46

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

Внешняя компонента для конвертации PDF файлов в картинки без использования дополнительных программ. Работает на сервере и в тонком клиенте.

2400 руб.

25.06.2024    1127    3    4    

3

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

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

2400 руб.

04.05.2018    47298    124    66    

67

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

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

4600 руб.

27.06.2023    3598    3    0    

5

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

Позволяет автоматизировать работу с картинками. С помощью компоненты можно измерять размер изображений, поворачивать их, наносить водяные знаки, конвертировать из одного формата в другой. Будет очень полезна для интернет-магазинов и всех, кому постоянно требуется работать с различными графическими форматами. Выполнена по технологии NativeAPI. Работает с форматами: jpg (jpeg), png, bmp, gif, tif

3600 руб.

02.09.2010    77516    72    257    

191

Разработка внешних компонент Программист Платформа 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    28656    138    100    

91

Разработка внешних компонент Системный администратор Программист Стажер Бесплатно (free)

Библиотека для работы с базами SQLite из 1С на основе внешней компоненты. Для Linux и Windows, бесплатно и с открытым исходным кодом!

14.01.2025    1856    bayselonarrend    10    

44

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

В статье описывается приложение-конструктор внешних компонент (native API). Конструктор упрощает процесс разработки за счет удобного добавления всех нужных функций и процедур в графическом режиме, с указанием их параметров и типов параметров. На выходе приложение генерирует готовый код на С++ и Rust и позволяет сразу приступить к реализации, без настройки API компоненты вручную.

04.12.2024    4723    kovalevdmv    26    

75
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. andrewks 1375 15.04.13 20:39 Сейчас в теме
зачёт. а исходники потом выложить не планируете?
2. orefkov 1153 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 8261 16.04.13 11:33 Сейчас в теме
А есть ли вообще в сети документация по SCOM? Я так понимаю, "притворяться" объектом 1С можно, если библиотека реализует этот одинэсовский креатив? Интересно, как можно вызвать, скажем moxel.dll из стороннего кода..
8. orefkov 1153 16.04.13 11:42 Сейчас в теме
(7)
Откуда ж документации-то в сети взяться?
Да и нет никакого SCOM на самом деле. Внутри там обычный COM - куча интерфейсов от IUnknown отнаследована, а объекты реализуют кучу интерфейсов, все через QueryInterface получается.
9. Evil Beaver 8261 16.04.13 12:17 Сейчас в теме
(8) а в линукс-дистрибутиве же то же самое, скорее всего? Я так думал, SCOM, это Sамодельный COM, с целью абстрагироваться от обычного.
Откуда ж документации-то в сети взяться?

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

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

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

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

Преобразование одного результата в строку - как его сделать? Выдавать значение свойства Value? Или выдавать "COMОбъект", как у VBScript?
cool.vlad4; +1 Ответить
25. tormozit 7245 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 1153 16.04.13 14:41 Сейчас в теме
(24)
Ну тут уже в-принципе, не так важно, что в разных реализациях javascript выдает, важно, как себя ведет ICU.
А в ICU вообще невозможно отследить, захватилась или нет группа, ибо она всегда захватывается. Так что это тот порог, на котором борьбу за совместимость придется остановить.
cool.vlad4; +1 Ответить
21. tormozit 7245 16.04.13 13:59 Сейчас в теме
Ну я говорю про VBScript.RegExp, который очень распространен в коде 1С. Так вот он работает именно так, как я описал, что легко проверить в моем примере, заменив первую строку.

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

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

На сколько (%)?
29. orefkov 1153 18.04.13 17:00 Сейчас в теме
(28)
На некоторых тестах первая версия RexV8 обгоняла VBScript.Regexp не на проценты, а в 5 раз, а на других тестах - проигрывала в 2 раза. Вот жду, когда tormozit сделает замеры на новой версии.
30. DrAku1a 1748 20.04.13 11:57 Сейчас в теме
31. coder1cv8 3479 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 7245 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 1153 01.05.13 12:32 Сейчас в теме
(34)
Огромное спасибо за тесты!
Результаты радуют.
36. tormozit 7245 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 7245 16.05.13 11:28 Сейчас в теме
В новой версии 1.0.0.3 тест (36) по-прежнему приводит к падению.
40. orefkov 1153 16.05.13 11:31 Сейчас в теме
(39)
Странно, у меня не падает.
Напиши версию 1С и архитектуру (32/64)
41. tormozit 7245 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 1153 16.05.13 10:56 Сейчас в теме
Выложил версию 1.0.0.3.
Устранен ряд ошибок, иногда приводящий к вылету программы.
38. tormozit 7245 16.05.13 11:08 Сейчас в теме
Будет хорошо, если в описании указать про неполную совместимость с VB (пустая строка против Неопределено для не найденных необязательных подгрупп). Речь про этот фрагмент
Таким образом, в существующем коде достаточно поменять создание объекта с Новый COMОбъект("Vbscript.RegExp") на Новый("V8RegEx").
Дальше я бы дописал "Однако следует учитывать, что при получении не найденных необязательных подгрупп метод SubMatches в VBScript возвращает Неопределено, а в V8RegExp возвращает пустую строку".
42. tormozit 7245 17.05.13 09:55 Сейчас в теме
Несколько часов пытался, но не удалось сделать чистый пример. Ошибка точно есть (остаток от первоначальной). Сделал демо-базу из ИР, где в включен режим использования этого RegExp, и снял 2 видеоролика для демонстрации багов, насколько было возможно отвязал от логики ИР. http://rghost.ru/46054911. Я готов показать более подробно teamviewer'у, если есть желание.
43. tormozit 7245 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 7245 28.05.13 10:14 Сейчас в теме
Ну что, есть надежда на исправление бага (43)?
45. tormozit 7245 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 1153 10.06.13 09:29 Сейчас в теме
Так фигурные скобки тоже надо экранировать
Код
\{(.*?)\};
Показать полностью
47. tormozit 7245 10.06.13 09:52 Сейчас в теме
(46) еще одно отличие от MS реализации. Там это не вызывает ошибки. Теперь вспомнил, что фигурные скобки для числа повторов используются. Но видимо в зависимости от контекста они автоматом распознаются в других реализациях как символы. Ок, буду везде их экранить для надежности.
49. tormozit 7245 23.08.13 09:53 Сейчас в теме
Ждать ли нам стабильной версии?
50. tormozit 7245 27.12.13 08:18 Сейчас в теме
51. GreenLab 86 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 1153 02.09.14 11:00 Сейчас в теме
(55)
8.3.15 пока не поддерживается. Следите за обновлениями.
57. deevil 161 02.09.14 21:19 Сейчас в теме
(56) ну хотя бы ориентир по срокам какой?

И желательно в описании написать до какой версии поддерживается...
58. orefkov 1153 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. Поручик 4661 04.09.14 11:41 Сейчас в теме
(58) Спасибо. Я тоже сейчас использовал на 8.3.4.
62. Поручик 4661 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 7245 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 727 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 103 28.10.15 11:20 Сейчас в теме
Выложите исходники, пожалуйста!
Версии под Linux очень не хватает =(
69. orefkov 1153 01.11.15 01:15 Сейчас в теме
(68)
Сейчас глянул исходники - это ужас. Я сейчас сам там с трудом разберусь - что нужно, что не нужно, что можно выкладывать, а что нет.
Давайте я постараюсь до Нового Года как-то решить вопрос. Сейчас есть мысль на базе нового снегопата сделать по аналогии работу в предприятии, там и регулярки тогда будут.
70. ChannelOne 02.06.16 13:22 Сейчас в теме
На сервере х64 Дерево результата заполняется мусором (8.3.7), на x32 все в порядке. Дело явно в ерунде! Может все-таки имеет смысл выложить исходники? Компонента крайне полезная! Автору Большое спасибо!
kao_andi; crtru; +2 Ответить
71. orefkov 1153 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 103 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 330 03.08.23 10:41 Сейчас в теме
Проект вообще живой? Хочу на 8.3.22 под win что-то запустить для RegExp.
И документацию бы отдельно выложить. А то непонятно, за что sm тратить - в свете неоплаты постов каждую копеечку приходится экономить.
80. tormozit 7245 03.08.23 11:45 Сейчас в теме
(79) Мертвый. В нем привязка к версии платформы. Есть классическая внешняя компонента https://infostart.ru/1c/tools/940766/
81. ImHunter 330 03.08.23 11:46 Сейчас в теме
(80) Ага, спасибо. Тоже уже нашел.
Оставьте свое сообщение