При работе с современными веб-технологиями, такими как Autodesk Forge или сложные интерактивные BIM-модели, разработчики 1С часто сталкиваются с критическим ограничением: стандартный элемент управления ПолеHTMLДокумента не справляется с отрисовкой тяжелого 3D-контента. Это происходит потому, что встроенный компонент базируется на устаревших движках рендеринга (Internet Explorer или ранние версии WebKit), которые не поддерживают современные стандарты WebGL и аппаратное ускорение.
В этой статье мы разберем, как обойти данные ограничения, используя возможности запуска внешних приложений для отображения необходимого контента в полноценном современном браузере.
Стандартное ПолеHTMLДокумента предназначено для отображения простого контента. При попытке загрузить в него полноценное 3D-приложение возникают следующие проблемы:
Самым надежным и простым способом корректного отображения 3D-контента является вынос страницы за пределы интерфейса 1С. Мы можем сохранить HTML-код во временный файл и запустить его с помощью установленного в системе браузера (Chrome, Edge или Firefox). Рассмотрим этот процесс по шагам.
Прежде всего, нам необходимо сохранить HTML-код в локальный файл. Если ваша страница требует авторизации или передачи динамических параметров (например, токенов доступа), необходимо сформировать итоговую строку HTML-кода программно, подставив в неё актуальные данные.
Сохраните полученный текст в файл с расширением .html в папку временных файлов пользователя, используя объект ТекстовыйДокумент или метод Записать строки в файл.
Для открытия подготовленного файла в браузере мы воспользуемся методом НачатьЗапускПриложения. Этот метод является асинхронным и безопасным для работы в управляемых формах.
Разберем пример реализации процедуры открытия:
&НаКлиенте
Процедура ЗапуститьВнешнийБраузер(Команда)
// Формируем путь к файлу
ПутьКФайлу = ПолучитьИмяВременногоФайла("html");
// Здесь должен быть код записи вашего HTML в файл
// ТекстовыйДокумент.Записать(ПутьКФайлу);
// Запускаем браузер
НачатьЗапускПриложения(
Новый ОписаниеОповещения("ЗапуститьЗавершение", ЭтотОбъект),
ПутьКФайлу
);
КонецПроцедуры
&НаКлиенте
Процедура ЗапуститьЗавершение(КодВозврата, ДополнительныеПараметры) Экспорт
// Здесь можно обработать результат закрытия браузера, если это необходимо
КонецПроцедуры
Использование НачатьЗапускПриложения позволяет операционной системе автоматически выбрать браузер по умолчанию, установленный у пользователя. Поскольку внешние браузеры (например, Google Chrome) обладают современными движками, 3D-модели будут отрисовываться корректно, а инструменты вращения и масштабирования будут работать с высокой производительностью.
Если специфика вашей задачи требует, чтобы модель отображалась строго внутри окна 1С, рекомендуем рассмотреть следующие подходы для актуальных версий платформы:
WebView2), которая будет выступать в роли моста между 1С и современным графическим движком.Проанализировав ситуацию, мы видим, что использование внешнего браузера через временные файлы является наиболее стабильным и доступным методом решения проблемы на текущий момент. Это позволяет избежать проблем с несовместимостью движков и обеспечить пользователя полноценным функционалом для работы с 3D-объектами.