При переходе на работу с регламентными заданиями в файловом варианте информационной базы часто возникает вопрос: на каком именно компьютере пользователя они выполняются, не дублируются ли фоновые процессы на всех рабочих местах и как правильно распределить нагрузку? Разберем подробно внутреннюю механику платформы 1С:Предприятие и практические способы управления фоновыми задачами в файловом режиме.
В отличие от клиент-серверного варианта (где всеми фоновыми задачами управляет кластер серверов 1С), в файловой базе выполнение заданий ложится на плечи клиентских приложений. Проанализируем ключевые особенности этого механизма:
Право на запуск регламентных заданий не является свойством конфигурации или ролью пользователя в конфигураторе. Это параметр конкретного запущенного клиентского процесса операционной системы. Для управления этим поведением используется специальный ключ запуска /AllowExecuteScheduledJobs.
Рассмотрим возможные значения параметра:
/AllowExecuteScheduledJobs -Off — полностью запрещает текущему клиентскому сеансу брать на себя выполнение регламентных заданий. Рекомендуется прописывать в ярлыках запуска рядовых пользователей./AllowExecuteScheduledJobs -Force — принудительно заставляет текущий сеанс стать исполнителем регламентных заданий. Если в сети последовательно запустить два клиентских сеанса с ключом -Force, право выполнения регламентных операций перейдет к последнему запущенному сеансу с этим параметром.Если выполнение тяжелых заданий (например, обмен данными, загрузка курсов валют, закрытие месяца) происходит на рабочей станции обычного бухгалтера или менеджера, это может приводить к зависанию интерфейса, повышенной нагрузке на процессор ПК и блокировке таблицы базы данных 1Cv8.1CD для остальных пользователей.
Рассмотрим проверенные сценарии для корректной организации регламентных операций в файловой базе:
Разберем по шагам создание отдельного сервисного сеанса на сервере или постоянно включенном компьютере:
"C:\Program Files\1cv8\common\1cestart.exe" ENTERPRISE /F "C:\Bases\MyBase" /N "User" /P "Password" /AllowExecuteScheduledJobs -Off
"C:\Program Files\1cv8\common\1cestart.exe" ENTERPRISE /F "C:\Bases\MyBase" /N "RobotService" /P "ServicePass" /AllowExecuteScheduledJobs -Force
В такой конфигурации обычные пользователи гарантированно освобождаются от фоновой нагрузки, а все задачи централизованно отрабатывают в выделенном процессе 1С.
Если файловая база данных опубликована на веб-сервере (IIS или Apache), регламентные задания могут выполняться самим процессом веб-сервера без необходимости держать открытыми клиентские сеансы толстого или тонкого клиента.
Посмотрим на настройку файла публикации: в файле default.vrd необходимо убедиться в наличии директивы allowExecuteScheduledJobs="true". В этом случае веб-сервер сам берет на себя роль управляющего процесса для выполнения фоновых задач по расписанию.
В случаях, когда встроенный механизм регламентных заданий не подходит из-за специфики инфраструктуры, критичные процедуры выносят в отдельные внешние обработки. Запуск таких обработок настраивается по расписанию планировщика задач с помощью пакетного режима командной строки 1С:
"C:\Program Files\1cv8\common\1cestart.exe" ENTERPRISE /F "C:\Bases\MyBase" /N "Robot" /P "Pass" /Execute "C:\Scripts\TaskHandler.epf" /DisableStartupMessages
Внутри самой обработки после выполнения алгоритма обязательно вызывается метод ЗавершитьРаботуСистемы(), чтобы сеанс автоматически закрылся и освободил файл базы данных.