При переходе с клиент-серверного варианта на файловый или при создании нового регламентного задания в файловой базе 1С:Бухгалтерия 8.3 разработчики часто сталкиваются с нестабильным поведением: вручную по кнопке Выполнить сейчас задание отрабатывает без ошибок, однако по расписанию запускается с задержками либо не срабатывает вовсе. Разберем архитектурные особенности файлового режима и выясним, как настроить надежный запуск фоновых задач.
Проанализируем основные технические ограничения платформы 1С:Предприятие 8.3 при работе с базой данных формата 1CD:
Чтобы регламентные задания не запускались на рабочих местах случайных пользователей и не зависели от их действий, настроим разделение сеансов с помощью специальных ключей командной строки.
Для выделенного сеанса (например, запущенного на сервере или служебном ПК) добавим параметр:
/AllowExecuteScheduledJobs -Force
Для всех остальных пользователей в строке запуска укажем запрет на выполнение регламентных заданий:
/AllowExecuteScheduledJobs -Off
Посмотрим на пример полной строки запуска для выделенного служебного сеанса 1С:
"C:\Program Files\1cv8\common\1cestart.exe" ENTERPRISE /F "C:\Bases\Accounting" /N "SchedulerUser" /P "Password123" /AllowExecuteScheduledJobs -Force
Рассмотрим вариант, при котором нет необходимости постоянно держать открытым окно программы 1С на рабочем столе. Публикация базы на веб-сервере (IIS или Apache) позволяет модулю расширения веб-сервера самостоятельно обрабатывать очередь заданий в пуле рабочих процессов.
Разберем по шагам настройку конфигурационного файла публикации default.vrd:
default.vrd присутствовал соответствующий параметр:
<point xmlns="http://v8.1c.ru/8.2/virtual-resource-system"
base="/Accounting"
ib="File="C:\Bases\Accounting";"
allowExecuteScheduledJobs="true">
</point>
Если требуется гарантированный запуск конкретной процедуры в строго определенное время, оптимальным решением является использование планировщика задач Windows (Task Scheduler) в связке с запуском внешней обработки.
Создадим задачу в планировщике Windows со следующей командой запуска в пакетном режиме:
"C:\Program Files\1cv8\common\1cestart.exe" ENTERPRISE /F "C:\Bases\Accounting" /N "Admin" /P "Pass" /Execute "C:\Scripts\RunTask.epf" /DisableStartupMessages
Параметр /DisableStartupMessages предотвращает появление модальных окон при старте программы, что гарантирует непрерывную работу задачи в автоматическом режиме.
Проанализируем состояние очереди фоновых заданий в программе. Для этого перейдем в раздел Администрирование > Обслуживание > Регламентные и фоновые задания. Если в списке присутствуют зависшие процессы или задания с длительными блокировками, снимем их выполнение и выполним перезапуск сеанса 1С.