Почему не запускается регламентное задание в новой конфигурации и откуда ошибки аутентификации в журнале?

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

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

1. Основная причина: Предопределенные задания против Программных

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

Давайте разберемся в фундаментальном различии двух подходов к созданию заданий.

Предопределенные регламентные задания

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

Если галочка Предопределенное установлена:

  1. Платформа автоматически создает запись в таблице регламентных заданий базы данных.
  2. Задание имеет уникальный идентификатор, привязанный к метаданным.
  3. Оно готово к работе сразу (при условии установленного расписания и флага Использование).

Не предопределенные (программные) задания

Если галочка Предопределенное снята, то в Конфигураторе мы создаем лишь описание (шаблон) того, какой метод и с какими настройками может вызываться. Само задание как объект данных в базе не появляется автоматически.

Чтобы такое задание заработало, нам необходимо изучить программное создание и управление регламентными заданиями и создать его экземпляр с помощью встроенного языка. Это часто используется, когда нам нужно создать несколько копий одного и того же задания с разными параметрами (например, разные расписания для разных Организаций).

Пример программного создания задания на основе метаданных:


// Создаем новое задание на основе метаданных "ОбновлениеКурсовВалют"
НовоеЗадание = РегламентныеЗадания.СоздатьРегламентноеЗадание("ОбновлениеКурсовВалют");
НовоеЗадание.Наименование = "Загрузка валют (Основная)";
НовоеЗадание.Ключ = "ЗагрузкаВалют_Орг1"; // Важно для идентификации
// Задаем расписание
Расписание = Новый РасписаниеРегламентногоЗадания;
Расписание.ПериодПовтораДней = 1; // Каждый день
НовоеЗадание.Расписание = Расписание;
НовоеЗадание.Использование = Истина;
НовоеЗадание.Записать();

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

2. Настройка расписания и метода

Давайте проанализируем еще один важный момент, упомянутый в обсуждении — настройки расписания. Даже если задание создано корректно, оно может не выполняться, если расписание задано с логической ошибкой.

Частая ошибка новичков при настройке дневного расписания:

Если вы хотите, чтобы задание выполнялось раз в день, достаточно указать время начала. Но если требуется повторение внутри дня, необходимо корректно заполнить интервалы. Также обратите внимание на требования к процедуре-обработчику:

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

Чтобы исключить ошибки на этом этапе, полезно использовать статический анализатор кода проектов, который проверит корректность объявления процедур, или провести комплексный анализ конфигурации на наличие ошибок вызова экспортных методов.


// Пример правильного оформления процедуры в общем модуле
Процедура ЗапускРегламентныхЗаданийОБ() Экспорт
    ЗаписьЖурналаРегистрации("Регламент", , , , "Запуск регламентных заданий выполнен");
КонецПроцедуры

3. Особенности запуска в файловом и клиент-серверном вариантах

В обсуждении также затрагивался вопрос "сеансов" планировщика. Важно понимать архитектурные различия:

Клиент-серверный вариант: Планировщик заданий встроен в кластер серверов 1С. Менеджер кластера сам инициирует выполнение заданий в фоновых процессах (rphost). Никаких дополнительных действий от пользователя не требуется — для этого есть инструмент администрирования кластера и фоновых заданий.

Файловый вариант: Здесь нет отдельной службы сервера. Регламентные задания выполняются только тогда, когда запущен клиентский сеанс 1С, который берет на себя роль планировщика. Обычно для этого требуется настройка регламентных заданий в файловой базе через /AllowExecuteScheduledJobs для запуска выделенного сеанса. Если закрыть все клиенты 1С в файловой базе — задания выполняться не будут.

4. Загадка "Ошибки аутентификации" в журнале регистрации

В ходе обсуждения возник интересный побочный вопрос: почему в журнале регистрации появляются записи вида Сеанс. Ошибка аутентификации с указанием пользователя Windows (например, DOMEN\User), хотя пользователь в итоге успешно заходит в базу под логином 1С?

Это штатное поведение платформы при определенных настройках сети и пользователей. Процесс входа происходит следующим образом:

  1. Пользователь запускает клиент 1С.
  2. Клиент 1С сначала пытается выполнить "прозрачную" аутентификацию через операционную систему (SSPI). Он отправляет серверу токен текущего пользователя Windows (тот самый DOMEN\User).
  3. Сервер 1С получает токен и ищет в списке пользователей базы данных такого пользователя, у которого в свойствах стоит галочка Аутентификация операционной системы и указан этот доменный логин.
  4. Если такой пользователь не найден (или галочка снята), сервер отклоняет попытку входа.
  5. Именно этот момент отказа и фиксируется в Журнале регистрации как "Ошибка аутентификации".
  6. Получив отказ по OS-аутентификации, клиентская часть 1С не закрывается, а переходит к следующему шагу: показывает стандартное окно ввода логина и пароля пользователя 1С.
  7. Пользователь вводит верные данные и успешно заходит.

Таким образом, наличие таких ошибок в журнале перед успешным входом — это не проблема, а следствие того, что 1С сначала попыталась "узнать" вас через Windows, не смогла, записала неудачу в лог и предложила представиться вручную — для более глубокого анализа логов пригодится мониторинг ошибок и событий журнала регистрации.

5. Рекомендации по отладке

Чтобы эффективно отлаживать регламентные задания и не гадать, почему они "начинаются и сразу завершаются", используйте следующие инструменты:

Следуя этим рекомендациям, вы сможете настроить стабильную работу планировщика даже в "пустой" конфигурации и правильно интерпретировать записи в системных журналах.

← На главную