При разработке интерфейсов в 1С часто возникает необходимость интеграции со сторонними веб-сервисами. Это могут быть интерактивные карты, 3D-визуализаторы, системы мониторинга или сложные графические дашборды. Однако при попытке открыть сайт, использующий технологию WebGL, внутри элемента формы Поле HTML документа в тонком клиенте 1С, разработчики часто сталкиваются с ошибками совместимости. Наиболее распространенное предупреждение выглядит так: Please note that your browser is not currently supported for this Unity WebGL content. Press OK if you wish to continue anyway.. После нажатия кнопки интерактивный контент либо не отображается вовсе, либо работает крайне медленно.
В этой статье мы подробно разберем, почему встроенный браузер 1С накладывает такие ограничения на работу с WebGL, как проанализировать эту проблему изнутри платформы и какие практические способы существуют для обхода данного ограничения.
Для понимания сути проблемы совершим небольшой экскурс в историю развития платформы «1С:Предприятие». До версии 8.3.14 встроенный браузер в операционной системе Windows базировался на системном COM-объекте Internet Explorer (движок Trident). По умолчанию он запускался в режиме совместимости с устаревшей версией IE7, однако разработчики могли легко обойти это ограничение. Достаточно было внести изменения в реестр Windows, добавив параметр FEATURE_BROWSER_EMULATION со значением 11000 или 11001 для процессов 1Cv8c.exe (тонкий клиент) и 1Cv8.exe (толстый клиент). Это принудительно переключало движок встроенного браузера на IE11, где присутствовала базовая поддержка технологии WebGL 1.0.
Начиная с версии платформы 8.3.14.1565, фирма «1С» полностью отказалась от использования Internet Explorer и перевела отображение HTML во всех клиентских приложениях на собственную кроссплатформенную сборку движка WebKit. С одной стороны, это решило давнюю проблему кроссплатформенности и позволило одинаково отображать веб-страницы на Windows, Linux и macOS. С другой стороны, интеграция WebKit привнесла серьезные технические ограничения:
bin\conf.cfg) или ключей запуска, которые позволили бы разработчику принудительно включить WebGL или передать движку дополнительные параметры запуска (такие как --enable-webgl или --ignore-gpu-blocklist, доступные в классических браузерах).Посмотрим на типичный JavaScript-код, который выполняется на целевом сайте для проверки доступности WebGL. Если запустить его во встроенном HTML-поле 1С, результатом будет системная ошибка инициализации контекста:
var canvas = document.createElement("canvas");
var gl = canvas.getContext("webgl") || canvas.getContext("experimental-webgl");
if (!gl) {
console.log("WebGL не поддерживается в данном браузере или отключено аппаратное ускорение.");
} else {
console.log("WebGL успешно инициализирован!");
}
Прежде чем приступать к реализации обходных путей, проанализируем ситуацию непосредственно на вашем рабочем месте. Платформа 1С позволяет открыть скрытую консоль разработчика (DevTools) прямо внутри управляемой формы.
Разберем по шагам, как запустить отладку:
На экране появится полноценное окно отладчика WebKit. Перейдите на вкладку Console. Именно здесь вы увидите детальные логи ошибок, которые генерирует сайт при попытке инициализировать графический контекст webgl или webgl2. Если вы видите сообщения о нехватке памяти, блокировке контекста или отсутствии поддержки шейдеров — это явный признак того, что штатный WebKit не справляется с рендерингом.
Поскольку включить аппаратное ускорение непосредственно внутри встроенного WebKit в тонком клиенте невозможно, рассмотрим наиболее эффективные альтернативные архитектурные решения.
Это самый простой и надежный способ задействовать WebGL без внесения сложных изменений в программный код конфигурации 1С.
Рассмотрим подробнее схему его работы. Если опубликовать информационную базу на веб-сервере (под управлением Microsoft IIS или Apache) и запустить 1С через современный внешний браузер (Google Chrome, Яндекс.Браузер, Microsoft Edge, Safari), то клиентским приложением становится сам браузер пользователя.
В этом режиме элемент формы Поле HTML документа обрабатывается полноценным современным движком внешнего браузера (например, Blink/Chromium). Внешний браузер имеет прямой доступ к драйверам видеокарты, поэтому технологии WebGL 1.0 и WebGL 2.0 будут работать в полную силу с использованием аппаратного ускорения вашего ПК.
Если вы являетесь разработчиком веб-страницы или интерактивного сервиса, который планируется встраивать в 1С, проанализируйте требования к графике. Действительно ли вам необходимо честное 3D?
Встроенный движок WebKit в 1С отлично поддерживает стандартный Canvas 2D API и векторную графику SVG. В отличие от WebGL, отрисовка двухмерного холста (Canvas 2D) не требует обязательного наличия видеокарты и успешно выполняется силами центрального процессора. Производительности Canvas вполне достаточно для отображения интерактивных схем складов, планов помещений, несложных графиков, чертежей и анимаций. Для практического изучения возможностей 2D-рендеринга подойдёт пример реализации 2D-графики без внешних компонент.
Если отказаться от тонкого клиента 1С нельзя, а WebGL критически необходим, мы можем заменить стандартное HTML-поле на современный Chromium-совместимый компонент. Наилучшим выбором для операционной системы Windows является компонент Microsoft Edge WebView2.
Компонент WebView2 базируется на современном движке Chromium и автоматически обновляется вместе с операционной системой. Он обладает полноценной поддержкой WebGL 2.0, WebAssembly и всех современных веб-стандартов.
Для встраивания WebView2 на управляемую форму 1С используется ActiveX-обертка или создание специального COM-объекта. Рассмотрим концептуальный пример инициализации такого компонента на форме 1С:
&НаКлиенте
Процедура ПриОткрытии(Отказ)
Попытка
// Создаем объект WebView2 через ActiveX или COM-обертку
ПутьКФайлу = ПолучитьИмяВременногоФайла("html");
// Инициализируем компонент на форме
Элементы.ДекорацияWebView.Картинка = Новый Картинка();
// Загружаем целевой URL с поддержкой WebGL
WebViewContainer = Новый COMОбъект("WebView2.DOM.Control");
WebViewContainer.Navigate("https://get.webgl.org");
Исключение
Сообщить("Для работы 3D-графики необходимо установить Microsoft Edge WebView2 Runtime!");
КонецПопытки;
КонецПроцедуры
Использование WebView2 гарантирует высокую скорость рендеринга трехмерных сцен прямо внутри окна тонкого клиента 1С, полностью решая проблему совместимости.
Для крупных корпоративных систем со сложной трехмерной графикой отличным решением является вынос визуализации во внешнее легковесное приложение, написанное на базе Electron или CefSharp (.NET).
Разберем по шагам логику взаимодействия такой связки:
ЗапуститьПриложение().Такой подход позволяет полностью разгрузить рабочий процесс 1Cv8c.exe от тяжелых вычислительных задач по рендерингу графики, повышая общую стабильность работы системы.
Мы выяснили, что ограничения работы с WebGL во встроенном браузере 1С обусловлены архитектурным переходом платформы на собственный движок WebKit без поддержки GPU-ускорения. Для решения этой проблемы разработчикам доступно несколько эффективных путей: перевод пользователей на веб-клиент 1С, оптимизация графики под Canvas 2D или использование современных внешних Chromium-компонентов (WebView2).