Какой браузер эмулирует «Поле HTML документа» в 1С и как с ним работать?

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

В процессе разработки на платформе 1С:Предприятие 8 часто возникает необходимость расширить стандартный интерфейс формами, созданными на HTML и CSS. Однако многие начинающие разработчики сталкиваются с тем, что верстка, идеально работающая в современных браузерах, в поле 1С отображается некорректно или не работает вовсе. Давайте разберемся, почему так происходит и как эффективно настроить взаимодействие между платформой и веб-контентом.

Понимание движка рендеринга

Исторически сложилось так, что «Поле HTML документа» в 1С не является полноценным браузером. До версии платформы 8.3.14 в качестве движка рендеринга использовался компонент Internet Explorer (IE), установленный в операционной системе Windows. Часто 1С принудительно ограничивала версию движка (вплоть до режима IE7), что приводило к невозможности использования современных стандартов HTML5 и CSS3.

Начиная с версии 8.3.14, компания 1С перешла на использование движка WebKit. Это значительно улучшило совместимость с современными веб-стандартами. Важно помнить:

  1. Режим совместимости конфигурации не влияет на движок рендеринга HTML-поля.
  2. Если у вас установлена старая платформа, рекомендуется обновиться до актуального релиза, чтобы получить доступ к функциям WebKit.
  3. В мобильных приложениях 1С использует системный компонент WebView (Android WebView или WKWebView для iOS), возможности которого зависят от версии операционной системы устройства.

Передача изображений из 1С в HTML

Если вам нужно отобразить изображение, хранящееся в конфигурации (например, в БиблиотекаКартинок), простого указания пути будет недостаточно. Оптимальный способ — передача данных в формате Base64.

Разберем этот процесс по шагам:

  1. Получите двоичные данные из картинки в конфигурации.
  2. Преобразуйте их в строку Base64.
  3. Вставьте полученную строку в HTML-макет.

Пример программного кода для инициализации:


&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    ДД = БиблиотекаКартинок.ВашаКартинка.ПолучитьДвоичныеДанные();
    Строка64 = Base64Строка(ДД);
    
    // Получаем макет и заменяем плейсхолдер на строку Base64
    HTML = ПолучитьМакет("МакетHTML").ПолучитьТекст();
    HTML = СтрЗаменить(HTML, "&ДанныеКартинки", Строка64);
КонецПроцедуры

В самом HTML-макете используйте следующий тег:

<img src="data:image/png;base64,&ДанныеКартинки">

Взаимодействие с элементами формы и получение данных

Одной из частых задач является получение значений из полей ввода, расположенных внутри HTML-поля. Поскольку 1С предоставляет прямой доступ к ДокументDOM, мы можем обращаться к элементам страницы по их идентификаторам.

Чтобы считать данные из HTML-поля, выполните следующие действия:

  1. Присвойте полям ввода в HTML уникальные идентификаторы (атрибут id).
  2. Используйте событие ПриНажатии в 1С для обработки действий пользователя.
  3. Обращайтесь к значению элемента через свойство Документ.getElementById.

Пример реализации чтения поля ввода:


&НаКлиенте
Процедура HTMLПриНажатии(Элемент, ДанныеСобытия, СтандартнаяОбработка)
    // Получаем доступ к значению элемента по его ID
    ЗначениеКомментария = Элементы.HTML.Документ.getElementById("comment").value;
    
    // Работаем с полученными данными в 1С
    Сообщить("Введено значение: " + ЗначениеКомментария);
    
    // Предотвращаем стандартное поведение браузера, если необходимо
    СтандартнаяОбработка = Ложь;
КонецПроцедуры

Советы по разработке сложных интерфейсов

При создании сложных веб-форм внутри 1С помните о следующих рекомендациях:

Используя предложенные методы взаимодействия через DOM и кодирование данных, вы сможете создавать гибкие и функциональные интерфейсы, которые расширят стандартные возможности платформы 1С:Предприятие.

← На главную