С выходом платформы 1С:Предприятие 8.3.15 многие разработчики столкнулись с неприятной ситуацией: видеоролики, которые годами исправно работали в ПолеHTMLДокумента, внезапно перестали запускаться. Вместо привычного плеера пользователь видит черный прямоугольник, либо плеер отображается, но кнопка воспроизведения не реагирует на нажатия. В этой статье мы подробно разберем, почему это произошло, и рассмотрим проверенные способы решения проблемы.
Давайте проанализируем ситуацию с технической точки зрения. До версии 8.3.14 включительно 1С использовала в качестве движка для отображения HTML-контента системный Internet Explorer (MSHTML). Это было удобно, так как использовались системные кодеки Windows, но ограничивало использование современных стандартов верстки.
Начиная с версии 8.3.15, компания «1С» перевела десктопные клиенты (тонкий и толстый) на встроенный движок на базе Chromium (WebKit/Blink). Это позволило внедрить поддержку HTML5 и CSS3, однако наложило ряд жестких ограничений на мультимедийный контент. Главная проблема заключается в лицензировании: стандартная сборка Chromium в 1С часто не включает проприетарные (платные) кодеки, такие как H.264 (MP4) и AAC. Именно поэтому файлы .mp4 перестают воспроизводиться — браузер внутри 1С просто «не знает», как их декодировать.
Как показала практика участников форума, один из самых стабильных способов — это перестать обращаться к файлам видео напрямую через протокол file:// и начать использовать HTTP. Рассмотрим, почему это работает. Современные браузерные движки блокируют многие функции при обращении к локальной файловой системе из соображений безопасности (политика CORS).
Проанализируем шаги по реализации этого метода:
Пример HTML-кода для вставки в поле:
<html>
<body>
<video width="640" height="360" controls>
<source src="http://myserver.local/video/instruction.mp4" type="video/mp4">
Ваш браузер не поддерживает видео.
</video>
</body>
</html>
Преимущество этого метода в том, что nginx можно настроить на корректную отдачу заголовков, что позволяет 1С нормально «стримить» видео. Кроме того, это позволяет использовать параметры перемотки, добавляя к адресу конструкции вида ?start=10&end=60.
Если развертывание веб-сервера кажется избыточным, разберем альтернативный вариант. Поскольку проблема кроется в отсутствии платных лицензий на кодеки в движке Chromium, мы можем использовать открытые форматы, которые поддерживаются «из коробки».
Попробуйте перекодировать ваше видео в формат WebM с использованием видеокодека VP8 или VP9 и аудиокодека Vorbis. Эти форматы являются свободными, и встроенный движок платформы 8.3.15+ обычно воспроизводит их без дополнительных манипуляций. В коде 1С это будет выглядеть следующим образом:
ТекстHTML =
"<video autoplay loop muted playsinline>
| <source src='e1c://file/C/Videos/manual.webm' type='video/webm'>
</video>";
Элементы.ПолеHTMLВидео.УстановитьТекст(ТекстHTML);
Обратите внимание на использование протокола e1c://. На новых платформах это предпочтительный способ обращения к внутренним ресурсам, однако для тяжелых видеофайлов он может работать медленнее, чем прямой HTTP-запрос к веб-серверу.
Многие пытаются встроить видео напрямую с YouTube, используя стандартный код iframe. Однако на платформе 8.3.18 и выше часто возникает ошибка «бесконечной загрузки». Выясним причину этого поведения:
Важный нюанс: Если вам критически важно показывать видео с YouTube, проверьте работу системы в Веб-клиенте. Поскольку веб-клиент запускается в вашем обычном браузере (Chrome, Firefox), там видео будет работать корректно. Если же нужно решение именно для Тонкого клиента, используйте метод с локальным хранением и конвертацией в WebM.
Разберем еще один баг, упомянутый пользователями: при указании локального пути к файлу видео может начать непроизвольно увеличиваться в масштабе. Это связано с конфликтом DPI системы и внутренними настройками рендеринга Chromium в 1С.
Чтобы избежать проблем с отрисовкой, придерживайтесь следующих правил при написании HTML:
video строго в пикселях (px), а не в процентах.playsinline, чтобы видео не пыталось открыться в полноэкранном системном плеере.source обязательно указывайте атрибут type (например, type="video/webm"), чтобы движок сразу понимал, какой декодер использовать.Пример корректной верстки для 1С:
<style>
video {
width: 800px;
height: 450px;
object-fit: contain;
background-color: black;
}
</style>
<video controls playsinline>
<source src="http://127.0.0.1/video.webm" type="video/webm">
</video>
Подводя итог, можно сказать, что переход на 8.3.15+ требует от разработчика 1С навыков веб-администрирования. Самым надежным и профессиональным решением на данный момент остается связка 1С + Nginx + формат MP4/WebM. Это гарантирует стабильную скорость загрузки и корректную работу плеера независимо от обновлений платформы.