Как избавиться от рутинного создания однотипных писем.
В качестве шаблона для тела письма использую макет с HTML-разметкой, где можно с помощью параметров задать значения полям.
Заполняю этот шаблон — делаю из него TXT и присваиваю телу письма в Outlook (свойство — HTMLBody)
// Конвертация ТабДока в TXT без использования временного файла (ТабДок_HTML - тело нашего письма в Outlook с табличкой по товарам)
Поток = Новый ПотокВПамяти();
ТабДок_HTML.Записать(Поток, ТипФайлаТабличногоДокумента.TXT);
ДвоичныеДанныеФайла = Поток.ЗакрытьИПолучитьДвоичныеДанные();
HTMLТекст = ПолучитьСтрокуИзДвоичныхДанных(ДвоичныеДанныеФайла, КодировкаТекста.UTF8);
Минимальная версия платформы — 8.3.12, связана с использованием объекта "ПакетОтображаемыхДокументов", через него создается вложение Excel-файл с несколькими листами (вы можете просто закомментировать код)
// Сформируем вложения с несколькими ТабДоками в одной книге (добавляя для каждого ТабДока свой лист)
Книга = Новый ПакетОтображаемыхДокументов;
// В цикле создадим печатные формы и сформируем листы
а = 0;
Для а = 1 по 2 Цикл
АдресВХранилище = СформироватьПечатнуюФормуНаСервере();
Лист = Книга.Состав.Добавить();
Лист.Наименование = "ТабДок № " + Строка(а); //Наименование листа
Лист.Данные = АдресВХранилище;
КонецЦикла;
// Создание файла Excel
стрПутьККниге = КаталогВременныхФайлов() + "Книга.XLSX";
Попытка
Книга.Записать(стрПутьККниге, ТипФайлаПакетаОтображаемыхДокументов.XLSX); //Сохранение в формате Excel 2007
Сообщить("Сформированный файл экселя (Книга.XLSX) лежит в папке TEMP: " + КаталогВременныхФайлов());
Исключение
Сообщить("Вложение для письма не создано! Описание ошибки: " + ОписаниеОшибки());
КонецПопытки;
И вишенка — это формирование стандартной подписи установленной у пользователя в Outlook. В русском гугле я не нашёл рабочего способа, предлагали просто дикие вещи.
Подпись формируется не при создании письма, а немного…позже, поэтому чтобы она всё же подтянулась — необходимо передать управление Outlook’у до того как мы притронемся к содержимому "HTMLbody", после этого подпись уж точно будет сформирована — её можно прикрепить к вашему произвольному телу письма. Если тело письма по вашему шаблону должно быть пустым (просто с подписью) — то такая хитрость не нужна (просто не трогаете HTMLbody).
Письмо.Display(); //Важно(!) Необходимо передать управление Аутлуку до того как мы вставим тело письма, чтобы аутлук сформировал подпись
Письмо.HTMLBody = HTMLТекст + Письмо.HTMLBody; //В Письмо.HTMLBody хранится сгенерированная подпись
Как убрать предупреждение:
При формировании писем из 1С Outlook будет постоянно вас оберегать показывая данное сообщение и для того чтобы его отключить необходимо запустить Outlook от имени администратора и далее:
Файл -> Настройки -> Центр управления безопасностью -> Параметры центра управления безопасностью -> Программный доступ -> Никогда не предупреждать о подозрительной активности.
Тестирование проводилось на платформе 8.3.13.1513, запуск через файл-открыть.
Описание работы обработки: На форме обработки одна кнопка — "сформировать письмо" — выполняет демонстрационную роль, будет создано письмо с одним вложением — Книга.XLSX (файл будет сохранен в папку TEMP — местоположение файла будет выведено через "сообщить()"), в теле письма будет таблица построенная с помощью HTML-разметки и если у вас установлена подпись — то она будет прикреплена. Обработка не отправляет письма, она только их формирует, письма отправляются пользователем после того как он убедится что всё в порядке.
Применение: Данные обработка демонстрирует как можно несложно автоматизировать создание рутинных однотипных писем. Возможность создания какого-то общего шаблона с каким-либо автозаполнением — получателей, темы письма, тела письма, прикрепление вложений в зависимости от задачи/входных данных.
В данном методе отправки писем через OutLook есть подводный камень. Если платформа 1С:Предприятие 64-разрядная, а OutLook 32-разрядный, это не работает. Мы не смогли разобраться, видимо где-то есть особенность в регистрации COM объектов 32-разрядных для 64-разрядной платформы ОС и как следствие их видимости для 1С.
(1) Не знал, спасибо за комментарий.
(1)есть такая проблема, решается на уровне регистрации в Службе компонентов отдельно для 32 и 64 бит
(3)Красиво написано.
(4)ну такой уж этот COM вредный, что тут поделаешь)
где то тут на инфостате был уже разбор по поводу 32 и 64 бита.