Как эффективно редактировать исходный HTML-текст в 1С для создания писем?

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

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

Использование объекта «ФорматируемыйДокумент»

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

Рассмотрим, как программно получить HTML из этого объекта:


// Создаем объект и загружаем в него данные
МойДокумент = Новый ФорматируемыйДокумент;
// ... (здесь может быть интерактивное заполнение пользователем)

// Получаем HTML-код и структуру вложений
СтруктураКартинок = Новый Структура;
ТекстHTML = "";
МойДокумент.ПолучитьHTML(ТекстHTML, СтруктураКартинок);

Важно помнить: при вызове метода ПолучитьHTML() платформа 1С принудительно добавляет специфические стили, такие как -1c-soft-return, и преобразует вашу верстку в каскад тегов <span>. Если вам нужна чистая «дивовая» (div) верстка или использование современных CSS-фреймворков, ФорматируемыйДокумент может «сломать» структуру письма.

Программная правка через СтрЗаменить() и шаблонизацию

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

Разберем этот процесс подробнее:

  1. Создаем эталонный HTML-файл во внешнем профессиональном редакторе (например, VS Code или Sublime Text).
  2. В местах, где должны быть динамические данные, расставляем маркеры: [ИмяКлиента], [НомерЗаказа], [Дата].
  3. Загружаем этот текст в 1С как макет или текстовый файл.
  4. Выполняем замену маркеров на реальные данные из базы.

Посмотрим на пример кода:


// Читаем шаблон из макета
ШаблонТекста = ПолучитьМакет("МойШаблонПисьма").ПолучитьТекст();

// Заполняем данные
ТекстПисьма = СтрЗаменить(ШаблонТекста, "[ИмяКлиента]", Объект.Контрагент.Наименование);
ТекстПисьма = СтрЗаменить(ТекстПисьма, "[СуммаДолга]", Формат(Объект.Сумма, "ЧДЦ=2"));

// Теперь переменную ТекстПисьма можно отправлять через Почта.Послать()

Этот метод является самым надежным, если вам требуется стопроцентное соответствие макету дизайнера.

Интеграция внешних JS-редакторов (TinyMCE, CKEditor)

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

Проанализируем алгоритм реализации:

  1. Скачиваем библиотеку редактора (например, TinyMCE или Quill).
  2. Помещаем файлы библиотеки в общий макет или в каталог на диске.
  3. Загружаем в Поле HTML документа обертку, которая инициализирует редактор.
  4. Организуем обмен данными между JS и 1С через событие ПриНажатии или метод выполнитьJS.

Это позволяет получить профессиональный инструмент правки кода, не покидая интерфейс программы. Современные JS-движки генерируют чистый HTML5, который корректно отображается в большинстве почтовых клиентов.

Очистка HTML от «мусора» 1С

Если ситуация заставляет вас использовать ФорматируемыйДокумент, но результат его работы (код) вас не устраивает, можно применить механизмы очистки. Рассмотрим, как это сделать. Часто после 1С остаются пустые <span> или некорректные пути к картинкам вида e1cib/....

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

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

Нужно учитывать, что Поле HTML документа в толстом и тонком клиенте под Windows традиционно использует движок Internet Explorer (MSHTML). Это накладывает серьезные ограничения на современные стили CSS. Если вы верстаете письмо с использованием Flexbox или Grid, оно может выглядеть в предпросмотре 1С совсем не так, как в браузере получателя.

Рекомендуем придерживаться старой доброй табличной верстки и inline-стилей. Это обеспечит максимальную совместимость и в самой 1С, и во всех почтовых сервисах (Outlook, Gmail, Mail.ru).

Резюме

Мы проанализировали основные подходы к правке HTML в 1С. Если вам нужна быстрая правка простого текста — используйте ФорматируемыйДокумент. Если же ваша цель — профессиональная рассылка с кастомным дизайном, лучшим решением будет внешняя верстка с использованием системы маркеров и функции СтрЗаменить(). Для продвинутых интерфейсов всегда остается возможность встроить полноценный JS-редактор через поле HTML-документа.

← На главную