Почему из 1С долго отправляются письма у некоторых пользователей и как это исправить?

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

Отправка электронных писем напрямую из 1С — это базовый сценарий автоматизации, который активно используется в большинстве торговых и сервисных компаний. Однако на практике администраторы и программисты часто сталкиваются со странным поведением системы: у одного пользователя (например, администратора) письмо по шаблону улетает за 1 секунду, а у другого (например, нового менеджера по продажам) та же самая операция на том же компьютере и под той же почтовой учетной записью занимает от 15 до 30 секунд. Особенно сильно эта задержка проявляется при работе через веб-клиент в браузере.

В этой статье мы подробно разберем, с чем связано такое поведение платформы 1С:Предприятие 8.3 и конфигураций на базе Библиотеки стандартных подсистем (БСП), таких как «Управление торговлей 11», «ERP» или «Комплексная автоматизация». Мы проанализируем неочевидные системные факторы — от расчета ключей доступа RLS до нюансов работы с почтовыми серверами и временными каталогами операционной системы.

Шаг 1. Локализация проблемы с помощью замера производительности

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

Выполним следующие шаги для диагностики:

  1. Запустим базу данных 1С в режиме отладки под «медленным» пользователем.
  2. В Конфигураторе выберем пункт меню Отладка — Замер производительности (или нажмем горячую клавишу).
  3. В пользовательском режиме инициируем отправку письма из документа (например, «Заказ клиента»).
  4. Сразу после завершения отправки вернемся в Конфигуратор и отключим замер.

В полученной таблице замера проанализируем колонки «Время» и «% времени». Обратите особое внимание на следующие системные вызовы и функции:

Шаг 2. Разбор влияния производительного режима RLS (Ограничение доступа на уровне записей)

В современных конфигурациях 1С, использующих БСП, права доступа на уровне записей (RLS) рассчитываются в так называемом «производительном режиме». Вместо динамического наложения сложных условий на каждый SQL-запрос система использует предварительно рассчитанные ключи доступа, которые хранятся в специальных регистрах сведений:

Почему система зависает у новых пользователей? При первом входе в систему нового сотрудника (или при изменении его ролей) для него еще не сформированы готовые ключи доступа в базе данных. Когда такой пользователь пытается выполнить операцию, связанную с записью объектов (создание документа взаимодействия, отправка письма, запись присоединенного файла), платформа начинает генерировать эти ключи динамически в режиме реального времени. Этот процесс выполняется синхронно, блокируя интерфейс программы на 15–30 секунд.

У старых пользователей этот расчет уже завершен ранее, поэтому у них отправка происходит мгновенно.

Как решить проблему с RLS по шагам:

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

Шаг 3. Анализ сетевых задержек при загрузке внешних XML-схем и правил

При формировании писем по шаблонам система часто обращается к общим модулям БСП, отвечающим за работу с файлами и внешними ресурсами (например, модуль ПолучениеФайловИзИнтернетаСлужебный). В этот момент платформа может пытаться выполнить HTTP-запрос к серверам обновлений 1С (например, к домену downloads.v8.1c.ru) для проверки актуальности схем метаданных или классификаторов.

Если у нового пользователя на уровне операционной системы Windows, брандмауэра или корпоративного прокси-сервера закрыт доступ во внешнюю сеть для процесса 1cv8.exe, то этот запрос будет «висеть» до истечения таймаута TCP-соединения (обычно это занимает от 15 до 21 секунды). Только после этого система выдаст ошибку таймаута во внутренний лог и продолжит работу, используя локально закешированные данные.

Решение проблемы:

Шаг 4. Специфика авторизации на почтовых серверах (на примере Яндекс.Почты)

Если вы используете публичные почтовые сервисы (Yandex, Mail.ru, Gmail), необходимо учитывать их жесткую политику безопасности в отношении внешних приложений. Использование стандартного пароля от почтового ящика в настройках учетной записи 1С часто приводит к искусственным задержкам (так называемый метод Tarpitting, когда почтовый сервер намеренно замедляет ответы подозрительным клиентам).

Рассмотрим правильный алгоритм настройки системной учетной записи:

  1. В обязательном порядке сгенерируем специальный «Пароль приложения» в личном кабинете Яндекс ID. Использовать основной пароль от учетной записи крайне не рекомендуется.
  2. В настройках учетной записи электронной почты в 1С жестко пропишем параметры подключения. Посмотрим на стандартные рабочие параметры для Яндекса:
    • Сервер исходящей почты (SMTP): smtp.yandex.ru
    • Порт: 465
    • Использовать защищенное соединение (SSL): Да
  3. Избегайте использования небезопасных портов (25 или 587 без явного указания SSL), так как в этом случае платформа тратит время на согласование протокола шифрования (STARTTLS) и повторные попытки авторизации.

Проанализируем пример кода для программной отправки сообщения напрямую через API, минуя механизмы отложенной отправки:


// Создание профиля подключения к почтовому серверу
Профиль = Новый ИнтернетПочтовыйПрофиль;
Профиль.АдресСервераSMTP = "smtp.yandex.ru";
Профиль.ПортSMTP = 465;
Профиль.ИспользоватьЗащищенноеСоединениеSMTP = Истина;
Профиль.ПользовательSMTP = "sales@company.ru";
Профиль.ПарольSMTP = "abcd-efgh-ijkl-mnop"; // Пароль приложения

// Формирование письма
Письмо = Новый ИнтернетПочтовоеСообщение;
Письмо.Отправитель.Адрес = "sales@company.ru";
Письмо.Тема = "Заказ клиента";
Письмо.Получатели.Добавить("client@email.com");

Текст = Письмо.Тексты.Добавить();
Текст.Текст = "Добрый день! Во вложении ваш заказ.";
Текст.ТипТекста = ТипТекстаПочтовогоСообщения.ПростойТекст;

// Непосредственная отправка
Почта = Новый ИнтернетПочта;
Попытка
    Почта.Подключиться(Профиль);
    Почта.Отправить(Письмо);
    Почта.Отключиться();
    Сообщить("Письмо успешно отправлено напрямую!");
Исключение
    ЗаписьЖурналаРегистрации("ОтправкаПочты", УровеньЖурналаРегистрации.Ошибка,,, ОписаниеОшибки());
    Почта.Отключиться();
КонецПопытки;

Шаг 5. Работа со временными файлами и антивирусным ПО

При отправке печатных форм документов (например, счета на оплату или расходной накладной в формате PDF/Excel) 1С сначала выполняет конвертацию табличного документа во временный файл на локальном диске компьютера в папке пользователя %TEMP%.

У новых пользователей операционной системы этот каталог может быть пустым или только что созданным. Местный антивирус (например, Windows Defender или Kaspersky) при первом обращении процесса 1cv8.exe к вновь создаваемым файлам во временной папке нового пользователя запускает процедуру глубокого сканирования файловых потоков в реальном времени. Это блокирует чтение файла платформой 1С, приводя к существенному подвисанию интерфейса.

Как исправить ситуацию:

Шаг 6. Отложенная отправка против мгновенной

В конфигурациях «Управление торговлей», «ERP» и «Комплексная автоматизация» предусмотрен встроенный механизм фоновой отправки писем. При нажатии кнопки «Отправить» письмо физически не уходит сразу во внешнюю сеть, а записывается в специальную очередь (документ «Электронное письмо исходящее» в статусе «К отправке»). Отправку осуществляет регламентное задание по расписанию.

Убедимся, что у пользователя, у которого письмо уходит «за 1 секунду», не настроена автоматическая мгновенная отправка в обход очереди. Проверим настройки:

  1. Откроем персональные настройки пользователя в 1С.
  2. Найдем параметры работы с почтой.
  3. Проверим состояние флага «Отправлять письма сразу». Если этот флаг снят, письмо ждет выполнения фонового регламентного задания. Принудительная ручная отправка кнопкой «Отправить сразу» внутри самого письма поможет обойти эту задержку для проверки работы почтового сервера.
← На главную