При организации автоматического выполнения регулярных процедур в 1С (выгрузка данных, рассылка отчетов, забор информации из внешних систем) разработчики и администраторы часто сталкиваются с выбором инструмента: использовать штатные регламентные задания 1С или задействовать Планировщик заданий Windows (Task Scheduler). Разберем особенности, преимущества и подходы к реализации каждого из вариантов.
При выборе инструмента запуска в первую очередь проанализируем архитектуру информационной базы:
rphost согласно заданному расписанию. В этом режиме подходят оба варианта, однако у каждого из них есть свои технические нюансы.Рассмотрим плюсы использования системного планировщика задач операционной системы:
usr83), от имени которой будет запускаться процесс тонкого или толстого клиента 1С. Это важно при работе с сетевыми каталогами и внешними файловыми ресурсами.rphost зависшее задание может удерживать ресурсы или вызывать сбои в кластере.К минусам внешнего планировщика относятся необходимость установки клиентской части 1С на сервере задач, расход клиентской лицензии 1С на время сеанса и необходимость повторной настройки заданий при переезде на новую виртуальную машину или другой сервер.
Штатный механизм 1С имеет свои плюсы:
Однако при работе со штатным механизмом нужно учитывать ограничения среды выполнения: фоновые задания выполняются на сервере в неинтерактивном режиме под служебной учетной записью. Если алгоритм требует отключения защиты от опасных действий или взаимодействия с COM-объектами, вызов в контексте встроенного регламентного задания может потребовать дополнительной настройки.
Частая задача регламентных процедур — сбор данных из других баз 1С с помощью компонента V83.COMConnector. Проанализируем пример кода подключения к другой информационной базе:
Подключение = Новый COMОбъект("V83.COMConnector");
ПараметрыПодключения = "Srvr=""Server1C"";Ref=""BaseName"";usr=""Admin"";pwd=""123"";";
Попытка
ВнешнееСоединение = Подключение.Connect(ПараметрыПодключения);
Исключение
ЗаписьЖурналаРегистрации("Ошибка подключения COM", УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
КонецПопытки;
При выполнении этого кода в фоновом задании на стороне 64-разрядного сервера 1С могут возникнуть проблемы совместимости разрядностей:
Новый COMОбъект() приведет к ошибке.comcntr.dll соответствующей разрядности в системе через утилиту regsvr32. Установка полноценного клиента 1С на сервере приложений в этом случае не требуется.COMConnector из 64-битного процесса сервера, потребуется настройка приложения COM+ (через компонент dllhost.exe в Windows).Выясним, какой вариант выгрузки и выполнения регламентных задач выбрать в конкретных условиях:
rphost, целесообразно использовать запуск через планировщик Windows или переходить на современные веб-технологии (REST API, HTTP-сервисы), которые избавляют от зависимости от COM-компонентов и разрядности операционной системы.