Почему не отправляется почта в 1С:Комплексная автоматизация 2.4 по расписанию и как это исправить?

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

Разберем распространенную проблему, с которой часто сталкиваются администраторы и специалисты при настройке почтового клиента в современных конфигурациях 1С, таких как 1С:Комплексная автоматизация 2.4 (или 1С:ERP и 1С:Управление торговлей 11).

Представим ситуацию: вы настроили учетную запись электронной почты, заполнили все порты, адреса серверов и пароли. При нажатии на кнопку «Проверить параметры» система выдает заветное сообщение: «Проверка параметров учетной записи завершилась успешно». Однако при попытке отправить реальный документ, счет или тестовое письмо клиенту ничего не происходит — письма мертвым грузом зависают в очереди, а в журнале регистрации отсутствуют какие-либо ошибки. При этом, если запустить регламентное задание отправки почты вручную, все накопившиеся сообщения мгновенно улетают адресатам.

Выясним причину, почему автоматическая отправка по расписанию дает сбой, проанализируем архитектуру работы регламентных заданий в БСП (Библиотеке стандартных подсистем) и разберем по шагам методы решения этой проблемы.

1. Блокировка работы с внешними ресурсами (защита БСП)

Проанализируем самый частый сценарий. В современных конфигурациях 1С встроен встроенный механизм безопасности БСП, предназначенный для защиты реальных данных при копировании баз. Если рабочую базу развернули на тестовом сервере, перенесли на другой компьютер или восстановили из резервной копии, при первом запуске система задает вопрос: «Информационная база перемещена или восстановлена из резервной копии?».

Если пользователь или администратор выбирает вариант «Это копия информационной базы», система автоматически блокирует отправку писем, SMS, синхронизацию с сайтами и другими внешними ресурсами, чтобы тестовая база случайно не начала слать реальным клиентам архивные счета или уведомления. При этом ручная проверка почты из карточки учетной записи может проходить успешно, но регламентные задания по расписанию блокируются.

Как исправить ситуацию и разблокировать отправку:

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

2. Блокировка регламентных заданий на уровне СУБД / Кластера 1С

Если база работает в клиент-серверном варианте (под управлением MS SQL Server, PostgreSQL и др.), автоматический запуск расписаний может быть заблокирован на уровне настроек самой информационной базы в кластере серверов 1С:Предприятия.

Рассмотрим, как проверить этот параметр:

  1. Запустим утилиту «Администрирование серверов 1С:Предприятия».
  2. Подключимся к нашему кластеру, найдем ветку Информационные базы и выберем нашу базу КА 2.4.
  3. Откроем свойства информационной базы (потребуется ввести имя и пароль администратора базы данных).
  4. Найдем параметр «Блокировка регламентных заданий включена» (Block scheduled jobs Is enabled).
  5. Убедимся, что галочка снята. Если она установлена, сервер 1С игнорирует любые настроенные расписания, и регламентные задания будут выполняться только принудительно (вручную).

3. Особенности работы в файловом режиме базы данных

В случае, если ваша 1С:Комплексная автоматизация работает в файловом режиме, механизм выполнения фоновых задач устроен иначе, чем на сервере. В файловой базе регламентные задания выполняются последовательно в контексте активных сеансов пользователей.

Проанализируем важные нюансы файлового режима:

4. Проверка и настройка расписания регламентного задания в интерфейсе 1С

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

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

  1. Перейдем в меню: НСИ и администрирование ➔ Обслуживание ➔ Регламентные и фоновые задания.
  2. В списке найдем предопределенное задание «Получение и отправка электронных писем».
  3. Проверим состояние флага «Включено». Если галочка не стоит, задание не будет запускаться автоматически.
  4. Откроем карточку задания и перейдем по ссылке «Настроить расписание». Проверим параметры: рекомендуется выставить запуск «каждый день, каждые 60-120 секунд». Если там указано неверное или слишком редкое расписание (например, раз в неделю), скорректируем его.
  5. Обратим внимание на поле «Пользователь» в карточке регламентного задания. Если там указана учетная запись уволенного или заблокированного сотрудника, либо пользователя, у которого нет прав на работу с системной почтой, задание завершится ошибкой выполнения. Рекомендуется оставлять поле «Пользователь» пустым — тогда задание запустится под системными правами с максимальным уровнем доступа.

5. Программный контроль регламентных заданий

Для разработчиков и администраторов, желающих проверить состояние регламентных заданий или принудительно инициализировать их запуск в кодовой базе, приведем пример работы с объектом встроенного языка РегламентныеЗадания.

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


// Пример программного поиска и выполнения регламентного задания по отправке почты
ИмяЗадания = "ПолучениеИОтправкаЭлектронныхПисем";
ЗаданиеПочты = РегламентныеЗадания.НайтиПоПредопределенномуИмени(ИмяЗадания);

Если ЗаданиеПочты <> Неопределено Тогда
    // Проверим, включено ли задание в системе
    Если Не ЗаданиеПочты.Использование Тогда
        ЗаданиеПочты.Использование = Истина;
        ЗаданиеПочты.Записать();
        ЗаписьЖурналаРегистрации("НастройкаПочты", УровеньЖурналаРегистрации.Информация, , , "Регламентное задание автоматической отправки почты было принудительно включено.");
    КонецЕсли;
    
    // Выполним задание в фоновом режиме для проверки работоспособности
    Попытка
        РегламентныеЗадания.Выполнить(ЗаданиеПочты);
        ЗаписьЖурналаРегистрации("НастройкаПочты", УровеньЖурналаРегистрации.Информация, , , "Программный запуск регламентного задания отправки почты завершен успешно.");
    Исключение
        ИнформацияОбОшибке = ИнформацияОбОшибке();
        ЗаписьЖурналаРегистрации("НастройкаПочты", УровеньЖурналаРегистрации.Ошибка, , , "Ошибка при программном запуске задания: " + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке));
    КонецПопытки;
КонецЕсли;

6. Очистка серверного кэша и перезапуск служб

В редких случаях планировщик заданий на стороне сервера приложений 1С «зависает» из-за накопления некорректного кэша метаданных. Если все настройки выполнены верно, но расписание игнорируется, выполним административные процедуры:

  1. Остановим службу сервера 1С:Предприятия (через оснастку services.msc найдем службу 1C:Enterprise 8.3 Server Agent и выберем «Остановить»).
  2. Перейдем в каталог расположения серверных данных (по умолчанию это C:\Program Files\1cv8\srvinfo).
  3. Очистим временные папки кэша конфигурации (папки с длинными буквенно-цифровыми именами UID), предварительно сделав резервную копию.
  4. Снова запустим службу сервера приложений 1С. Планировщик заданий переинициализирует очередь выполнения, и отправка писем по расписанию заработает в штатном режиме.
← На главную