В процессе разработки на платформе 1С:Предприятие 8 часто возникает необходимость расширить стандартный интерфейс формами, созданными на HTML и CSS. Однако многие начинающие разработчики сталкиваются с тем, что верстка, идеально работающая в современных браузерах, в поле 1С отображается некорректно или не работает вовсе. Давайте разберемся, почему так происходит и как эффективно настроить взаимодействие между платформой и веб-контентом.
Исторически сложилось так, что «Поле HTML документа» в 1С не является полноценным браузером. До версии платформы 8.3.14 в качестве движка рендеринга использовался компонент Internet Explorer (IE), установленный в операционной системе Windows. Часто 1С принудительно ограничивала версию движка (вплоть до режима IE7), что приводило к невозможности использования современных стандартов HTML5 и CSS3.
Начиная с версии 8.3.14, компания 1С перешла на использование движка WebKit. Это значительно улучшило совместимость с современными веб-стандартами. Важно помнить:
WebView (Android WebView или WKWebView для iOS), возможности которого зависят от версии операционной системы устройства.Если вам нужно отобразить изображение, хранящееся в конфигурации (например, в БиблиотекаКартинок), простого указания пути будет недостаточно. Оптимальный способ — передача данных в формате Base64.
Разберем этот процесс по шагам:
Base64.Пример программного кода для инициализации:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
ДД = БиблиотекаКартинок.ВашаКартинка.ПолучитьДвоичныеДанные();
Строка64 = Base64Строка(ДД);
// Получаем макет и заменяем плейсхолдер на строку Base64
HTML = ПолучитьМакет("МакетHTML").ПолучитьТекст();
HTML = СтрЗаменить(HTML, "&ДанныеКартинки", Строка64);
КонецПроцедуры
В самом HTML-макете используйте следующий тег:
<img src="data:image/png;base64,&ДанныеКартинки">
Одной из частых задач является получение значений из полей ввода, расположенных внутри HTML-поля. Поскольку 1С предоставляет прямой доступ к ДокументDOM, мы можем обращаться к элементам страницы по их идентификаторам.
Чтобы считать данные из HTML-поля, выполните следующие действия:
id).ПриНажатии в 1С для обработки действий пользователя.Документ.getElementById.Пример реализации чтения поля ввода:
&НаКлиенте
Процедура HTMLПриНажатии(Элемент, ДанныеСобытия, СтандартнаяОбработка)
// Получаем доступ к значению элемента по его ID
ЗначениеКомментария = Элементы.HTML.Документ.getElementById("comment").value;
// Работаем с полученными данными в 1С
Сообщить("Введено значение: " + ЗначениеКомментария);
// Предотвращаем стандартное поведение браузера, если необходимо
СтандартнаяОбработка = Ложь;
КонецПроцедуры
При создании сложных веб-форм внутри 1С помните о следующих рекомендациях:
ПолучитьНавигационнуюСсылку для реализации переходов между объектами системы 1С непосредственно из HTML-контента.Используя предложенные методы взаимодействия через DOM и кодирование данных, вы сможете создавать гибкие и функциональные интерфейсы, которые расширят стандартные возможности платформы 1С:Предприятие.