Как лучше запускать регламентные задания в 1С: через встроенный планировщик или планировщик Windows?

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

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

Тип информационной базы: файловый и серверный режим

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

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

Преимущества и недостатки запуска через планировщик Windows

Рассмотрим плюсы использования системного планировщика задач операционной системы:

  1. Явное управление правами операционной системы. Можно четко задать учетную запись ОС (например, usr83), от имени которой будет запускаться процесс тонкого или толстого клиента 1С. Это важно при работе с сетевыми каталогами и внешними файловыми ресурсами.
  2. Защита от запуска в копиях базы. При разворачивании тестовых или технологических копий баз данных встроенные регламентные задания 1С могут автоматически стартовать и начать отправлять реальные письма или обновлять данные в сторонних системах. Внешнее задание Windows жестко привязано к конкретному скрипту или параметрам запуска и не сработает в копии базы на другом сервере.
  3. Жесткий контроль таймаутов и ресурсов. Если логика 1С зависнет (например, при ожиданиях внешнего сокета или HTTP-запроса), планировщик Windows позволяет принудительно завершить застрявший процесс по таймауту. Внутри рабочей нити rphost зависшее задание может удерживать ресурсы или вызывать сбои в кластере.
  4. Изоляция от рабочего процесса кластера. Выполнение тяжелой задачи в отдельном клиенте предохраняет рабочий процесс 1С от критических ошибок памяти или сбоев внешних компонентов.

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

Преимущества и особенности встроенного планировщика 1С

Штатный механизм 1С имеет свои плюсы:

  1. Централизованное управление расписанием непосредственно из пользовательского интерфейса или конфигуратора без привлечения системного администратора.
  2. Отсутствие необходимости устанавливать толстый или тонкий клиент 1С на сервере приложений.
  3. Сохранение всех настроек расписания при переносе информационной базы или создании новых узлов распределенной базы.

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

Особенности работы с COM-соединениями в регламентных заданиях

Частая задача регламентных процедур — сбор данных из других баз 1С с помощью компонента V83.COMConnector. Проанализируем пример кода подключения к другой информационной базе:


Подключение = Новый COMОбъект("V83.COMConnector");
ПараметрыПодключения = "Srvr=""Server1C"";Ref=""BaseName"";usr=""Admin"";pwd=""123"";";
Попытка
    ВнешнееСоединение = Подключение.Connect(ПараметрыПодключения);
Исключение
    ЗаписьЖурналаРегистрации("Ошибка подключения COM", УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
КонецПопытки;

При выполнении этого кода в фоновом задании на стороне 64-разрядного сервера 1С могут возникнуть проблемы совместимости разрядностей:

  1. Если сервер 1С 64-битный, а внешняя компонента или COM-объект 32-битные, прямое создание объекта Новый COMОбъект() приведет к ошибке.
  2. Для успешной работы 64-битного сервера 1С с 64-битным COM-соединением достаточно зарегистрировать DLL-библиотеку comcntr.dll соответствующей разрядности в системе через утилиту regsvr32. Установка полноценного клиента 1С на сервере приложений в этом случае не требуется.
  3. Если необходимо использовать 32-битный COMConnector из 64-битного процесса сервера, потребуется настройка приложения COM+ (через компонент dllhost.exe в Windows).

Рекомендации по выбору решения

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

  1. Для файловых баз всегда используем запуск клиента 1С через планировщик Windows.
  2. Для клиент-серверных баз при выполнении внутренних расчетных задач, перепроведения документов или фонового обновления агрегатов лучше использовать штатный механизм регламентных заданий 1С.
  3. Если регламентная задача взаимодействует с внешними COM-объектами, нестабильным оборудованием или требует жесткой изоляции от основного процесса rphost, целесообразно использовать запуск через планировщик Windows или переходить на современные веб-технологии (REST API, HTTP-сервисы), которые избавляют от зависимости от COM-компонентов и разрядности операционной системы.
← На главную