К статье
Практический материал

Разработка и Конфигурация · 10 мин

Как создать работу (регламентное задание) в 1С

Как создать регламентное задание в 1С: добавление объекта в конфигураторе, написание обработчика, настройка расписания, проверка в консоли заданий.

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

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

Материал ориентирован на конфигурации на управляемых формах (БСП и типовые решения на его основе), но общие принципы применимы и к самописным конфигурациям. Там, где поведение в файловом и клиент-серверном режимах различается, это указано отдельно.

Что такое регламентное задание и когда оно нужно

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

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

Создание объекта в конфигураторе

Откройте конфигуратор, в дереве конфигурации перейдите в ветку «Общие» → «Регламентные задания» и добавьте новый объект. Задайте имя латиницей без пробелов, например ЗагрузкаДанныхИзСайта, и синоним на русском — он будет отображаться в консоли заданий.

Ключевые свойства объекта:

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

После заполнения свойств сохраните конфигурацию и обновите конфигурацию базы данных (F7). Без обновления задание не появится в информационной базе.

Порядок создания задания в конфигураторе
  1. 1
    Откройте конфигурацию и перейдите в Общие → Регламентные задания
  2. 2
    Добавьте новый объект и задайте имя и синоним
  3. 3
    Заполните свойство «Имя метода» в формате Модуль.Процедура
  4. 4
    Укажите ключ, если нужно запретить параллельный запуск
  5. 5
    Сохраните конфигурацию и обновите конфигурацию базы данных

Написание процедуры-обработчика

Обработчик размещается в общем модуле. Модуль должен иметь установленный флаг «Сервер», а для вызова из регламентного задания флаг «Вызов сервера» не обязателен — достаточно, чтобы процедура была экспортной. Клиентские модули для этой цели не подходят: фоновое задание выполняется на сервере без клиентского контекста.

Пример минимального обработчика:

// Общий модуль РаботаССайтом, флаги: Сервер

Процедура ЗагрузитьДанныеИзСайта() Экспорт

ЗаписьЖурналаРегистрации("ЗагрузкаДанныхИзСайта.Старт",

УровеньЖурналаРегистрации.Информация);

Попытка

// Основная логика: обмен, расчет, загрузка

Исключение

ЗаписьЖурналаРегистрации("ЗагрузкаДанныхИзСайта.Ошибка",

УровеньЖурналаРегистрации.Ошибка, , ,

ОписаниеОшибки());

ВызватьИсключение;

КонецПопытки;

КонецПроцедуры

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

Особенности файлового и клиент-серверного режимов

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

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

Режимы выполнения заданий

Клиент-серверный

Задания выполняет сервер 1С автоматически. Подходит для круглосуточных расписаний; ограничение — нагрузка на рабочие процессы сервера.

Файловый

Задания выполняются только в активном сеансе с разрешенными регламентными заданиями. Подходит для небольших баз; ограничение — нет сеанса, нет выполнения.

Настройка расписания и запуск в режиме предприятия

Расписание задается в режиме предприятия. В типовых конфигурациях на БСП откройте раздел «Администрирование» → «Обслуживание» → «Регламентные операции» (или «Регламентные и фоновые задания»). Найдите свое задание в списке, установите флаг использования и настройте расписание по ссылке.

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

Для разового запуска вне расписания в консоли заданий есть команда «Выполнить сейчас». В самописных конфигурациях без БСП управление заданиями делается программно через менеджер РегламентныеЗадания или через внешние обработки-консоли заданий.

Проверка выполнения и диагностика ошибок

Основной инструмент проверки — журнал регистрации (Администрирование → Обслуживание → Журнал регистрации, либо через конфигуратор). Отфильтруйте события по имени вашего задания и событию «Фоновое задание». Успешный запуск выглядит как пара событий «Запуск» и «Успешное завершение».

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

Контрольные точки

Как проверить результат

Журнал регистрации
Норма

Есть события запуска и успешного завершения фонового задания

Тревожный признак

События аварийного завершения или полное отсутствие записей

Консоль заданий
Норма

Дата последнего запуска свежая, состояние «Выполнено»

Тревожный признак

Состояние «Ошибка» или дата запуска устарела

Результат работы обработчика
Норма

Данные, которые должен создавать обработчик, появились в базе

Тревожный признак

Задание «выполнено», но данных нет — логика обработчика не отработала

Типичные ошибки и ограничения

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

Вторая группа проблем — попытка использовать в обработчике клиентский контекст: открытие форм, вызов Предупреждение, обращение к ТекущаяДата() клиента, модальные вызовы. На сервере эти конструкции недоступны. Третья группа — длительные транзакции и блокировки: обработчик, перепроводящий тысячи документов одной транзакцией, способен остановить работу базы. Обрабатывайте данные порциями с фиксацией транзакций.

Типичные ошибки
01
Неэкспортная процедура или модуль без флага «Сервер» — задание падает с ошибкой «метод не обнаружен»
02
Проглатывание исключения без ВызватьИсключение — платформа считает задание успешным, повторные попытки не выполняются
03
Обработка всех данных одной транзакцией — блокировки таблиц и остановка работы пользователей
04
Отсутствие ключа у задания — параллельные запуски конфликтуют и дублируют данные
05
Ожидание выполнения в файловой базе без активного сеанса — задание просто не запускается
Итог

Что важно запомнить

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

Частые вопросы

Можно ли создать регламентное задание без изменения конфигурации?

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

Почему задание выполняется, но данные не появляются?

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

Как запустить задание чаще, чем раз в минуту?

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

Чем регламентное задание отличается от фонового?

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

Задание работало и внезапно перестало запускаться. Что проверить в первую очередь?

Проверьте, не снят ли флаг использования, не заблокировано ли задание в консоли (в БСП есть механизм блокировки при работе с копией базы), активно ли расписание и есть ли сеанс-исполнитель для файловой базы. Затем посмотрите журнал регистрации на предмет ошибок последних запусков — возможно, задание запускается, но падает сразу после старта.