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

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

Форматированный документ в 1С: как сделать и использовать

Как создать форматированный документ в 1С: редактор, программное формирование через объекты ФорматированныйДокумент, вывод HTML, вставка картинок и типичные ошибки.

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

Работать с ним можно двумя путями: визуально — через встроенный редактор форматированного документа, и программно — через объектную модель ФорматированныйДокумент на встроенном языке. Ниже разобраны оба подхода, а также частые ошибки и способы проверки результата.

Где применяется форматированный документ и чем он отличается от табличного

Табличный документ (ТабличныйДокумент) строится по ячейкам и предназначен для отчётов и печатных форм. Форматированный документ — это потоковый текст с элементами оформления, ближе к HTML-странице: он не привязан к сетке ячеек, а содержимое перетекает по ширине области отображения.

Типичные сценарии использования: поле «Описание» или «Комментарий» с оформлением в справочнике, приветственная страница на рабочем столе, инструкция внутри формы обработки, хранение текста писем, вывод произвольного HTML из базы данных. Если нужна печатная форма с точным позиционированием — выбирайте табличный документ; если нужен «живой» текст с картинками и ссылками — форматированный.

Что выбрать для вывода

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

Отчёты и печатные формы с точной сеткой ячеек, итогами и областями. Не подходит для перетекающего текста.

Форматированный документ

Оформленный текст, списки, картинки, ссылки внутри полей данных и на формах. Не предназначен для печати отчётов.

Поле HTML-документа

Вывод произвольного HTML/веб-контента на форме. Хранение данных не обеспечивает — только отображение.

Как добавить поле форматированного документа в объект конфигурации

Чтобы пользователи могли вводить форматированный текст в карточке объекта, нужно добавить реквизит соответствующего типа. Откройте конфигуратор, найдите нужный справочник или документ, добавьте реквизит и в свойстве «Тип» укажите ФорматированныйДокумент.

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

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

Как создать документ в визуальном редакторе

Визуальный редактор доступен в режиме предприятия в любом поле типа «Форматированный документ», а также через пункт главного меню «Файл — Новый — Форматированный документ» (в клиенте, где это предусмотрено). Редактор позволяет оформить текст без программирования.

Порядок действий в редакторе
  1. 1
    Откройте поле форматированного документа в карточке объекта или создайте новый документ через меню
  2. 2
    Введите текст и выделите фрагменты для оформления: шрифт, размер, цвет, начертание
  3. 3
    Добавьте маркированный или нумерованный список через кнопки панели инструментов
  4. 4
    Вставьте картинку через команду вставки изображения и при необходимости измените её размер
  5. 5
    Вставьте гиперссылку: выделите текст и укажите адрес ссылки
  6. 6
    Сохраните объект и проверьте отображение при повторном открытии

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

Как сформировать форматированный документ программно

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

ФормДок = Новый ФорматированныйДокумент;

Параграф = ФормДок.Элементы.Добавить();

Параграф.ТипПараграфа = ТипПараграфаФорматированногоДокумента.Обычный;

ТекстЗаголовка = Параграф.Элементы.Добавить();

ТекстЗаголовка.ТипЭлемента = ТипЭлементаФорматированногоДокумента.Текст;

ТекстЗаголовка.Текст = "Инструкция по приёмке товара";

НовыйШрифт = Новый Шрифт(, , Истина);

ТекстЗаголовка.Шрифт = НовыйШрифт;

ЭтотОбъект.Описание = ФормДок;

Структура объекта иерархична: документ содержит параграфы, параграфы — элементы текста, картинок и переводов строк. Типы элементов задаются через перечисления ТипЭлементаФорматированногоДокумента и ТипПараграфаФорматированногоДокумента. Для картинки элементу присваивается объект Картинка, загруженный из файла или из двоичных данных.

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

Как загрузить HTML и вывести документ на форму

Метод УстановитьHTML(ТекстHTML, Картинки) позволяет заполнить форматированный документ из HTML-разметки. Второй параметр — структура, где ключи совпадают с именами картинок в тегах <img>, а значения — объекты типа Картинка. Обратно получить HTML можно методом ПолучитьHTML.

ТекстHTML = "<h2>Условия доставки</h2><p>Срок — 3 рабочих дня.</p>";

ФормДок = Новый ФорматированныйДокумент;

Картинки = Новый Структура;

ФормДок.УстановитьHTML(ТекстHTML, Картинки);

ОписаниеНаФорме = ФормДок;

Для вывода на форму добавьте реквизит формы типа ФорматированныйДокумент и перетащите его в дерево элементов формы — платформа создаст поле отображения. Если нужно показать произвольный HTML без привязки к форматированному документу (например, страницу из интернета), используйте элемент формы «Поле HTML-документа» и присвойте ему строку с разметкой.

Как проверить результат и какие ошибки встречаются чаще всего

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

Контрольные точки

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

Отображение на форме
Норма

Текст, списки и картинки видны сразу при открытии

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

Пустое поле или серый прямоугольник вместо картинки

Сохранение
Норма

После записи и повторного открытия оформление не меняется

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

Теряются цвета, списки или изображения

Доступность картинок
Норма

Изображения видны всем пользователям базы

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

Картинка есть только у пользователя, который её вставлял

Типичные ошибки
01
Вставка картинок по внешнему пути вместо встраивания — у других пользователей изображения не отображаются
02
Попытка искать по содержимому форматированного документа запросом — тип не поддерживает сравнение, запрос падает с ошибкой
03
Хранение больших изображений без сжатия — база раздувается, формы открываются медленно
04
Использование форматированного документа для печатных форм — результат непредсказуем, для печати нужен табличный документ
05
Загрузка HTML с тегами, которые не поддерживаются — часть оформления молча теряется при УстановитьHTML

Ещё одна граница самостоятельной работы: конвертация между HTML и форматированным документом неполная. Сложная вёрстка (плавающие блоки, CSS-классы, таблицы со слиянием ячеек) при загрузке упрощается. Если критично сохранить точный вид HTML — выводите его в поле HTML-документа, а не конвертируйте.

Итог

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

Форматированный документ — инструмент для оформленного текста и картинок внутри данных и на формах. Создаётся визуально или программно (элементы либо УстановитьHTML), хранится вместе с объектом, не подходит для печатных форм и поиска запросом. Картинки встраивайте, а не подключайте по пути.

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

Можно ли распечатать форматированный документ?

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

Как извлечь чистый текст из форматированного документа?

Используйте метод ПолучитьТекст() — он вернёт содержимое без оформления. Это удобно для заполнения отдельного строкового реквизита, по которому затем работает поиск.

Почему после УстановитьHTML пропали стили?

Форматированный документ поддерживает ограниченный набор тегов и атрибутов. CSS-классы, внешние стили и сложная вёрстка при конвертации отбрасываются. Используйте простые inline-атрибуты: жирный, курсив, цвет, выравнивание, списки.

Как вставить картинку программно?

Создайте объект Картинка из файла или двоичных данных, затем добавьте в параграф элемент с типом Картинка и присвойте ему этот объект. При загрузке через УстановитьHTML передайте картинки вторым параметром — структурой, где ключ совпадает с именем в теге img.

Можно ли хранить форматированный документ в реквизите с неограниченной длиной?

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

Чем форматированный документ отличается от поля HTML-документа?

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