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

Автоматизация · 12 мин

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

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

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

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

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

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

Регламентное задание — это объект метаданных конфигурации. В его свойствах указывается «Имя метода» — экспортная процедура общего модуля, который компилируется вместе с конфигурацией. Платформа при срабатывании расписания вызывает именно этот метод на сервере (в клиент-серверном варианте) или в фоновом сеансе (в файловом). Внешние файлы .epf в этот механизм не входят.

Из этого следует главное правило: логика, которую нужно выполнять по расписанию, должна быть доступна серверу в виде скомпилированного кода конфигурации либо подключена через механизм, который сам умеет загружать внешние файлы. Таким механизмом в типовых решениях (1С:Бухгалтерия, УТ, ERP, ЗУП и других на базе Библиотеки стандартных подсистем) является подсистема «Дополнительные отчеты и обработки».

Способ 1: запуск через «Дополнительные отчеты и обработки» в типовой конфигурации

Это самый простой путь, если конфигурация типовая и изменять её нельзя. Подсистема БСП умеет хранить файл обработки в базе и выполнять его серверные команды по расписанию.

Порядок действий:

  • Откройте «Администрирование» → «Печатные формы, отчеты и обработки» и включите флажок «Дополнительные отчеты и обработки».
  • Перейдите по ссылке «Дополнительные отчеты и обработки», нажмите «Добавить из файла» и выберите ваш .epf.
  • В карточке обработки убедитесь, что команда имеет вид «Вызов серверной процедуры» — только такие команды можно ставить на расписание.
  • Откройте раздел «Быстрый доступ» и «Настройка команд», при необходимости укажите разделы интерфейса.
  • Нажмите «Настроить расписание» (или «Регламентное задание» в карточке команды) и задайте периодичность: ежедневно, каждый час, по cron-подобному расписанию.

Чтобы обработка корректно работала в фоне, её модуль должен содержать экспортную процедуру ВыполнитьКоманду(ИмяКоманды, ПараметрыВыполнения) в модуле объекта — именно её вызывает БСП. Если обработка писалась только для интерактивного запуска (открытие формы), в фоне она работать не будет: формы на сервере недоступны.

Порядок действий для типовой конфигурации
  1. 1
    Включите подсистему «Дополнительные отчеты и обработки» в настройках администрирования
  2. 2
    Добавьте файл .epf в справочник и проверьте, что команда серверная
  3. 3
    Убедитесь, что в модуле объекта есть экспортная процедура ВыполнитьКоманду
  4. 4
    Настройте расписание в карточке команды обработки
  5. 5
    Проверьте выполнение через консоль регламентных и фоновых заданий

Способ 2: перенос кода в общий модуль и создание регламентного задания

Если конфигурация дорабатывается (самописная или снятая с поддержки), надёжнее перенести логику обработки в общий модуль. Это даёт полный контроль над параметрами, транзакциями и журналированием.

Последовательность настройки в конфигураторе:

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

Важный нюанс: код должен быть полностью «серверным». Вызовы Предупреждение(), Вопрос(), ОткрытьФорму(), работа с ТабличныйДокумент через показ — всё это в фоновом задании вызовет ошибку. Диалоги и интерактив заменяют записью в журнал регистрации (ЗаписьЖурналаРегистрации) или отправкой уведомлений.

bsl
Процедура ВыполнитьОбработкуДанных() Экспорт
	ЗаписьЖурналаРегистрации("Обработка.Старт", УровеньЖурналаРегистрации.Информация);
	// ... основная логика ...
	ЗаписьЖурналаРегистрации("Обработка.Финиш", УровеньЖурналаРегистрации.Информация);
КонецПроцедуры

Способ 3: запуск обработки через планировщик Windows

Если конфигурацию менять нельзя, а подсистемы БСП в ней нет, остаётся внешний запуск: планировщик задач Windows стартует 1С в пакетном режиме с параметром /Execute, указывающим на файл обработки.

Пример команды для пакетного файла:

"C:\Program Files\1cv8\8.3.22.1750\bin\1cv8.exe" ENTERPRISE /F"D:\Bases\Trade" /N"Robot" /P"пароль" /Execute"D:\Scripts\myobrabotka.epf" /DisableStartupDialogs

Такой запуск создаёт обычный клиентский сеанс: обработка выполняется в режиме предприятия, формы недоступны только если код их не открывает. Минус подхода — нужен запущенный сервер или компьютер с включённой учётной записью, а пароль пользователя хранится в открытом виде либо требует настройки защищённого хранения. Для клиент-серверной базы вместо /F используют /S"Сервер\ИмяБазы".

Сравнение способов запуска

Дополнительные отчеты и обработки (БСП)

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

Общий модуль + регламентное задание

Максимальная надёжность и контроль, работает на сервере без сеанса. Ограничение: требуется изменение конфигурации.

Планировщик Windows + /Execute

Работает без изменения конфигурации и без БСП. Ограничение: нужен запущенный ПК, сеанс пользователя, пароль в скрипте.

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

Расписание регламентного задания задаётся в стандартном диалоге: периодичность (ежедневно, еженедельно, ежемесячно), время начала, интервал повторения в течение дня, дни недели. Для частых запусков (например, каждые 10 минут) задайте «Повторять каждые» в секундах и укажите время окончания повторений, чтобы задание не крутилось круглосуточно без необходимости.

Обратите внимание на свойства задания, влияющие на поведение при сбоях:

  • Ключ — запрещает параллельный запуск заданий с одинаковым ключом; полезно, чтобы не было дублей.
  • Интервал повтора при аварийном завершении и Количество повторов — определяют, будет ли платформа перезапускать упавшее задание.
  • Использование — снятый флажок полностью отключает задание.

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

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

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

Второй источник — журнал регистрации: фильтруйте по событию вашего задания или по записям, которые код пишет через ЗаписьЖурналаРегистрации. Рекомендуется явно логировать старт, успешное завершение и ошибки с подробным описанием — иначе «молчаливый» сбой можно не заметить неделями.

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

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

Состояние задания в консоли
Норма

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

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

«Ошибка», «Заблокировано» или дата запуска устарела

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

Записи о старте и успешном завершении за каждый запуск

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

Записи об ошибках или полное отсутствие записей

Прикладной результат
Норма

Данные изменились/созданы ожидаемые документы, отчеты

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

Данные не изменились, хотя задание «выполнено»

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

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

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

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

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

Можно ли передать параметры в обработку при запуске регламентным заданием?

Напрямую параметры в метод регламентного задания не передаются. Обходные пути: храните настройки в константе или регистре сведений и читайте их внутри кода, либо создайте несколько заданий с разными методами-обёртками. В подсистеме БСП команда дополнительной обработки получает структуру параметров выполнения, но её состав фиксирован платформой подсистемы.

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

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

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

В консоли «Регламентные и фоновые задания» выделите задание и нажмите «Выполнить сейчас». Альтернатива — вызвать метод программно через РегламентныеЗадания.НайтиПоУникальномуИдентификатору() с последующим созданием фонового задания, но кнопка в консоли проще и не требует кода.

Работает ли расписание дополнительных обработок в файловой базе?

Работает только при открытом сеансе 1С, в котором разрешено выполнение регламентных заданий. Если все пользователи закрыли программу, задания не выполняются. Для ночных запусков оставьте запущенный сеанс под отдельным пользователем или используйте планировщик Windows.

Как отключить задание, не удаляя его?

Снимите флажок «Использование» в консоли регламентных заданий или в свойствах задания в конфигураторе (тогда потребуется обновление конфигурации). Задание останется в списке, настройки расписания сохранятся, и его можно включить обратно в любой момент.

Что делать, если задание зависает и блокирует другие?

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

Итог

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

Регламентное задание вызывает только серверный код конфигурации. Файл обработки подключайте через «Дополнительные отчеты и обработки» (в типовых) либо переносите логику в общий модуль; запасной вариант — планировщик Windows с пакетным запуском. Уберите из кода всё интерактивное, назначьте заданию пользователя с правами, логируйте выполнение и проверяйте результат в консоли заданий и журнале регистрации.