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