Разберем распространенную проблему, с которой часто сталкиваются администраторы и специалисты при настройке почтового клиента в современных конфигурациях 1С, таких как 1С:Комплексная автоматизация 2.4 (или 1С:ERP и 1С:Управление торговлей 11).
Представим ситуацию: вы настроили учетную запись электронной почты, заполнили все порты, адреса серверов и пароли. При нажатии на кнопку «Проверить параметры» система выдает заветное сообщение: «Проверка параметров учетной записи завершилась успешно». Однако при попытке отправить реальный документ, счет или тестовое письмо клиенту ничего не происходит — письма мертвым грузом зависают в очереди, а в журнале регистрации отсутствуют какие-либо ошибки. При этом, если запустить регламентное задание отправки почты вручную, все накопившиеся сообщения мгновенно улетают адресатам.
Выясним причину, почему автоматическая отправка по расписанию дает сбой, проанализируем архитектуру работы регламентных заданий в БСП (Библиотеке стандартных подсистем) и разберем по шагам методы решения этой проблемы.
Проанализируем самый частый сценарий. В современных конфигурациях 1С встроен встроенный механизм безопасности БСП, предназначенный для защиты реальных данных при копировании баз. Если рабочую базу развернули на тестовом сервере, перенесли на другой компьютер или восстановили из резервной копии, при первом запуске система задает вопрос: «Информационная база перемещена или восстановлена из резервной копии?».
Если пользователь или администратор выбирает вариант «Это копия информационной базы», система автоматически блокирует отправку писем, SMS, синхронизацию с сайтами и другими внешними ресурсами, чтобы тестовая база случайно не начала слать реальным клиентам архивные счета или уведомления. При этом ручная проверка почты из карточки учетной записи может проходить успешно, но регламентные задания по расписанию блокируются.
Как исправить ситуацию и разблокировать отправку:
Если база работает в клиент-серверном варианте (под управлением MS SQL Server, PostgreSQL и др.), автоматический запуск расписаний может быть заблокирован на уровне настроек самой информационной базы в кластере серверов 1С:Предприятия.
Рассмотрим, как проверить этот параметр:
КА 2.4.В случае, если ваша 1С:Комплексная автоматизация работает в файловом режиме, механизм выполнения фоновых задач устроен иначе, чем на сервере. В файловой базе регламентные задания выполняются последовательно в контексте активных сеансов пользователей.
Проанализируем важные нюансы файлового режима:
/AllowExecuteScheduledJobs -off, это полностью запрещает выполнение фоновых задач в данном сеансе. Для активации автоматического запуска расписания этот ключ необходимо удалить или заменить на -on.Если глобальные блокировки сняты, но почта все равно не уходит сама, детально изучим настройки самого задания в режиме «1С:Предприятие».
Выполним следующие шаги:
Для разработчиков и администраторов, желающих проверить состояние регламентных заданий или принудительно инициализировать их запуск в кодовой базе, приведем пример работы с объектом встроенного языка РегламентныеЗадания.
Посмотрим на пример кода, позволяющий найти задание по его имени и принудительно запустить его на выполнение:
// Пример программного поиска и выполнения регламентного задания по отправке почты
ИмяЗадания = "ПолучениеИОтправкаЭлектронныхПисем";
ЗаданиеПочты = РегламентныеЗадания.НайтиПоПредопределенномуИмени(ИмяЗадания);
Если ЗаданиеПочты <> Неопределено Тогда
// Проверим, включено ли задание в системе
Если Не ЗаданиеПочты.Использование Тогда
ЗаданиеПочты.Использование = Истина;
ЗаданиеПочты.Записать();
ЗаписьЖурналаРегистрации("НастройкаПочты", УровеньЖурналаРегистрации.Информация, , , "Регламентное задание автоматической отправки почты было принудительно включено.");
КонецЕсли;
// Выполним задание в фоновом режиме для проверки работоспособности
Попытка
РегламентныеЗадания.Выполнить(ЗаданиеПочты);
ЗаписьЖурналаРегистрации("НастройкаПочты", УровеньЖурналаРегистрации.Информация, , , "Программный запуск регламентного задания отправки почты завершен успешно.");
Исключение
ИнформацияОбОшибке = ИнформацияОбОшибке();
ЗаписьЖурналаРегистрации("НастройкаПочты", УровеньЖурналаРегистрации.Ошибка, , , "Ошибка при программном запуске задания: " + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке));
КонецПопытки;
КонецЕсли;
В редких случаях планировщик заданий на стороне сервера приложений 1С «зависает» из-за накопления некорректного кэша метаданных. Если все настройки выполнены верно, но расписание игнорируется, выполним административные процедуры:
services.msc найдем службу 1C:Enterprise 8.3 Server Agent и выберем «Остановить»).C:\Program Files\1cv8\srvinfo).