При разработке внутренних инструментов в среде 1С:Предприятие часто возникает необходимость интегрировать веб-контент непосредственно в управляемые или обычные формы. Это может быть справочная информация, личный кабинет на портале Инфостарт или специфические веб-сервисы. Однако многие разработчики сталкиваются с тем, что встроенный в 1С объект ПолеHTMLДокумента отображает страницы некорректно, выдает ошибки JavaScript или вовсе отказывается загружать сайт, сообщая об устаревшей версии браузера. Разберем подробно, почему это происходит и как настроить систему для полноценной работы с современным вебом.
Исторически сложилось, что платформа 1С для операционных систем семейства Windows использует движок Internet Explorer для отрисовки HTML-содержимого. Проблема заключается в том, что по соображениям обратной совместимости Windows запускает эмуляцию браузера в режиме IE 7 для всех сторонних приложений, использующих компонент WebBrowser. Поскольку современные сайты, такие как Инфостарт, давно отказались от поддержки седьмой и даже восьмой версии IE, страница просто не может корректно обработать скрипты и стили.
Для решения этой задачи нам потребуется выполнить ряд настроек на уровне операционной системы или изменить подход к разработке в самой платформе 1С. Рассмотрим все доступные варианты, начиная от классических правок реестра и заканчивая современными возможностями платформы.
Проанализируем самый популярный и проверенный временем метод. Чтобы заставить 1С использовать движок более современной версии (например, IE 11), необходимо внести изменения в реестр Windows. Это скажет системе, что при запуске конкретных исполняемых файлов 1С нужно активировать актуальный режим рендеринга.
Для настройки выполним следующие шаги:
Win + R, введем команду regedit и нажмем Enter.
HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION
В этом разделе нам нужно создать параметры REG_DWORD для всех исполняемых файлов 1С, которые мы используем. Рассмотрим подробнее, какие именно имена файлов стоит добавить:
Для каждого созданного параметра необходимо установить значение 11001 (в десятичной системе исчисления). Выясним, почему именно это значение. Код 11000 принудительно включает IE11, но игнорирует директиву !DOCTYPE, в то время как код 11001 заставляет браузер строго следовать стандартам, указанным в коде страницы. Для современных сайтов режим 11001 является наиболее предпочтительным.
Проанализируем ситуацию, когда правки в ветке HKEY_CURRENT_USER не приносят результата. Если вы используете 64-битную версию Windows, а клиент 1С является 32-битным (или наоборот), настройки могут не подхватиться из-за особенностей перенаправления реестра. Для обеспечения гарантированной работы на всех типах клиентов рекомендуется продублировать записи в следующих ветках:
Для всей системы (требуются права администратора):
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION
Специально для 32-битных приложений на 64-битной Windows:
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION
После добавления значений 11001 для 1cv8.exe и 1cv8c.exe во все указанные ветки, перезагрузите клиент 1С и проверьте результат. В большинстве случаев сайт Инфостарта начнет открываться корректно.
Рассмотрим наиболее современный и технологичный способ, который появился в последних версиях платформы 1С (начиная с 8.3.23 и выше). Разработчики 1С добавили возможность полностью отказаться от устаревшего Internet Explorer в пользу современного движка Microsoft Edge (Chromium).
Чтобы воспользоваться этим преимуществом, проанализируем необходимые действия:
ПолеHTMLДокумента.Важное условие: для работы этого режима на компьютерах пользователей должен быть установлен компонент Microsoft Edge WebView2 Runtime. В современных версиях Windows 10 и 11 он обычно присутствует по умолчанию, но для более старых систем его потребуется скачать с сайта Microsoft.
Преимущество этого метода в том, что он не требует манипуляций с реестром и обеспечивает поддержку самых последних веб-стандартов, включая корректную работу тяжелых скриптов и CSS-анимаций, которые часто используются на Инфостарте.
Иногда даже после настройки эмуляции сайт не открывается, показывая ошибку «Страница не может быть отображена». Разберем причину: современные сайты требуют безопасного соединения по протоколам TLS 1.2 или TLS 1.3. Старые настройки операционной системы могут ограничивать использование этих протоколов для движка IE.
Посмотрим, как это исправить:
Даже в режиме эмуляции IE 11 некоторые современные скрипты могут вызывать предупреждения об ошибках. Чтобы эти окна не мешали пользователю при работе в 1С, мы можем программно отключить вывод диалогов об ошибках.
Для этого в коде 1С при инициализации формы или перед загрузкой страницы выполним следующую настройку:
// Для управляемых форм
Элементы.ИмяПоляHTML.ТихаяОстановка = Истина;
// Для обычных форм через COM-объект (если доступно)
ДокументHTML = Элементы.ИмяПоляHTML.Документ;
Если ДокументHTML <> Неопределено Тогда
ДокументHTML.parentWindow.onerror = Новый COMОбъект("Scripting.Dictionary"); // Условный пример
КонецЕсли;
Свойство ТихаяОстановка позволяет платформе игнорировать программные сбои в HTML-коде, обеспечивая бесперебойную работу интерфейса основной программы.
Выясним, как обстоят дела у пользователей альтернативных операционных систем. Стоит отметить, что все вышеперечисленные манипуляции с реестром актуальны только для Windows. В версиях клиента 1С для Linux и macOS платформа изначально использует движок WebKit (аналогичный используемому в Safari). Этот движок по умолчанию является гораздо более современным, чем IE, поэтому пользователи этих систем обычно не испытывают проблем с открытием современных веб-ресурсов внутри 1С. Если же проблема возникает, единственным верным решением будет обновление платформы 1С до актуального релиза.
Подведем итог: для старых конфигураций и версий платформы ниже 8.3.23 основным решением остается правка реестра в ветке FEATURE_BROWSER_EMULATION со значением 11001. Для современных внедрений крайне рекомендуется переходить на использование движка Chromium через свойства объекта в конфигураторе, что навсегда снимет вопрос совместимости с веб-сайтами.