Работа с регламентными заданиями в файловом варианте информационной базы 1С существенно отличается от работы в клиент-серверном режиме. Если в серверном варианте за запуск заданий отвечает менеджер кластера 1С:Предприятия, то в файловой базе этот механизм требует наличия активного клиентского сеанса. Давайте подробно разберем, почему задания могут «застывать», как на это влияют права пользователей и как именно платформа рассчитывает время следующего запуска при сложных настройках расписания.
Для начала проанализируем базовый принцип: в файловой базе нет отдельной службы, которая бы просыпалась по будильнику. Выполнение заданий происходит внутри одного из запущенных сеансов 1С. Рассмотрим основные условия, которые должны соблюдаться для успешного старта:
БлокировкаРегламентныхЗаданийУстановлена.Выясним причину, по которой смена прав или создание нового администратора может «сломать» привычную работу обменов. В конфигурациях на базе БСП (Библиотеки стандартных подсистем), таких как 1С:Розница 2.x, настройки регламентного задания часто привязаны к конкретному пользователю информационной базы.
Когда мы создаем нового администратора и ограничиваем права старому, важно проверить настройки самого регламентного задания. Рассмотрим подробнее механизм назначения исполнителя. В форме настройки регламентного задания (которую можно найти через «Обслуживание» — «Регламентные операции») есть поле Пользователь.
Если это поле пустое, платформа пытается запустить задание от имени первого попавшегося пользователя, у которого достаточно прав. Однако в типовых решениях (Розница, УТ 11, ERP) для процессов обмена данными часто требуется строго определенный пользователь с полными правами. Если вы создали нового администратора, выполните следующие шаги:
Пользователь указан именно ваш новый администратор с актуальными правами.Проанализируем ситуацию, когда задание «зависло». В файловой базе это случается, если процесс обмена завершился аварийно, но отметка о выполнении в таблице фоновых заданий не обновилась. В таком случае система считает, что задание все еще выполняется, и не запускает новое по расписанию. Решением здесь будет перезагрузка сеанса или программная очистка списка фоновых заданий.
Теперь разберем важный теоретический и практический вопрос: как взаимодействуют параметры Повторять через (интервал) и Пауза. Это часто вызывает путаницу у администраторов.
Рассмотрим пример из практики: В настройках указано: «Повторять через 600 секунд (10 минут)» и «Пауза 540 секунд (9 минут)». Задание запустилось в 00:00:00 и выполнялось 6 минут (завершилось в 00:06:00).
Выясним, когда произойдет следующий запуск. Для этого платформа вычисляет два контрольных времени:
Правило платформы: Следующий запуск произойдет в наиболее позднее из этих двух значений. В нашем примере задание запустится в 00:15.
Зачем это нужно? Параметр Пауза является «страховкой». Он гарантирует, что между тяжелыми операциями (например, загрузкой огромного прайс-листа) система всегда будет иметь перерыв для отдыха и выполнения других задач, даже если само выполнение задания затянулось и «съело» весь интервал.
Чтобы не зависеть от того, зашел ли админ в базу, проанализируем лучший способ организации работы — выделенный сеанс. Для этого можно выделить отдельный компьютер (или сервер) и запустить на нем 1С с определенными параметрами.
Используем ключ запуска командной строки:
/DoScheduledJobs
При таком запуске сеанс будет работать в режиме «выполнителя» регламентных заданий. Рассмотрим пример строки запуска для ярлыка:
"C:\Program Files\1cv8\common\1cestart.exe" ENTERPRISE /F "C:\Bases\Retail" /N "RobotAdmin" /P "Pass123" /DoScheduledJobs
В этом случае под пользователем RobotAdmin постоянно будет висеть активное окно 1С, которое раз в минуту будет инициировать все запланированные обмены. Это наиболее стабильный вариант для файловых баз 1С:Розница в магазинах.
Если вы столкнулись с тем, что регламентные операции прекратились, пройдем по шагам:
1cv8.exe. Иногда завершение сеанса пользователем не убивает фоновый поток обмена.1Cv8.cdn, а активных пользователей нет — удалите его. Этот файл отвечает за блокировку регламентных заданий.Предупреждение() или открыть форму, в фоновом режиме это вызовет ошибку, и задание «упадет». В регламентных заданиях допустим только серверный код без обращения к интерфейсу.Таким образом, для стабильной работы регламентных заданий в 1С:Розница (файловая версия) мы рекомендуем всегда жестко прописывать служебного пользователя в настройках задания и использовать выделенный сеанс с ключом /DoScheduledJobs. Это исключит влияние человеческого фактора при смене паролей или прав доступа администраторов.