К статье
Практический материал

Разработка и Конфигурация · 9 мин

Как создать макет ActiveDocument в 1С

Пошаговая инструкция по созданию макета типа ActiveDocument в 1С: добавление HTML-шаблона, загрузка в поле документа, подстановка данных и типичные ошибки.

Макет типа ActiveDocument в 1С — это способ хранить и выводить форматированное содержимое (обычно HTML-документ) через объект «ПолеHTMLДокумента» или поле текстового документа. Такой макет применяют, когда нужно показать пользователю красиво оформленную справку, веб-страницу, интерактивный отчёт или шаблон с подставляемыми данными, не прибегая к табличному документу.

Технически макет ActiveDocument хранит двоичные данные файла — чаще всего HTML-страницы, которую затем можно загрузить программно и отобразить в форме. Это удобно для встроенных подсказок, визуальных панелей, интеграции с веб-сервисами через JavaScript и вывода динамического контента.

Ниже разобран полный цикл: от создания HTML-файла до вывода его в форме и подстановки данных из информационной базы, а также ограничения и типичные ошибки, с которыми сталкиваются разработчики.

Что такое макет ActiveDocument и когда он нужен

ActiveDocument — один из типов макетов в конфигураторе 1С, предназначенный для хранения произвольного файла (как правило, HTML-страницы) внутри конфигурации. В отличие от табличного макета, он не привязан к ячейкам и областям: это цельный документ, который обрабатывается внешним средством просмотра — встроенным браузерным движком платформы.

Типичные сценарии применения: встроенная справка по разделу программы, красиво оформленное приветственное окно, дашборд с диаграммами на JavaScript, страница с интерактивной картой, шаблон письма со сложной вёрсткой. Если задача сводится к печатной форме с точным позиционированием — правильнее использовать табличный макет или макет офисного документа.

Подготовка HTML-файла для макета

Перед добавлением макета подготовьте сам HTML-документ. Его можно написать в любом текстовом редакторе или среде разработки. Важно учесть несколько практических моментов: все стили лучше размещать внутри файла (в теге <style>), а не подключать внешними ссылками, потому что при выводе в поле HTML-документа внешние ресурсы могут не загрузиться или потребуют доступа в интернет.

Кодировку файла сохраняйте в UTF-8 — это исключает проблемы с отображением кириллицы. Если в документе планируются картинки, их либо встраивают в формате base64 прямо в разметку, либо хранят отдельными макетами типа «Двоичные данные» и подставляют программно.

Пример минимального содержимого файла:

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8">

<style>

body { font-family: sans-serif; padding: 16px; }

.header { color: #2a5c8a; }

</style>

</head>

<body>

<h2>Справка по разделу</h2>

<p>Текст подсказки для пользователя.</p>

</body>

</html>

Создание макета в конфигураторе

Откройте конфигуратор и найдите объект, которому будет принадлежать макет: это может быть общий макет (ветка «Общие → Общие макеты») или макет конкретного объекта — справочника, документа, обработки. Общий макет удобнее, если HTML-страница используется из разных мест конфигурации.

Порядок создания макета
  1. 1
    Откройте конфигуратор и разверните ветку «Общие → Общие макеты» (или макеты нужного объекта).
  2. 2
    Нажмите «Добавить» и введите имя макета, например СправкаHTML.
  3. 3
    В поле «Тип макета» выберите «ActiveDocument».
  4. 4
    В открывшемся окне загрузите подготовленный HTML-файл через кнопку загрузки или пункт меню.
  5. 5
    Сохраните макет и обновите конфигурацию базы данных (F7).

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

Программное получение и вывод в форме

Чтобы показать содержимое макета пользователю, на форму добавляют элемент «Поле HTML-документа» (реквизит формы типа «Строка» либо непосредственно элемент с установленным свойством). Затем в коде получают макет и присваивают его текст этому полю.

Типовой фрагмент кода для управляемой формы:

// В модуле формы

&НаСервере

Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

Макет = ПолучитьОбщийМакет("СправкаHTML");

// Макет ActiveDocument возвращается как текст/двоичные данные

ТекстHTML = Макет.ПолучитьТекст();

ПолеHTML = ТекстHTML;

КонецПроцедуры

Для макета, принадлежащего конкретному объекту, вызов отличается: используется менеджер объекта, например Обработки.МояОбработка.ПолучитьМакет("СправкаHTML"). Если макет возвращается в виде двоичных данных, потребуется преобразование в строку с указанием кодировки UTF-8.

Подстановка данных в HTML-шаблон

Частая задача — показать в HTML-странице актуальные данные из базы: имя пользователя, остатки, список документов. Простейший рабочий подход — оставить в шаблоне текстовые маркеры и заменять их функцией СтрЗаменить() перед выводом.

ТекстHTML = Макет.ПолучитьТекст();

ТекстHTML = СтрЗаменить(ТекстHTML, "[ИмяПользователя]", ИмяПользователя());

ТекстHTML = СтрЗаменить(ТекстHTML, "[Дата]", Формат(ТекущаяДатаСеанса(), "ДЛФ=D"));

ПолеHTML = ТекстHTML;

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

Ограничения и особенности работы

Поле HTML-документа в 1С использует встроенный браузерный движок, возможности которого зависят от версии платформы и режима совместимости. Современные возможности CSS и JavaScript могут поддерживаться частично, поэтому сложную вёрстку и новые API стоит проверять на целевой версии платформы заранее.

Дополнительные ограничения: внешние ресурсы (шрифты, картинки по URL, CDN-скрипты) требуют сетевого доступа и могут блокироваться политиками безопасности; в веб-клиенте поведение поля отличается от тонкого клиента; большие HTML-файлы увеличивают размер конфигурации и время её обновления.

Чем заменить ActiveDocument

Табличный макет

Подходит для печатных форм и отчётов. Точное позиционирование, но нет интерактивности и сложной вёрстки.

Макет «Двоичные данные»

Универсальное хранение любого файла, включая HTML. Получение содержимого требует ручной работы с данными.

Внешний HTML-файл

Гибко для частых правок без обновления конфигурации, но файл нужно доставлять на каждое рабочее место или сервер.

Проверка результата и типичные ошибки

После внедрения проверьте отображение в том клиенте, в котором будут работать пользователи: тонком, толстом или веб-клиенте. Убедитесь, что кириллица отображается корректно, стили применяются, а подставляемые данные появляются в нужных местах.

Типичные ошибки
01
Забыто обновление конфигурации БД — ПолучитьМакет() возвращает ошибку или старую версию макета.
02
Файл сохранён не в UTF-8 — кириллица превращается в нечитаемые символы.
03
Внешние CSS и картинки по ссылкам — в закрытой сети страница отображается без оформления.
04
Обращение к общему макету через менеджер объекта — макет не находится; для общих макетов нужен ПолучитьОбщийМакет().
05
Подстановка сырых пользовательских данных в HTML — сломанная вёрстка или выполнение чужого скрипта.
Контрольные точки

Как проверить результат

Открытие формы с полем HTML
Норма

Страница отображается со стилями и корректным текстом

Тревожный признак

Пустое поле, ошибка получения макета или «кракозябры» вместо текста

Подстановка данных
Норма

Маркеры заменены реальными значениями из базы

Тревожный признак

В тексте видны необработанные маркеры вида [ИмяПользователя]

Работа без интернета
Норма

Оформление сохраняется при отключённой сети

Тревожный признак

Стили и картинки пропадают — значит, они подключены внешними ссылками

Итог

Что важно запомнить

Макет ActiveDocument создаётся в конфигураторе загрузкой готового HTML-файла в кодировке UTF-8, выводится через «Поле HTML-документа» вызовом ПолучитьОбщийМакет() и ПолучитьТекст(), а данные подставляются заменой маркеров с обязательным экранированием. После изменений макета всегда обновляйте конфигурацию базы данных.

Частые вопросы

Можно ли редактировать HTML прямо в конфигураторе?

Да, макет ActiveDocument открывается на просмотр и редактирование в конфигураторе, но встроенный редактор минимален. Для серьёзной вёрстки удобнее править файл во внешнем редакторе и перезагружать его в макет.

Почему ПолучитьМакет() выдаёт ошибку «Макет не найден»?

Чаще всего причины три: конфигурация базы данных не обновлена после добавления макета, неверно указано имя макета в строке вызова, либо общий макет запрашивается через менеджер объекта вместо ПолучитьОбщийМакет().

Работает ли JavaScript в поле HTML-документа?

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

Как вставить картинку в макет ActiveDocument?

Два рабочих способа: встроить изображение прямо в HTML в формате base64 или хранить картинку отдельным макетом типа «Двоичные данные» и программно формировать ссылку на неё при выводе. Внешние ссылки на изображения ненадёжны в закрытых сетях.

Чем ActiveDocument отличается от макета «Текстовый документ»?

Макет «Текстовый документ» хранит простой текст и удобен для шаблонов сообщений и запросов. ActiveDocument хранит файл целиком и предназначен для вывода форматированного содержимого — HTML-страниц с разметкой, стилями и скриптами.

Можно ли использовать макет ActiveDocument в веб-клиенте?

Да, поле HTML-документа поддерживается в веб-клиенте, но поведение может отличаться от тонкого клиента: часть событий и особенности рендеринга обрабатываются иначе. Финальную проверку всегда делайте в том клиенте, который используют конечные пользователи.