0
lufton
06.12.20
✎
23:14
|
Доброго времени суток! Есть необходимость использовать регулярные выражения в 1С на ВебКлиенте. Есть замечательная компонента, но она не устанавливается в ВебКлиент.
Возникла идея, а что если использовать методы самого браузера? Т.е. каким-то образом обратиться к объекту window открытого окна с запущенным ВебКлиентом.
Знаю, что можно использовать ПолеHTMLДокумента, но у меня задача: регулярки в общем модуле, т.е. без форм.
|
|
6
lufton
07.12.20
✎
02:35
|
Пока что вот так сделал, работает хотя бы в IE:
Функция RegEx(РегулярноеВыражение = "", ИгнорироватьРегистр = Истина, ВсеСовпадения = Истина) Экспорт
#Если ВебКлиент Тогда
RegEx = Новый COMОбъект("VBScript.RegExp");
RegEx.Pattern = РегулярноеВыражение;
RegEx.Global = ВсеСовпадения;
RegEx.IgnoreCase = ИгнорироватьРегистр;
#Иначе
ПодключитьВнешнююКомпоненту("ОбщийМакет.НП_RegEx","НП_RegEx", ТипВнешнейКомпоненты.Native);
RegEx = Новый("AddIn.НП_RegEx.RegEx");
RegEx.Шаблон = РегулярноеВыражение;
RegEx.ВсеСовпадения = ВсеСовпадения;
RegEx.ИгнорироватьРегистр = ИгнорироватьРегистр;
#КонецЕсли
Возврат RegEx;
КонецФункции
Функция Совпадает(Текст, РегулярноеВыражение, ИгнорироватьРегистр = Истина, ВсеСовпадения = Истина) Экспорт
RegEx = RegEx(РегулярноеВыражение, ИгнорироватьРегистр, ВсеСовпадения);
#Если ВебКлиент Тогда
Возврат RegEx.Test(Текст);
#Иначе
Возврат RegEx.Совпадает(Текст);
#КонецЕсли
КонецФункции
Функция Заменить(Текст, РегулярноеВыражение, Замена, ИгнорироватьРегистр = Истина, ВсеСовпадения = Истина) Экспорт
RegEx = RegEx(РегулярноеВыражение, ИгнорироватьРегистр, ВсеСовпадения);
#Если ВебКлиент Тогда
Возврат RegEx.Replace(Текст, Замена);
#Иначе
Возврат RegEx.Заменить(Текст, , Замена);
#КонецЕсли
КонецФункции
Может кому-то пригодится, но хотелось бы полноценные регулярки в более продвинутых браузерах.
|
|