Администрирование · 10 мин
Как запустить регламентное задание в 1С 8.2
Как запустить регламентное задание в 1С 8.2: настройка расписания, включение через консоль заданий, запуск в файловой и клиент-серверной базе, типичные ошибки.
Регламентные задания в 1С 8.2 — это механизм автоматического выполнения процедур по расписанию: обмен данными, загрузка курсов валют, архивация, пересчёт итогов. Чтобы задание работало, его мало создать в конфигураторе — нужно правильно настроить расписание, убедиться, что механизм не заблокирован, и при необходимости запустить выполнение вручную.
Главная сложность платформы 8.2 в том, что поведение регламентных заданий сильно зависит от режима работы базы. В файловом варианте задания выполняет отдельный фоновый процесс, который кто-то должен запустить, а в клиент-серверном этим занимается сервер 1С:Предприятия. Именно из-за этой разницы большинство попыток «запустить задание» заканчиваются тем, что оно молча не выполняется.
Ниже разобраны оба сценария, способы ручного запуска, проверка результата и типичные причины, по которым задание не стартует.
Как устроены регламентные задания в платформе 8.2
Регламентное задание — объект метаданных конфигурации. В нём указывается имя экспортной процедуры общего модуля, которая будет выполняться, и набор параметров. Само по себе задание ничего не делает: платформа по расписанию создаёт фоновое задание, которое и вызывает указанную процедуру.
Важное ограничение: процедура должна находиться в общем модуле с установленным флагом «Сервер». Если модуль компилируется только на клиенте, фоновое задание завершится с ошибкой, потому что выполняется в серверном контексте без пользовательского интерфейса.
Расписание задаётся в свойствах задания и может храниться либо в самой конфигурации (расписание по умолчанию), либо переопределяться в режиме предприятия через консоль заданий — тогда оно сохраняется в базе данных и имеет приоритет.
Настройка задания в конфигураторе
Откройте конфигуратор, в дереве конфигурации найдите ветку «Общие» → «Регламентные задания». Если задание уже есть в типовой конфигурации, достаточно проверить его свойства. Для нового задания создайте объект и заполните ключевые поля:
- Имя метода — например,
ОбменДанными.ВыполнитьОбмен; - Расписание — периодичность, время начала, дни недели;
- Использование — флаг должен быть установлен, иначе задание отключено;
- Количество повторов при аварийном завершении и пауза между ними.
После изменений обновите конфигурацию базы данных (F7). Без обновления задание не появится в списке активных, даже если в конфигураторе всё настроено верно.
Запуск в клиент-серверном варианте
В клиент-серверной базе выполнением управляет сервер 1С:Предприятия, и отдельный процесс для заданий запускать не нужно. Достаточно убедиться, что задание включено и у него корректное расписание.
Однако есть частая ловушка: в свойствах информационной базы в консоли кластера может стоять флаг «Блокировка регламентных заданий включена». Его ставят при копировании рабочей базы в тестовую, чтобы копия не начала сама выполнять обмены и рассылки. Пока блокировка активна, ни одно задание не выполнится.
- 1Откройте консоль кластера серверов 1С и проверьте свойства базы: снимите блокировку регламентных заданий, если она установлена
- 2В режиме предприятия откройте консоль заданий (в типовых: Администрирование → Регламентные и фоновые задания)
- 3Найдите нужное задание, проверьте флаг «Использование» и расписание
- 4Для немедленного запуска нажмите «Выполнить сейчас»
- 5Обновите список фоновых заданий и проверьте состояние: «Выполняется», затем «Завершено»
Запуск в файловом варианте базы
Файловая база 8.2 не имеет постоянно работающего сервера, поэтому платформа не может сама «проснуться» в нужное время. Регламентные задания выполняются только внутри запущенного сеанса, и для штатной работы нужно выделить отдельный процесс.
Классический способ — запустить дополнительный экземпляр 1С с параметром командной строки, который превращает сеанс в исполнителя заданий:
1cv8.exe ENTERPRISE /F"C:\Bases\Trade" /N"Robot" /P"пароль" /C ExecuteScheduledJobsЭтот сеанс должен работать постоянно — обычно его запускают на сервере или выделенной машине через планировщик задач Windows с автоперезапуском. Если процесс закрыть, выполнение заданий прекратится до следующего старта.
Для разового ручного запуска отдельный процесс не обязателен: откройте базу в режиме предприятия, запустите обработку «Консоль заданий» и нажмите «Выполнить сейчас» — задание выполнится в текущем сеансе.
Файловый или клиент-серверный режим
Задания выполняет сервер автоматически, отдельный процесс не нужен. Ограничение — возможна блокировка заданий в свойствах базы
Нужен постоянно работающий сеанс с параметром ExecuteScheduledJobs. Риск — сеанс закрыли или он завис
Подходит для разового выполнения и отладки. Не заменяет автоматику: работает, только пока открыт сеанс
Как проверить, что задание действительно выполнилось
Тот факт, что вы нажали «Выполнить сейчас» или настроили расписание, ещё ничего не гарантирует. Проверка делается по журналу фоновых заданий и журналу регистрации.
В консоли заданий перейдите на закладку «Фоновые задания», установите отбор по имени регламентного задания и посмотрите состояние последнего экземпляра. «Завершено» означает успех, «Ошибка» — откройте задание и прочитайте текст исключения. Дополнительно проверьте журнал регистрации (Администрирование → Журнал регистрации) с отбором по событию фонового задания.
Как проверить результат
«Завершено» без сообщений об ошибке
«Ошибка» или задание отсутствует в списке
Соответствует расписанию
Дата старая — задание не запускалось
Данные обновились (курсы, остатки, обмен прошёл)
Задание завершено, но данных нет — ошибка логики внутри процедуры
Почему задание не запускается: типичные причины
Большинство проблем сводится к нескольким повторяющимся причинам. Проверяйте их последовательно, начиная с самых частых.
Отдельный случай — конфигурации на поддержке с доработками: если обновление конфигурации базы данных не выполнено или выполнено с ошибками, новые задания могут не появиться в списке. Проверьте через конфигуратор, что обновление завершено.
Отладка и разовый запуск из кода
Для отладки удобно запустить метод задания принудительно. В консоли кода или через внешнюю обработку можно выполнить:
РегламентныеЗадания.НайтиПредопределенное("ЗагрузкаКурсовВалют").ВыполнитьСейчас();
Для непредопределённых заданий используйте РегламентныеЗадания.ПолучитьРегламентныеЗадания() с отбором и метод ВыполнитьСейчас() у найденного объекта. Метод создаёт фоновое задание немедленно, независимо от расписания.
Если нужно пошагово отладить саму процедуру, временно вызовите её напрямую из обработки в том же серверном контексте (вызов сервера из клиентской формы) — так отладчик остановится на точках останова, чего не произойдёт в чужом фоновом сеансе без включённой отладки фоновых заданий в конфигураторе.
Перед включением отладки фоновых заданий в конфигураторе (Отладка → Подключение → автоматическое подключение фоновых заданий) убедитесь, что отладка на сервере разрешена. В файловом режиме фоновое задание запускается отдельным процессом, и без автоподключения точки останова в нём не сработают.
Частые вопросы
Задание настроено, но в списке фоновых заданий пусто. Что не так?
Скорее всего, задание ни разу не запускалось: не подошло время расписания, снят флаг «Использование», включена блокировка заданий на сервере или в файловой базе нет работающего сеанса-исполнителя. Проверьте эти четыре пункта по порядку.
Как запустить задание в файловой базе без постоянно открытого сеанса?
Штатно — никак: платформе 8.2 нужен работающий процесс. Практический вариант — планировщик Windows, который по расписанию запускает 1С с обработкой, выполняющей нужный метод, и завершает сеанс. Это заменяет механизм регламентных заданий внешним расписанием.
Фоновое задание завершается с ошибкой «Метод объекта не обнаружен». Причина?
В свойствах регламентного задания указано неверное имя метода, либо процедура не экспортная, либо общий модуль не имеет флага «Сервер». Проверьте точное имя в формате «ИмяМодуля.ИмяПроцедуры» и признак «Экспорт» у процедуры.
Можно ли выполнять задание от имени конкретного пользователя?
Да, в свойствах задания есть поле «Имя пользователя». Если оно пустое, задание выполняется без аутентифицированного пользователя, и проверки прав в коде могут вести себя иначе. Для заданий, работающих с данными с разграничением прав, пользователя лучше указать явно.
Задание выполнилось успешно, но данные не изменились. Где искать проблему?
Ошибка внутри прикладной логики: процедура отработала, но ничего не сделала — например, отбор не нашёл данных или условие не выполнилось. Смотрите журнал регистрации на предмет сообщений из процедуры и отлаживайте метод напрямую, а не через расписание.
Как временно отключить все задания в тестовой копии базы?
В клиент-серверном варианте установите блокировку регламентных заданий в свойствах базы в консоли кластера. В файловом — просто не запускайте сеанс-исполнитель и при необходимости снимите флаг «Использование» у опасных заданий через консоль заданий.
Что важно запомнить
В клиент-серверной базе 1С 8.2 задания запускает сервер — проверьте блокировку заданий и флаг «Использование». В файловой базе нужен постоянно работающий сеанс с параметром ExecuteScheduledJobs или ручной запуск через консоль заданий. Результат всегда проверяйте по состоянию фонового задания и журналу регистрации.