Как организовать рассылку расчетных листков из 1С:ЗУП без «зашитых» паролей в коде?

Программист 1С v8.3 (Обычные формы) 1С:Зарплата и Управление Персоналом Управленческий учет IT и автоматизация бизнеса
← На главную

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

Анализ проблемы: почему «зашитый» код — это плохо

Рассмотрим типовую ситуацию, представленную в коде автора темы. Использование объекта ИнтернетПочтовыйПрофиль с заполнением полей вручную выглядит так:


Профиль = Новый ИнтернетПочтовыйПрофиль;
Профиль.АдресСервераSMTP = "smtp.mail.ru";
Профиль.ПарольSMTP = "хххххххххх";
Профиль.ПользовательSMTP = "яяя@mail.ru";
Профиль.ИспользоватьSSLSMTP = Истина;

Проблема заключается в том, что при необходимости сменить почтовый ящик (например, перейти на корпоративный домен softlinebpo.ru) пользователю или администратору приходится обращаться к программисту для правки кода. Более того, современные почтовые сервисы (Mail.ru, Yandex, Gmail) требуют использования специальных «паролей приложений», и обычный пароль от почты просто не сработает, вызывая ошибки аутентификации.

Решение №1: Переход на системный справочник учетных записей

Самый правильный путь — использовать встроенный справочник 1С Учетные записи электронной почты. Это позволяет вынести все технические настройки (сервер, порт, SSL, логин, пароль) в интерфейс пользователя. Проанализируем, как изменить код для получения настроек из этого справочника.

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

  1. Добавим на форму обработки реквизит УчетнаяЗапись с типом СправочникСсылка.УчетныеЗаписиЭлектроннойПочты.
  2. В коде отправки заменим инициализацию профиля. В типовых конфигурациях для этого существуют встроенные функции.

Пример кода для получения настроек в типовой конфигурации:


// Получаем профиль из справочника
СсылкаНаУчетку = Объект.УчетнаяЗапись; // Реквизит на форме
Профиль = РаботаЭлектроннойПочтой.ПолучитьИнтернетПочтовыйПрофиль(СсылкаНаУчетку);

// Теперь объект Профиль заполнен автоматически из настроек 1С
Почта = Новый ИнтернетПочта;
Попытка
    Почта.Подключиться(Профиль);
    // Логика отправки письма
    Почта.Отправить(Сообщение);
    Почта.Отключиться();
Исключение
    Сообщить("Ошибка при отправке: " + ОписаниеОшибки());
КонецПопытки;

Решение №2: Настройка современных протоколов безопасности (SSL/TLS)

Часто при настройке почты пользователи сталкиваются с ошибкой: «POP3 is available only with SSL or TLS connection enabled». Это происходит потому, что старые методы подключения используют незащищенные порты (например, 25 или 110), которые современные серверы блокируют.

Выясним причину и устраним ее. Для корректной работы через smtp.mail.ru или корпоративные серверы необходимо соблюдать следующие параметры:

Если вы используете справочник учетных записей, просто убедитесь, что в форме настройки записи установлены соответствующие галочки «Использовать защищенное соединение (SSL)». В программном коде, если вы всё же заполняете профиль вручную, это выглядит так:


Профиль.ПортSMTP = 465;
Профиль.ИспользоватьSSLSMTP = Истина;
Профиль.ТолькоЗащищеннаяАутентификацияSMTP = Ложь;

Решение №3: Использование «Пароля приложения»

Проанализируем ситуацию, когда логин и пароль верны, SSL включен, но 1С всё равно не может подключиться. С 2022 года почтовые сервисы запретили авторизацию через «небезопасные» приложения (к которым они относят и 1С) по основному паролю от ящика.

Разберем алгоритм действий для настройки:

  1. Зайдите в настройки безопасности вашего почтового ящика через браузер.
  2. Найдите раздел «Пароли для внешних приложений».
  3. Создайте новый пароль, выбрав тип «Почта» и указав название (например, «1С Рассылка»).
  4. Сервис выдаст вам уникальный код из 16 символов. Именно этот код нужно вставить в поле Пароль в 1С вместо вашего обычного пароля.

Важно: Этот пароль вводится один раз и обеспечивает безопасный доступ только для 1С. Основной пароль от почты при этом менять не нужно.

Рекомендации по массовой рассылке (корпоративный домен)

Если ваш клиент хочет отправлять письма с собственного домена (например, softlinebpo.ru), следует учитывать специфику корпоративных почтовых серверов. Рассмотрим основные моменты:

1. Настройка SPF и DKIM. При массовой рассылке расчетных листков (сотни писем за раз) принимающие сервера сотрудников (Gmail, Mail.ru) могут пометить письма как спам. Чтобы этого не произошло, системный администратор клиента должен прописать в DNS домена записи SPF и DKIM, разрешающие отправку писем с IP-адреса сервера 1С.

2. Лимиты сервера. Многие SMTP-серверы имеют ограничения на количество писем в минуту или час. Проанализируем код рассылки: если писем много, желательно реализовать отправку порциями с небольшой паузой. Рассмотрим пример упрощенного цикла с паузой:


Для Каждого Сотрудник Из СписокСотрудников Цикл
    // Подготовка сообщения...
    Почта.Отправить(Сообщение);
    
    // Каждые 50 писем делаем паузу 10 секунд
    Если Счетчик % 50 = 0 Тогда
        Приостановить(10); 
    КонецЕсли;
    Счетчик = Счетчик + 1;
КонецЦикла;

Итоги

Подведем итог проделанной работы. Для создания надежного механизма рассылки расчетных листков мы:

Такой подход делает решение гибким, безопасным и соответствующим современным стандартам разработки на платформе 1С.

← На главную