Как включить поддержку WebGL во встроенном браузере 1С: причины ограничений и способы решения

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При разработке интерфейсов в 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, как проанализировать эту проблему изнутри платформы и какие практические способы существуют для обхода данного ограничения.

Выясняем причину: почему WebGL перестал работать в тонком клиенте 1С

Для понимания сути проблемы совершим небольшой экскурс в историю развития платформы «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 привнесла серьезные технические ограничения:

Посмотрим на типичный 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) прямо внутри управляемой формы.

Разберем по шагам, как запустить отладку:

  1. Запустите информационную базу в режиме Тонкого клиента.
  2. Откройте управляемую форму, на которой расположено проблемное Поле HTML документа.
  3. Переведите фокус ввода на веб-страницу, кликнув левой кнопкой мыши в область HTML-поля.
  4. Нажмите комбинацию клавиш Ctrl + Alt + Shift + F12 (в зависимости от версии платформы или настроек операционной системы может потребоваться удерживать комбинацию Ctrl + Alt + Shift и дважды кликнуть мышью).

На экране появится полноценное окно отладчика WebKit. Перейдите на вкладку Console. Именно здесь вы увидите детальные логи ошибок, которые генерирует сайт при попытке инициализировать графический контекст webgl или webgl2. Если вы видите сообщения о нехватке памяти, блокировке контекста или отсутствии поддержки шейдеров — это явный признак того, что штатный WebKit не справляется с рендерингом.

Варианты решения проблемы

Поскольку включить аппаратное ускорение непосредственно внутри встроенного WebKit в тонком клиенте невозможно, рассмотрим наиболее эффективные альтернативные архитектурные решения.

Решение 1: Запуск информационной базы в веб-клиенте

Это самый простой и надежный способ задействовать WebGL без внесения сложных изменений в программный код конфигурации 1С.

Рассмотрим подробнее схему его работы. Если опубликовать информационную базу на веб-сервере (под управлением Microsoft IIS или Apache) и запустить 1С через современный внешний браузер (Google Chrome, Яндекс.Браузер, Microsoft Edge, Safari), то клиентским приложением становится сам браузер пользователя.

В этом режиме элемент формы Поле HTML документа обрабатывается полноценным современным движком внешнего браузера (например, Blink/Chromium). Внешний браузер имеет прямой доступ к драйверам видеокарты, поэтому технологии WebGL 1.0 и WebGL 2.0 будут работать в полную силу с использованием аппаратного ускорения вашего ПК.

Решение 2: Переход с WebGL на Canvas 2D API или SVG

Если вы являетесь разработчиком веб-страницы или интерактивного сервиса, который планируется встраивать в 1С, проанализируйте требования к графике. Действительно ли вам необходимо честное 3D?

Встроенный движок WebKit в 1С отлично поддерживает стандартный Canvas 2D API и векторную графику SVG. В отличие от WebGL, отрисовка двухмерного холста (Canvas 2D) не требует обязательного наличия видеокарты и успешно выполняется силами центрального процессора. Производительности Canvas вполне достаточно для отображения интерактивных схем складов, планов помещений, несложных графиков, чертежей и анимаций. Для практического изучения возможностей 2D-рендеринга подойдёт пример реализации 2D-графики без внешних компонент.

Решение 3: Интеграция компонента Microsoft Edge WebView2 через COM

Если отказаться от тонкого клиента 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С, полностью решая проблему совместимости.

Решение 4: Использование внешнего приложения-помощника (Electron / CefSharp)

Для крупных корпоративных систем со сложной трехмерной графикой отличным решением является вынос визуализации во внешнее легковесное приложение, написанное на базе Electron или CefSharp (.NET).

Разберем по шагам логику взаимодействия такой связки:

  1. При необходимости отобразить 3D-контент, 1С запускает фоновое внешнее приложение (например, скомпилированный клиент на Electron) с помощью команды ЗапуститьПриложение().
  2. В параметрах запуска передаются необходимые идентификаторы сессии и авторизационные токены.
  3. Внешнее приложение открывает полноценное окно Chromium с поддержкой WebGL и аппаратным ускорением.
  4. Обмен данными между 1С и внешним приложением настраивается по протоколу HTTP (через локальный REST API) или с использованием технологии WebSockets.

Такой подход позволяет полностью разгрузить рабочий процесс 1Cv8c.exe от тяжелых вычислительных задач по рендерингу графики, повышая общую стабильность работы системы.

Выводы

Мы выяснили, что ограничения работы с WebGL во встроенном браузере 1С обусловлены архитектурным переходом платформы на собственный движок WebKit без поддержки GPU-ускорения. Для решения этой проблемы разработчикам доступно несколько эффективных путей: перевод пользователей на веб-клиент 1С, оптимизация графики под Canvas 2D или использование современных внешних Chromium-компонентов (WebView2).

← На главную