Автоматическая рассылка отчетов по электронной почте из 1С
Автоматическая отправка отчетов из 1С помогает своевременно передавать руководителям, бухгалтерам и менеджерам сведения о продажах, задолженности, остатках и движении денежных средств. Пользователю не приходится вручную формировать файл, сохранять его на компьютере и прикладывать к письму.
Надежная обработка должна решать сразу несколько задач: выбирать отчетный период, формировать документ, сохранять результат в нужном формате, определять список получателей и отправлять сообщение через SMTP-сервер. Отдельное внимание требуется уделить журналу событий и защите учетных данных.
Архитектура зависит от конфигурации 1С, версии платформы и способа запуска. Для разовой команды подойдет внешняя обработка, а регулярную рассылку лучше выполнять регламентным заданием с параметрами, которые хранятся в настройках.
| Компонент | Назначение | Практический вариант |
|---|---|---|
| Настройки | Период, формат, адресаты | Регистр сведений или константы |
| Формирование | Получение данных отчета | СКД или программный отчет |
| Файл | Подготовка вложения | PDF, Excel, табличный документ |
| Почта | Передача сообщения | SMTP через ИнтернетПочту |
| Контроль | Повторная отправка и ошибки | Журнал регистрации и статус рассылки |
Определите сценарий и параметры рассылки
Сначала опишите бизнес-сценарий: какой отчет отправляется, за какой период, кому и с какой периодичностью. Например, каждый рабочий день руководитель получает продажи за предыдущую дату, а в первый день месяца — сводку за прошедший месяц.
Не стоит зашивать адреса, пароль и расписание непосредственно в модуль обработки. Пользовательские настройки лучше вынести в отдельную форму или регистр сведений. Полезно предусмотреть организацию, подразделение, вид отчета, формат файла, тему письма и признак активности правила.
Параметры можно разделить на обязательные и дополнительные:
- период формирования и дата следующего запуска;
- список получателей и адреса для копии;
- формат вложения: PDF, XLSX или CSV;
- шаблон темы и текста письма;
- максимальный размер файла;
- признак отправки только при наличии данных.
Сформируйте отчет программно
Внешняя обработка обычно получает параметры, создает экземпляр отчета и устанавливает значения отбора. Если отчет построен на СКД, отборы нужно задавать через набор пользовательских настроек или программный API схемы компоновки данных. Это позволяет использовать тот же отчет, который открывает пользователь вручную.
После компоновки результата табличный документ можно сохранить во временный файл. Для PDF и Excel следует учитывать доступные офисные компоненты, серверный режим и ограничения операционной системы. В файловом варианте допустим локальный каталог, а в клиент-серверном приложении файл должен создаваться там, где выполняется серверный код.
Пример общей последовательности:
ТабличныйДокумент = Новый ТабличныйДокумент;
// Заполнение табличного документа данными отчета
ИмяФайла = ПолучитьИмяВременногоФайла("pdf");
ТабличныйДокумент.Записать(ИмяФайла, ТипФайлаТабличногоДокумента.PDF);
Конкретный способ заполнения зависит от конфигурации. В прикладном решении важно проверять, что отчет действительно содержит данные, а временный файл существует и доступен для чтения.
Подключите отправку через SMTP
Для отправки сообщения используется почтовый сервер организации или внешний SMTP-провайдер. В настройках указывают сервер, порт, имя пользователя, пароль и способ защищенного соединения. Применяйте отдельную техническую учетную запись с минимальными правами и ограниченным лимитом отправки.
Упрощенный фрагмент логики может выглядеть так:
Почта = Новый ИнтернетПочта;
Почта.Подключиться(СерверSMTP, ПортSMTP, ПользовательSMTP, ПарольSMTP, Истина);
Сообщение = Новый ИнтернетПочтовоеСообщение;
Сообщение.Тема = ТемаПисьма;
Сообщение.Получатели.Добавить(АдресПолучателя);
Сообщение.Тексты.Добавить(ТекстПисьма);
Сообщение.Вложения.Добавить(ИмяФайла);
Почта.Послать(Сообщение);
Почта.Отключиться();
На практике названия методов и доступность параметров зависят от версии платформы. SMTP-порт, SSL/TLS и требования провайдера необходимо сверить с документацией почтовой системы. Пароль не следует хранить в открытом виде в общем модуле или тексте обработки.
Запустите рассылку по расписанию
Для регулярной отправки создайте регламентное задание. Оно должно запускать серверную процедуру, читать активные правила и обрабатывать каждое правило отдельно. Такой подход не блокирует рабочее место пользователя и позволяет запускать отправку ночью или с заданным интервалом.
При больших отчетах полезно ограничить количество писем за один запуск. Для каждого правила нужно сохранять дату последней попытки, результат, текст ошибки и идентификатор сформированного файла. Если SMTP-сервер временно недоступен, обработка сможет выполнить повторную попытку, не создавая бесконтрольный поток сообщений.
Проверьте настройки перед запуском
Перед переводом механизма в эксплуатацию проведите тест на копии базы и используйте тестовый почтовый ящик. Проверьте права пользователя, работу в клиент-серверном режиме, корректность периода и отображение кириллицы в теме и тексте письма.
Основные проверки можно оформить в отдельном служебном отчете:
- соединение с SMTP-сервером и корректность порта;
- наличие обязательных адресов получателей;
- формирование файла без пустых или поврежденных данных;
- размер вложения и допустимый формат;
- повторный запуск без дублей;
- запись успешного результата и ошибки в журнал.
Тестируйте также ситуацию, когда отчет не содержит строк. Иногда лучше не отправлять пустой файл, а направлять уведомление с пояснением. Для финансовых документов добавьте контроль периода, организации и ответственного пользователя, чтобы исключить передачу данных не тому адресату.
Добавьте контроль и безопасную эксплуатацию
В журнале рассылок храните правило, время запуска, пользователя или регламентное задание, список адресатов, размер вложения и итоговый статус. Уведомление об ошибке можно направлять администратору, но не включать в него пароль, содержимое отчета или избыточные персональные данные.
Для человека любое системное уведомление является сигналом, поэтому важно продумать понятную структуру темы, текста и статуса; полезный подход к интерпретации сигналов здесь можно применить как общую идею ясной подачи сообщений. Тема вроде «Продажи за 15.03.2025 — сформирован» информативнее, чем универсальное «Отчет».
Необходимо регулярно пересматривать список адресатов и доступы к настройкам:
- ограничить изменение SMTP-параметров ролями администратора;
- хранить технические учетные данные в защищенном хранилище;
- вести историю изменений правил рассылки;
- маскировать адреса и персональные данные в служебных логах;
- удалять временные файлы после успешной отправки;
- контролировать срок хранения сформированных отчетов.
После проверки разместите обработку в расширении или внешнем файле, выбранном с учетом политики сопровождения конфигурации. Зафиксируйте инструкцию для администратора: где меняются получатели, как запускается тест и где просматриваются ошибки. Такой регламент превращает разовый программный пример в устойчивый сервис отчетности, который можно безопасно использовать в ежедневной работе 1С.