Разработчики, работающие со старыми версиями платформ 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.
Прежде чем приступать к установке сторонних библиотек, рассмотрим самый простой и быстрый способ улучшить работу встроенного браузера. Зачастую проблема кроется не в самом Internet Explorer, а в режиме его совместимости. Мы можем принудительно заставить операционную систему отрисовывать веб-страницы в 1С с использованием современных стандартов IE11.
Для этого нам потребуется внести изменения в системный реестр Windows. Разберем этот процесс по шагам:
regedit).HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION
1Cv8.exe (для толстого клиента) и 1Cv8c.exe (для тонкого клиента, если применимо).11000 в десятичной системе счисления (или 2AF8 в шестнадцатеричной). Это значение соответствует стандартам рендеринга IE11.После перезапуска 1С встроенное ПолеHTMLДокумента начнет поддерживать стандарты HTML5 и современные версии JavaScript на уровне Internet Explorer 11, что решит большинство проблем совместимости со стандартными сайтами.
Если возможностей 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: " + ОписаниеОшибки());
КонецПопытки;
Как справедливо отмечено в обсуждении на форуме, для крупных корпоративных систем, требующих гарантированной стабильности и богатого функционала, отличным (хоть и платным) выбором является компонент WebKitX ActiveX. Это мощное решение, которое упаковывает полноценный движок Chromium (через Chromium Embedded Framework - CEF) в стандартный ActiveX-контейнер.
Этот компонент поддерживает:
Несмотря на высокую стоимость лицензии, WebKitX избавляет разработчика от необходимости самостоятельно писать обертки на низкоуровневых языках программирования и обеспечивает мгновенную интеграцию с формами 1С через стандартный интерфейс ActiveX.
Выясним, как поступить, если бюджет проекта ограничен, а использовать сторонние платные компоненты нет возможности. В этой ситуации мы можем разработать собственную бесплатную библиотеку-обертку на платформе .NET с использованием библиотеки CefSharp (которая представляет собой обертку вокруг Chromium Embedded Framework для Windows Forms).
Рассмотрим общий алгоритм создания такой обертки:
CefSharp.WinForms.ChromiumWebBrowser.[ComVisible(true)] для нашего класса и интерфейса.regasm:
regasm.exe /codebase MyChromiumWrapper.dll
После регистрации библиотеки мы сможем вызывать и использовать наш собственный браузер Chromium непосредственно из кода 1С:
// Инициализация собственного компонента Chromium в 1С через COM
Попытка
МойБраузер = Новый COMОбъект("MyChromiumWrapper.ChromiumControl");
МойБраузер.LoadUrl("https://modern-web-app.ru");
Исключение
Предупреждение("Компонент Chromium не зарегистрирован в системе! " + ОписаниеОшибки());
КонецПопытки;
Если вы не хотите тратить время на разработку собственного компонента на C#, обратите внимание на готовые решения, разработанные сообществом 1С-программистов на специализированных ресурсах. Одним из ярких примеров является библиотека AltBrowser (компонент AltBrowser.Browser).
Это легкая бесплатная обертка вокруг Chromium Embedded Framework, разработанная специально под нужды интеграции с 1С. Компонент регистрируется в системе стандартным способом через утилиту regsvr32. Он позволяет разработчикам:
Подводя итоги, важно отметить, что все описанные выше методы являются обходными путями (workarounds), необходимыми для поддержки устаревших версий платформы (8.1 и 8.2). Если в будущем перед вами встанет вопрос о переводе конфигурации на новые версии, полезно знать, как развивался встроенный браузер 1С:
ПолеHTMLДокумента всегда будет использовать самый актуальный движок Chromium, поставляемый корпорацией Microsoft вместе с обновлениями операционной системы.Таким образом, для старых платформ 1С 8.1/8.2 оптимальным бесплатным решением является настройка эмуляции IE11 через реестр или использование бесплатного компонента типа AltBrowser. Для крупных проектов с высокими требованиями к поддержке и стабильности лучшим решением станет приобретение коммерческого ActiveX WebKitX или разработка собственной обертки на .NET CefSharp.