Работа с регламентными заданиями в файловом варианте информационной базы 1С имеет свои специфические особенности, особенно когда речь идет о конфигурациях на обычных формах, таких как Управление торговлей 10.3. В отличие от клиент-серверного варианта, где за выполнение заданий отвечает менеджер заданий на сервере приложений, в файловой базе задания выполняются в контексте одного из активных сеансов. Разберем подробно, как обеспечить стабильную работу этого механизма.
Для начала проанализируем ситуацию: конфигурация УТ 10.3 обычно работает в режиме совместимости с платформой 8.2.13. Несмотря на то что физически запуск может осуществляться на платформе 8.3, механизмы платформы ведут себя согласно правилам старой версии. В режиме совместимости автоматический запуск фонового процесса для заданий не происходит сам по себе. Нам необходимо либо держать постоянно открытый сеанс определенного пользователя, либо инициировать выполнение заданий программно.
Выясним причину, по которой консоль заданий может выдавать сообщение "Менеджер заданий не активен". В файловом режиме это означает, что в текущем сеансе не запущен цикл обработки очереди заданий. Чтобы "оживить" менеджер, система должна понимать, какой именно сеанс является ответственным за эту работу.
Прежде всего, необходимо проверить и установить значения системных констант, которые управляют механизмом в файловом режиме. Перейдем к настройкам:
Робот), под которым будут запускаться задания.Рассмотрим наиболее надежный вариант автоматизации — запуск 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, который запускает внешнюю обработку сразу после входа. В самой обработке в модуле ПриОткрытии можно прописать логику завершения работы после выполнения всех необходимых действий:
Процедура ПриОткрытии()
// Логика проверки выполнения заданий
// ...
ЗавершитьРаботуСистемы(Ложь);
КонецПроцедуры
Разберем ситуацию, когда нам нужно, чтобы любой первый вошедший пользователь становился "хостом" для заданий. Для этого можно использовать метод ВыполнитьОбработкуЗаданий(). Этот метод принудительно запускает проверку очереди регламентных заданий в текущем сеансе.
Посмотрим на пример реализации в модуле обычного приложения. Мы можем подключить обработчик ожидания, который будет периодически "подталкивать" менеджер заданий:
Процедура ПриНачалеРаботыСистемы()
#Если Клиент Тогда
ПодключитьОбработчикОжидания("ИнициализироватьРегламентныеЗадания", 60);
#КонецЕсли
КонецПроцедуры
Процедура ИнициализироватьРегламентныеЗадания() Экспорт
ВыполнитьОбработкуЗаданий();
КонецПроцедуры
Важный момент: если вы используете этот метод, помните, что нагрузка от фонового задания ляжет на сеанс пользователя. Это может мешать комфортной работе (например, при формировании тяжелых отчетов или обмене данными).
Проанализируем идею автоматического переназначения ответственного. Если мы не хотим держать отдельный серверный компьютер для "вечного" сеанса 1С, можно реализовать логику проверки даты в модуле приложения:
ДатаПоследнегоВыполненияЗаданий.ПользовательДляВыполненияРегламентныхЗаданийВФайловомВарианте.Однако, как справедливо замечено в обсуждении, лучше запустить еще один сеанс под служебным пользователем через ЗапуститьПриложение(), чтобы основная работа пользователя не замедлялась.
Разберем по шагам критические факторы, которые могут помешать работе заданий в файловом режиме:
1Cv8.1CD могут приводить к тому, что менеджер заданий не сможет стартовать фоновый поток. Старайтесь запускать "служебный сеанс" на том же компьютере, где физически расположены данные./C "DoExchange" в коде 1С можно обработать это через ПараметрЗапуска и выполнить только конкретное действие, после чего закрыть программу.Пример обработки параметра запуска:
Если ПараметрЗапуска = "StartAndClose" Тогда
ВыполнитьОбработкуЗаданий();
ЗавершитьРаботуСистемы(Ложь);
КонецЕсли;
Таким образом, комбинируя штатные настройки констант 1С и внешние инструменты автоматизации Windows, мы получаем надежную систему выполнения регламентных операций в файловой УТ 10.3, не требующую постоянного ручного контроля сеансов.