Как настроить автоматическое выполнение регламентных заданий в файловой базе 1С:Управление торговлей 10.3?

Программист 1С v8.3 (Обычные формы) 1С:Управление торговлей Торговля и дистрибуция
← На главную

Работа с регламентными заданиями в файловом варианте информационной базы 1С имеет свои специфические особенности, особенно когда речь идет о конфигурациях на обычных формах, таких как Управление торговлей 10.3. В отличие от клиент-серверного варианта, где за выполнение заданий отвечает менеджер заданий на сервере приложений, в файловой базе задания выполняются в контексте одного из активных сеансов. Разберем подробно, как обеспечить стабильную работу этого механизма.

Анализ проблемы и режима совместимости

Для начала проанализируем ситуацию: конфигурация УТ 10.3 обычно работает в режиме совместимости с платформой 8.2.13. Несмотря на то что физически запуск может осуществляться на платформе 8.3, механизмы платформы ведут себя согласно правилам старой версии. В режиме совместимости автоматический запуск фонового процесса для заданий не происходит сам по себе. Нам необходимо либо держать постоянно открытый сеанс определенного пользователя, либо инициировать выполнение заданий программно.

Выясним причину, по которой консоль заданий может выдавать сообщение "Менеджер заданий не активен". В файловом режиме это означает, что в текущем сеансе не запущен цикл обработки очереди заданий. Чтобы "оживить" менеджер, система должна понимать, какой именно сеанс является ответственным за эту работу.

Настройка констант в 1С

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

  1. ПользовательДляВыполненияРегламентныхЗаданийВФайловомВарианте — здесь нужно указать конкретного пользователя (желательно создать отдельного служебного пользователя, например, Робот), под которым будут запускаться задания.
  2. ИнтервалДляОпросаРегламентныхЗаданийВФайловомВарианте — этот параметр определяет, как часто (в секундах) система будет проверять наличие заданий, готовых к выполнению. Проанализируем нагрузку: если база большая, не стоит ставить значение меньше 30–60 секунд, чтобы не вызывать "фризы" интерфейса.

Способ 1: Использование планировщика задач Windows

Рассмотрим наиболее надежный вариант автоматизации — запуск 1С через Планировщик заданий Windows. Это позволяет выполнять ночные обмены или обработку данных без участия человека. Для этого мы создадим задачу, которая запускает 1С с определенными параметрами командной строки.

Рассмотрим пример параметров запуска для планировщика:

"C:\Program Files\1cv8\common\1cestart.exe" ENTERPRISE /F "D:\Bases\Trade" /N "Robot" /P "Password" /Execute "D:\Scripts\Close1C.epf"

В данном примере мы используем параметр /Execute, который запускает внешнюю обработку сразу после входа. В самой обработке в модуле ПриОткрытии можно прописать логику завершения работы после выполнения всех необходимых действий:


Процедура ПриОткрытии()
    // Логика проверки выполнения заданий
    // ...
    ЗавершитьРаботуСистемы(Ложь);
КонецПроцедуры

Способ 2: Программная инициация через метод ВыполнитьОбработкуЗаданий

Разберем ситуацию, когда нам нужно, чтобы любой первый вошедший пользователь становился "хостом" для заданий. Для этого можно использовать метод ВыполнитьОбработкуЗаданий(). Этот метод принудительно запускает проверку очереди регламентных заданий в текущем сеансе.

Посмотрим на пример реализации в модуле обычного приложения. Мы можем подключить обработчик ожидания, который будет периодически "подталкивать" менеджер заданий:


Процедура ПриНачалеРаботыСистемы()
    #Если Клиент Тогда
        ПодключитьОбработчикОжидания("ИнициализироватьРегламентныеЗадания", 60);
    #КонецЕсли
КонецПроцедуры

Процедура ИнициализироватьРегламентныеЗадания() Экспорт
    ВыполнитьОбработкуЗаданий();
КонецПроцедуры

Важный момент: если вы используете этот метод, помните, что нагрузка от фонового задания ляжет на сеанс пользователя. Это может мешать комфортной работе (например, при формировании тяжелых отчетов или обмене данными).

Способ 3: Динамическое назначение ответственного пользователя

Проанализируем идею автоматического переназначения ответственного. Если мы не хотим держать отдельный серверный компьютер для "вечного" сеанса 1С, можно реализовать логику проверки даты в модуле приложения:

  1. При старте системы проверяем значение константы ДатаПоследнегоВыполненияЗаданий.
  2. Если дата меньше текущей, текущий пользователь программно устанавливается в константу ПользовательДляВыполненияРегламентныхЗаданийВФайловомВарианте.
  3. Система начинает выполнять задания в его сеансе.

Однако, как справедливо замечено в обсуждении, лучше запустить еще один сеанс под служебным пользователем через ЗапуститьПриложение(), чтобы основная работа пользователя не замедлялась.

Технические нюансы и ограничения

Разберем по шагам критические факторы, которые могут помешать работе заданий в файловом режиме:

Пример обработки параметра запуска:


Если ПараметрЗапуска = "StartAndClose" Тогда
    ВыполнитьОбработкуЗаданий();
    ЗавершитьРаботуСистемы(Ложь);
КонецЕсли;

Таким образом, комбинируя штатные настройки констант 1С и внешние инструменты автоматизации Windows, мы получаем надежную систему выполнения регламентных операций в файловой УТ 10.3, не требующую постоянного ручного контроля сеансов.

← На главную