При разработке функционала отправки электронных писем в 1С:Предприятие часто возникает задача вставки табличных данных непосредственно в тело сообщения. Однако при попытке использования стандартного элемента Форматированный документ разработчики сталкиваются с тем, что таблицы не отображаются. Давайте разберем, почему это происходит и какие существуют способы обхода этого ограничения.
Важно понимать, что Форматированный документ — это специализированный элемент управления, предназначенный для базового оформления текста (шрифты, цвета, списки). Он не является полноценным HTML-браузером. Его движок сильно ограничен и попросту игнорирует сложные теги вроде table, tr или td. Даже если вы попытаетесь программно передать HTML-разметку с таблицей в этот элемент, результат вас разочарует: структура таблицы не будет построена.
Если ваши данные уже представлены в виде Табличный документ (например, это печатная форма или отчет), самым надежным способом будет экспорт этого документа в формат HTML. Этот метод позволяет сохранить визуальное оформление таблицы и передать его в тело письма.
Разберем алгоритм действий по шагам:
Табличный документ с необходимыми данными.Посмотрим на пример кода для реализации этой задачи:
ИмяВременногоФайла = ПолучитьИмяВременногоФайла("html");
ТабДок.Записать(ИмяВременногоФайла, ТипФайлаТабличногоДокумента.HTML);
ЧтениеТекста = Новый ЧтениеТекста(ИмяВременногоФайла);
ТелоHTML = ЧтениеТекста.Прочитать();
ЧтениеТекста.Закрыть();
УдалитьФайлы(ИмяВременногоФайла);
Если вам необходимо, чтобы пользователь мог видеть таблицу непосредственно при редактировании письма в 1С, стоит отойти от идеи использования только Форматированного документа. Рекомендуется разместить на форме элемент Поле HTML-документа.
Этот элемент базируется на движке браузера и отлично справляется с отображением таблиц. Чтобы объединить это с логикой письма, используйте следующую схему:
ТекстHTML).Поле HTML-документа.Часто в типовых конфигурациях Форматированный документ является лишь инструментом для ввода, а при записи объекта данные преобразуются в HTML. Вы можете вмешаться в этот процесс в процедуре ПередЗаписьюНаСервере.
Рассмотрим, как это происходит программно:
// Подготовим документ HTML из содержимого форматированного документа
СтруктураВложений = Новый Структура;
ТекстПисьмаФорматированныйДокумент.ПолучитьHTML(ТекущийОбъект.ТекстHTML, СтруктураВложений);
// Здесь вы можете дополнительно модифицировать строку с HTML,
// добавляя необходимые теги таблицы перед сохранением в базу.
Важное примечание: При отправке письма получателю, если его почтовый клиент является стандартным (Outlook, Gmail и т.д.), письмо будет корректно отображать таблицу, даже если в самой 1С она отображалась в упрощенном виде. Главное — правильно сформировать строку HTML-разметки в реквизите объекта.
Форматированный документ отображать таблицы. Используйте его только для простого текста, а для сложных структур формируйте HTML-код программно.ТелоПисьма используйте конкатенацию строк или ПостроительСтрок для вставки данных в HTML-шаблон.Следуя этим рекомендациям, вы сможете эффективно решить задачу отображения таблиц, сохранив при этом стабильность и производительность вашей конфигурации 1С.