Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Доступ к объекту window ВебКлиента

Доступ к объекту window ВебКлиента
Я
   lufton
 
06.12.20 - 23:14
Доброго времени суток! Есть необходимость использовать регулярные выражения в 1С на ВебКлиенте. Есть замечательная компонента, но она не устанавливается в ВебКлиент.
Возникла идея, а что если использовать методы самого браузера? Т.е. каким-то образом обратиться к объекту window открытого окна с запущенным ВебКлиентом.
Знаю, что можно использовать ПолеHTMLДокумента, но у меня задача: регулярки в общем модуле, т.е. без форм.
   acht
 
1 - 06.12.20 - 23:39
(0) > окна с запущенным ВебКлиентом.
...
> в общем модуле, т.е. без форм.

Чувстуешь противоречие, не?
   lufton
 
2 - 07.12.20 - 00:27
(1) да, чувствую ) что ж делать-то?
   acht
 
3 - 07.12.20 - 00:42
(2) Зависит о того, что тебе важней - общий модуль без форм или таки формы на клиенте.
   DES
 
4 - 07.12.20 - 00:58
   acht
 
5 - 07.12.20 - 01:33
(4) И чо там у тебя получилось?
   lufton
 
6 - 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.Заменить(Текст, , Замена);
    #КонецЕсли

КонецФункции

Может кому-то пригодится, но хотелось бы полноценные регулярки в более продвинутых браузерах.
   arsik
 
7 - 07.12.20 - 09:00
(0) Регулярки настолько хороши, что необходимы и их ничего не может заменить? Ну бред же.
   polosov
 
8 - 07.12.20 - 09:37
(7) Да, регулярки настолько хороши.

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.