Работа с регламентными заданиями в файловом варианте информационной базы 1С всегда сопряжена с рядом технических особенностей. В отличие от клиент-серверного варианта, где за расписание отвечает менеджер кластера, в файловой базе выполнение заданий ложится на плечи активных пользовательских сеансов. Рассмотрим подробно, почему возникают ситуации, когда консоль заданий рапортует об успехе, а реальных действий в системе не происходит, и разберем по шагам, как добиться стабильной работы планировщика.
Для начала проанализируем, как вообще запускаются регламентные задания (РЗ) в файловой базе 1Cv8.1CD. Поскольку отдельного серверного процесса нет, платформа инициирует выполнение РЗ в контексте одного из запущенных клиентских приложений. В современных конфигурациях на базе Библиотеки стандартных подсистем (БСП), к которым относится и 1С:Бухгалтерия 3.0, этот механизм автоматизирован, но он крайне чувствителен к состоянию сеанса пользователя.
Выясним причину, по которой задание может "пропускаться". Главное условие — в базе должен быть хотя бы один активный пользователь. Однако, как показывает практика, простого присутствия пользователя в программе недостаточно. Разберем факторы, блокирующие выполнение.
Рассмотрим ситуацию: пользователь работает в базе, но в какой-то момент на экране появляется модальное окно. Это может быть вопрос системы "Завершить работу?", предупреждение об ошибке или окно выбора файла. В файловом режиме, если у пользователя, чей сеанс выбран системой в качестве "исполнителя", открыто модальное окно, выполнение любых фоновых процессов в этом сеансе полностью приостанавливается.
Проанализируем этот момент подробнее. Программа видит, что время запуска подошло, и пытается инициировать ФоновоеЗадание. Если поток интерфейса занят ожиданием реакции пользователя на модальное окно, задание не сможет стартовать. При этом в консоли заданий иногда может отобразиться статус "Выполнено", если менеджер заданий успел создать запись о намерении запуска, но сам программный код внутри задания так и не был исполнен из-за блокировки потока.
Рекомендация: Для стабильной работы РЗ выделите отдельный компьютер или виртуальную машину, где 1С будет запущена под специальным технологическим пользователем (например, с именем Robot). В этом сеансе не должны открываться никакие формы, кроме главной, и никто не должен работать в нем интерактивно.
В конфигурациях на управляемых формах предусмотрены специальные настройки для управления регламентными операциями. Разберем, как проверить и настроить "дежурный" сеанс:
Если мы используем выделенный сеанс, полезно убедиться, что в коде конфигурации или через настройки БСП не задан конкретный идентификатор сеанса, которому разрешено выполнять задания. По умолчанию БСП пытается распределить нагрузку, но в файловом режиме лучше "привязать" выполнение к стабильному источнику.
Поскольку файловая база — это физический файл на диске, любые манипуляции с этим файлом со стороны операционной системы могут вызвать сбой в планировщике. Проанализируем типичные сценарии:
1Cv8.1CD. Если в этот момент МенеджерЗаданий пытается сделать запись о старте РЗ, операция сорвется.Чтобы исключить эти факторы, добавим папку с информационной базой в исключения антивируса и отключим любые системы синхронизации для активной базы.
Если в консоли заданий мы видим успешное выполнение, а в ЖурналеРегистрации записей нет, значит, ошибка происходит на этапе инициализации задания. Посмотрим на пример того, как можно программно добавить запись в журнал в самом начале выполнения кода задания, чтобы понять, доходит ли управление до вашего модуля:
Процедура ВыполнитьМоеЗадание() Экспорт
// Записываем событие начала для диагностики
ЗаписьЖурналаРегистрации("РегламентноеЗадание.МоеЗадание",
УровеньЖурналаРегистрации.Информация, , ,
"Старт выполнения задания в " + ТекущаяДата());
Попытка
// Основная логика задания
ВыполнитьПолезнуюРаботу();
Исключение
ЗаписьЖурналаРегистрации("РегламентноеЗадание.МоеЗадание",
УровеньЖурналаРегистрации.Ошибка, , ,
ОписаниеОшибки());
КонецПопытки;
КонецПроцедуры
Если после добавления этого кода записи в ЖурналРегистрации все равно отсутствуют, значит, проблема лежит на уровне платформы или настроек прав доступа пользователя, под которым запущено задание. Проверьте, что у пользователя достаточно прав на запись в каталог базы данных и в системные папки временных файлов.
Иногда файловая 1С "считает", что задание уже выполняется, хотя сеанс был аварийно завершен. В папке с базой могут оставаться файлы блокировок (*.lcl, *.lck). Проанализируем ситуацию: если база "думает", что предыдущая итерация задания еще активна, новая не запустится.
Для решения этой проблемы выполним следующие действия:
1cv8.exe.ФоновыхЗаданий.Подводя итог, разберем краткий чек-лист для исправления ситуации:
1. Выделенный сеанс: Запустите отдельный экземпляр 1С на сервере или постоянно включенном ПК под специальным пользователем.
2. Режим "Анти-сон": Настройте электропитание так, чтобы компьютер никогда не уходил в спящий режим и не отключал сетевую карту.
3. Отсутствие диалогов: Убедитесь, что в коде регламентного задания и при запуске системы для этого пользователя нет вызовов Предупреждение() или иных интерактивных методов.
4. Контроль Журнала регистрации: Ориентируйтесь только на записи в журнале, а не на статус в консоли заданий. Статус в консоли в файловом режиме может быть ложноположительным.
5. Исключения безопасности: Настройте антивирус и проверьте права доступа к файлу базы.
Соблюдение этих правил позволит превратить нестабильный механизм файловых регламентных заданий в надежный инструмент автоматизации вашего учета.