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