Как использовать Chromium или другие современные браузеры вместо устаревшего Internet Explorer в 1С 8.1 и 8.2?

Программист IT и автоматизация бизнеса
← На главную

Разработчики, работающие со старыми версиями платформ 1С:Предприятие (такими как 8.1 или 8.2), часто сталкиваются с серьезной проблемой: стандартный элемент формы ПолеHTMLДокумента жестко привязан к системному движку Internet Explorer (Trident). По умолчанию операционная система запускает этот компонент в режиме эмуляции крайне устаревшей версии IE7. Из-за этого современные веб-сайты, сложные JavaScript-скрипты, веб-сервисы и библиотеки (например, для построения карт, графиков или работы с REST API) отказываются работать, выдавая бесконечные ошибки совместимости.

В этой статье мы подробно разберем, как решить проблему интеграции современного браузера (Chromium или WebKit) в формы 1С 8.1 и 8.2, не прибегая к глобальному обновлению всей конфигурации до версии 1С 8.3. Мы проанализируем различные подходы — от бесплатной настройки реестра Windows до интеграции мощных сторонних ActiveX-компонентов и разработки собственной обертки на .NET.

Решение 1. Форсирование стандартов IE11 через реестр Windows (FEATURE_BROWSER_EMULATION)

Прежде чем приступать к установке сторонних библиотек, рассмотрим самый простой и быстрый способ улучшить работу встроенного браузера. Зачастую проблема кроется не в самом Internet Explorer, а в режиме его совместимости. Мы можем принудительно заставить операционную систему отрисовывать веб-страницы в 1С с использованием современных стандартов IE11.

Для этого нам потребуется внести изменения в системный реестр Windows. Разберем этот процесс по шагам:

  1. Откроем редактор реестра (выполним команду regedit).
  2. Перейдем к следующей ветке (для текущего пользователя):
    HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION
    Или для всех пользователей системы (требуются права администратора):
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION
  3. Если вы используете 32-битную версию платформы 1С на 64-битной операционной системе Windows, обязательно продублируйте настройки в ветке:
    HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION
  4. Создадим в этих ветках новый параметр типа DWORD (32 бита).
  5. В качестве имени параметра укажем имя исполняемого файла нашей платформы 1С — 1Cv8.exe (для толстого клиента) и 1Cv8c.exe (для тонкого клиента, если применимо).
  6. Установим значение параметра равным 11000 в десятичной системе счисления (или 2AF8 в шестнадцатеричной). Это значение соответствует стандартам рендеринга IE11.

После перезапуска 1С встроенное ПолеHTMLДокумента начнет поддерживать стандарты HTML5 и современные версии JavaScript на уровне Internet Explorer 11, что решит большинство проблем совместимости со стандартными сайтами.

Решение 2. Использование современных ActiveX-компонентов на базе Microsoft Edge WebView2

Если возможностей IE11 все еще недостаточно, проанализируем более прогрессивный метод — замену стандартного элемента формы на современный ActiveX-компонент, работающий под управлением движка Chromium (через системную библиотеку Microsoft Edge WebView2). Поскольку WebView2 по умолчанию интегрирован в современные версии Windows 10 и 11, мы можем использовать его потенциал.

Для интеграции нам понадобятся специальные ActiveX-обертки. Рассмотрим популярные варианты:

Рассмотрим пример того, как программно инициализировать и использовать подобный ActiveX-компонент на обычной форме 1С 8.1:


// Пример программного добавления элемента управления на форму
НовыйЭлемент = ЭлементыФормы.Добавить(Тип("АктивныйЭлемент"), "БраузерEdge", Истина);
НовыйЭлемент.Лево = 10;
НовыйЭлемент.Верх = 10;
НовыйЭлемент.Ширина = ЭлементыФормы.ПанельОсновная.Ширина - 20;
НовыйЭлемент.Высота = ЭлементыФормы.ПанельОсновная.Высота - 20;

// Получаем COM-объект элемента управления для работы с методами Chromium
Попытка
    КомпонентБраузера = НовыйЭлемент.Объект;
    КомпонентБраузера.Navigate("https://html5test.com");
Исключение
    Сообщить("Не удалось инициализировать компонент WebView2: " + ОписаниеОшибки());
КонецПопытки;

Решение 3. Интеграция коммерческого компонента WebKitX ActiveX

Как справедливо отмечено в обсуждении на форуме, для крупных корпоративных систем, требующих гарантированной стабильности и богатого функционала, отличным (хоть и платным) выбором является компонент WebKitX ActiveX. Это мощное решение, которое упаковывает полноценный движок Chromium (через Chromium Embedded Framework - CEF) в стандартный ActiveX-контейнер.

Этот компонент поддерживает:

Несмотря на высокую стоимость лицензии, WebKitX избавляет разработчика от необходимости самостоятельно писать обертки на низкоуровневых языках программирования и обеспечивает мгновенную интеграцию с формами 1С через стандартный интерфейс ActiveX.

Решение 4. Создание собственной бесплатной обертки на C# и CefSharp (.NET)

Выясним, как поступить, если бюджет проекта ограничен, а использовать сторонние платные компоненты нет возможности. В этой ситуации мы можем разработать собственную бесплатную библиотеку-обертку на платформе .NET с использованием библиотеки CefSharp (которая представляет собой обертку вокруг Chromium Embedded Framework для Windows Forms).

Рассмотрим общий алгоритм создания такой обертки:

  1. Создадим в среде Microsoft Visual Studio новый проект типа Class Library (.NET Framework). Обязательно выберем версию .NET Framework, совместимую с целевыми компьютерами пользователей.
  2. Установим через менеджер пакетов NuGet библиотеку CefSharp.WinForms.
  3. Создадим пользовательский элемент управления (UserControl), на который поместим стандартный объект ChromiumWebBrowser.
  4. Сделаем созданный класс видимым для COM-клиентов. Для этого добавим атрибут [ComVisible(true)] для нашего класса и интерфейса.
  5. Настроим проект на генерацию COM-библиотеки (в свойствах проекта на вкладке "Build" установим флаг "Register for COM interop").
  6. Скомпилируем проект и зарегистрируем полученную сборку на компьютерах пользователей с помощью утилиты regasm:
    regasm.exe /codebase MyChromiumWrapper.dll

После регистрации библиотеки мы сможем вызывать и использовать наш собственный браузер Chromium непосредственно из кода 1С:


// Инициализация собственного компонента Chromium в 1С через COM
Попытка
    МойБраузер = Новый COMОбъект("MyChromiumWrapper.ChromiumControl");
    МойБраузер.LoadUrl("https://modern-web-app.ru");
Исключение
    Предупреждение("Компонент Chromium не зарегистрирован в системе! " + ОписаниеОшибки());
КонецПопытки;

Решение 5. Использование готовых бесплатных альтернатив от сообщества (AltBrowser)

Если вы не хотите тратить время на разработку собственного компонента на C#, обратите внимание на готовые решения, разработанные сообществом 1С-программистов на специализированных ресурсах. Одним из ярких примеров является библиотека AltBrowser (компонент AltBrowser.Browser).

Это легкая бесплатная обертка вокруг Chromium Embedded Framework, разработанная специально под нужды интеграции с 1С. Компонент регистрируется в системе стандартным способом через утилиту regsvr32. Он позволяет разработчикам:

Перспективы: Эволюция встроенного браузера в новых версиях платформ 1С

Подводя итоги, важно отметить, что все описанные выше методы являются обходными путями (workarounds), необходимыми для поддержки устаревших версий платформы (8.1 и 8.2). Если в будущем перед вами встанет вопрос о переводе конфигурации на новые версии, полезно знать, как развивался встроенный браузер 1С:

Таким образом, для старых платформ 1С 8.1/8.2 оптимальным бесплатным решением является настройка эмуляции IE11 через реестр или использование бесплатного компонента типа AltBrowser. Для крупных проектов с высокими требованиями к поддержке и стабильности лучшим решением станет приобретение коммерческого ActiveX WebKitX или разработка собственной обертки на .NET CefSharp.

← На главную