Как добавить стандартную кнопку Отправить по электронной почте на отчет или табличный документ

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

При разработке пользовательских отчетов или выводе сложных табличных документов в 1С часто возникает задача предоставить пользователю возможность быстрой отправки сформированных данных по электронной почте. Вместо того чтобы изобретать велосипед и писать собственный почтовый клиент, мы можем воспользоваться мощными инструментами Библиотеки Стандартных Подсистем (БСП), которые уже интегрированы в современные конфигурации, такие как 1С:Управление нашей фирмой (УНФ), 1С:ERP или 1С:Бухгалтерия.

В этой статье мы подробно разберем, как интегрировать функционал отправки почты через стандартную форму печати, как программно управлять параметрами страницы и какие еще возможности предоставляет БСП для работы с почтовыми сообщениями.

Использование стандартной формы печати БСП

Самый простой и эффективный способ добавить кнопку «Отправить по почте» — это не добавлять её на собственную форму, а использовать общую форму ОбщиеФормы.ПечатьДокументов. Эта форма уже содержит весь необходимый функционал: предварительный просмотр, печать на принтер, сохранение в различных форматах (PDF, Excel, Word) и, самое главное, встроенную кнопку с иконкой конверта для отправки документа по e-mail.

Разберем по шагам, как вывести ваш табличный документ в эту форму. Для этого нам потребуется подготовить структуру параметров и вызвать форму программно. Рассмотрим пример кода, который можно разместить в обработчике команды вашей формы:


// 1. Подготавливаем табличный документ
ТабДок = СформироватьВашТабличныйДокумент();

// 2. Создаем коллекцию печатных форм для передачи в форму печати
КоллекцияПечатныхФорм = Новый СписокЗначений;

// Параметры: Табличный документ, Имя макета (внутреннее), Синоним (заголовок закладки), Полный путь к макету (необязательно)
КоллекцияПечатныхФорм.Добавить(ТабДок, "НазваниеОтчета", "Ваш отчет", "");

// 3. Формируем параметры открытия формы
ПараметрыОткрытия = Новый Структура;
ПараметрыОткрытия.Вставить("ИмяФормы", "ОбщаяФорма.ПечатьДокументов");
ПараметрыОткрытия.Вставить("КоллекцияПечатныхФорм", КоллекцияПечатныхФорм);

// 4. Открываем форму печати БСП
ОткрытьФорму("ОбщаяФорма.ПечатьДокументов", ПараметрыОткрытия);

Проанализируем этот подход. Используя ОбщаяФорма.ПечатьДокументов, мы автоматически получаем интерфейс выбора форматов вложения. Когда пользователь нажмет на кнопку отправки, система предложит выбрать формат (например, PDF или XLSX) и откроет стандартное окно подготовки письма, где документ уже будет прикреплен в качестве вложения. Для реализации такого сценария можно использовать обработку для печати табличного документа через типовую форму БСП.

Настройка ориентации страницы и масштаба

Часто при выводе отчета в форму печати возникает проблема: документ слишком широкий и не помещается на стандартный лист А4 в книжной ориентации. Рассмотрим, как программно задать альбомную ориентацию и настроить автоматическое масштабирование, чтобы документ выглядел корректно при отправке получателю.

Для этого перед выводом документа в форму необходимо установить соответствующие свойства объекта ТабличныйДокумент. Выясним, какие именно свойства нам помогут:


// Установка альбомной (ландшафтной) ориентации
ТабДок.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;

// Включение автомасшабирования, чтобы документ вписался в ширину страницы
ТабДок.АвтоМасштаб = Истина;

// Опционально: вывод на одну страницу по ширине
ТабДок.КоличествоСтраницПоШирине = 1;

Важно помнить, что эти настройки сохраняются при конвертации документа в формат PDF или Excel через механизмы БСП. Если вы не установите АвтоМасштаб, то при отправке по почте в формате PDF часть колонок может быть «обрезана», так как конвертер будет пытаться сохранить физические размеры ячеек.

Альтернативный метод: Прямой вызов окна нового письма

Бывают ситуации, когда нам не нужно показывать пользователю форму предварительного просмотра печати, а нужно сразу открыть окно создания письма с уже прикрепленным файлом. В БСП для этого используется программный интерфейс модуля РаботаСПочтовымиСообщениямиКлиент.

Давайте разберем, как это реализовать. Процесс состоит из сохранения табличного документа во временный файл и передачи его в параметры нового сообщения:


// Сохраняем табличный документ во временный файл на клиенте
ИмяФайла = ПолучитьИмяВременногоФайла("pdf");
ТабДок.Записать(ИмяФайла, ТипФайлаТабличногоДокумента.PDF);

// Подготавливаем описание вложения
Вложение = Новый Структура;
Вложение.Вставить("Представление", "Отчет.pdf");
Вложение.Вставить("Данные", Новый ДвоичныеДанные(ИмяФайла));

МассивВложений = Новый Массив;
МассивВложений.Добавить(Вложение);

// Параметры письма
ПараметрыПисьма = Новый Структура;
ПараметрыПисьма.Вставить("Тема", "Сформированный отчет");
ПараметрыПисьма.Вставить("Тело", "Добрый день! Во вложении ваш отчет.");
ПараметрыПисьма.Вставить("Вложения", МассивВложений);

// Открываем форму нового сообщения
РаботаСПочтовымиСообщениямиКлиент.СоздатьНовоеПочтовоеСообщение(ПараметрыПисьма);

Этот метод дает программисту больше контроля: вы можете заранее заполнить адрес получателя, тему письма и текст сообщения, используя данные из информационной базы (например, e-mail контрагента). Для отправки писем с файлами без изменения конфигурации можно использовать расширение для отправки и получения почтовых сообщений с вложениями.

Автоматическое добавление кнопок в отчетах СКД

Если вы разрабатываете отчет на базе Системы Компоновки Данных (СКД) и используете стандартную подсистему «Варианты отчетов», то кнопка отправки по почте может добавляться автоматически. Проверьте следующие настройки:

  1. Убедитесь, что ваш отчет включен в состав подсистемы Варианты отчетов.
  2. В модуле объекта отчета проверьте наличие стандартных обработчиков БСП.
  3. В пользовательском режиме проверьте, настроена ли в системе учетная запись электронной почты (раздел «Настройки» — «Почта»). Если учетная запись не настроена, кнопка отправки может быть скрыта или неактивна.

Использование механизмов БСП позволяет обеспечить единообразие интерфейса для пользователя. Когда кнопка «Отправить» выглядит и ведет себя одинаково во всех отчетах системы, это значительно снижает порог вхождения и количество ошибок при работе с программой.

Рекомендации по работе с вложениями

При реализации функционала отправки табличных документов стоит учитывать несколько важных моментов:

Мы рассмотрели основные способы интеграции почтовых функций в табличные документы 1С. Выбор конкретного метода зависит от ваших задач: если нужна универсальность и минимум кода — используйте ОбщаяФорма.ПечатьДокументов. Если требуется тонкая настройка письма — используйте программный интерфейс РаботаСПочтовымиСообщениямиКлиент.

← На главную