Остановка регламентных и фоновых заданий перед обновлением базы 1С:Предприятие
Содержание
Чтобы отключить фоновые задания 1С при обновлении клиент-серверной базы, откройте консоль администрирования серверов, зайдите в свойства информационной базы и включите флажок Блокировка регламентных заданий включена. Новые регламентные задания перестанут стартовать. Уже запущенные доработают сами — их нужно дождаться или завершить сеансы с приложением «Фоновое задание», а затем включить блокировку начала сеансов с кодом разрешения.
В файловой базе отдельного флажка нет. Регламентные задания там выполняет один из клиентских сеансов, поэтому достаточно, чтобы все пользователи вышли из программы, а сам администратор запускал 1С с параметром /AllowExecuteScheduledJobs -Off.
Зачем останавливать задания перед обновлением 1С Предприятие
Обновление конфигурации с изменением структуры требует монопольного доступа к базе. Любой живой сеанс мешает его получить, и фоновое задание — тоже сеанс. Пользователей видно и их можно попросить выйти. Фоновые задания запускаются по расписанию сами и часто незаметно.
Что обычно работает в фоне типовой конфигурации:
- 🔄 обмены данными с другими базами и сайтом;
- 📨 получение и отправка документов ЭДО, загрузка выписок банка;
- 💱 загрузка курсов валют и классификаторов;
- 🔎 обновление полнотекстового индекса и агрегатов;
- ⚙️ отложенные обработчики обновления от прошлого релиза.
Если такое задание стартует в середине обновления, вы получите одно из трёх: отказ в монопольном режиме, зависшую реструктуризацию или задание, которое записало данные по старой структуре и упало после обновления.
Есть и два разных механизма блокировки, их часто путают:
| Что блокируем | Что происходит | Что НЕ происходит |
|---|---|---|
| Регламентные задания | Новые задания по расписанию не запускаются | Уже работающие задания не прерываются |
| Начало сеансов | Новые пользователи не могут войти без кода разрешения | Открытые сеансы не закрываются |
Поэтому полная остановка — это всегда связка: блокировка заданий, блокировка сеансов, завершение оставшихся сеансов.
Как увидеть, какие фоновые процессы сейчас работают
Начните с диагностики. Если задание прямо сейчас загружает пакет обмена на 40 минут, лучше дождаться его, чем обрывать.
В консоли кластера. Раскройте Информационные базы → <ваша база> → Сеансы. В колонке «Приложение» ищите строки «Фоновое задание». У каждого такого сеанса видно время начала и рабочий процесс.
Через rac. Если консоль недоступна или серверов несколько, используйте утилиту rac (нужна запущенная служба ras):
rac cluster list
rac infobase summary list --cluster=<uuid_кластера>
rac session list --cluster=<uuid_кластера> --infobase=<uuid_базы>
В выводе rac session list у фоновых заданий в поле app-id стоит BackgroundJob. Так их легко отфильтровать скриптом.
В самой программе. В конфигурациях на БСП (Бухгалтерия 3.0, ЗУП 3.1, УТ 11, ERP) откройте Администрирование → Обслуживание → Регламентные операции → Регламентные и фоновые задания. На вкладке фоновых заданий видно, что выполняется сейчас, с каким состоянием и когда началось.
В Конфигураторе. Пункт Администрирование → Активные пользователи покажет все сеансы, включая фоновые. Этот способ подходит и для файловой базы.
Перед обновлением загляните ещё и в расписание: если через 15 минут стартует ночной обмен, начните с блокировки, а не с диагностики.
Отключение регламентных заданий из интерфейса программы
Этот способ подходит, когда нет доступа к консоли кластера, а также для файловых баз. Он работает на уровне конфигурации, а не платформы.
Выключить отдельные задания
- Откройте
Администрирование → Обслуживание → Регламентные операции → Регламентные и фоновые задания. - На вкладке регламентных заданий отберите задания с включённым использованием.
- Откройте карточку нужного задания и снимите флажок «Включено». Запишите.
- Выпишите себе, какие задания вы выключили. После обновления их придётся включить обратно вручную.
Минус способа очевиден: в типовой Бухгалтерии десятки регламентных заданий, и выключать их по одному долго. Плюс — точечность: можно остановить только обмены, а курсы валют оставить.
Заблокировать работу пользователей
В той же группе настроек Администрирование → Обслуживание есть форма блокировки работы пользователей. В ней задают время начала и окончания блокировки, сообщение для пользователей и код разрешения. В клиент-серверном варианте программа попросит логин и пароль администратора кластера, если он задан, — блокировку она ставит через сервер.
Через минуту-две после установки блокировки программа сама предлагает пользователям сохранить данные и выйти, а затем завершает их сеансы.
Остановить работающее фоновое задание
На вкладке фоновых заданий выделите задание в состоянии «Активно» и отмените его командой из панели формы. Отмена — мягкая: задание получает сигнал и завершается, когда дойдёт до точки проверки. Длинный обмен может «отменяться» несколько минут.
Прерванный обмен данными придётся повторить после обновления. Сообщения, загруженные наполовину, обычно переотправляются автоматически при следующем сеансе обмена, но проверьте это на своей схеме обмена.
Блокировка фоновых заданий через консоль кластера 1С
Для клиент-серверной базы это основной и самый надёжный способ. Он не зависит от конфигурации и действует на все задания сразу.
- Запустите «Администрирование серверов 1С Предприятия».
- Раскройте кластер, затем
Информационные базы, щёлкните правой кнопкой по базе и откройтеСвойства. - Введите имя и пароль администратора информационной базы.
- Установите флажок
Блокировка регламентных заданий включена. Нажмите «ОК». - Подождите, пока завершатся работающие фоновые задания. Проверяйте ветку
Сеансы. - Снова откройте свойства и включите
Блокировка начала сеансов включена. Заполните сообщение, время и полеКод разрешения— например,upd77. - Завершите оставшиеся сеансы: в ветке
Сеансывыделите их и удалите.
Удаление сеанса обрывает работу пользователя без сохранения данных. Делайте это после предупреждения и в согласованное окно — вечером или в выходной.
Код разрешения — главный приём администратора. Сеансы запрещены всем, кроме того, кто знает код. Конфигуратор с ним запускается так:
"C:\Program Files\1cv8\8.3.24.1586\bin\1cv8.exe" DESIGNER /S"srv1c\buh" /N"Администратор" /P"пароль" /UC"upd77"
Путь к 1cv8.exe подставьте свой, номер платформы в нём должен совпадать с установленной на сервере.
Если фоновое задание не завершается и после удаления сеанса, значит, оно висит в рабочем процессе. Перезапуск рабочего процесса или службы агента сервера оборвёт сеансы всех баз на этом сервере, а не только вашей. Делайте это только в окно обслуживания и предупредив пользователей соседних баз.
Задания SQL Server и внешние планировщики
Регламентные задания 1С — не единственное, что может трогать базу ночью. На стороне СУБД и Windows обычно живут собственные расписания, и они тоже мешают обновлению.
Что проверить:
- 🗄️ задания SQL Server Agent: резервное копирование , перестроение индексов, обновление статистики;
- 🐘 для PostgreSQL — задания
cronили таймерыsystemdсpg_dumpиvacuumdb; - 🪟 задачи Планировщика Windows, которые запускают обработки 1С или обмены через COM-соединение.
Перестроение индексов во время реструктуризации — частая причина, по которой обновление «висит» часами. Обе операции блокируют одни и те же таблицы.
Посмотреть и временно выключить задание SQL Server Agent:
-- список заданий агента
EXEC msdb.dbo.sp_help_job;
-- выключить задание на время обновления
EXEC msdb.dbo.sp_update_job @job_name = N'Перестроение индексов buh', @enabled = 0;
-- кто ещё подключён к базе на уровне СУБД
SELECT session_id, login_name, host_name, program_name, status
FROM sys.dm_exec_sessions
WHERE database_id = DB_ID(N'buh');
После обновления верните задание командой с @enabled = 1.
Задачу Планировщика Windows отключают так:
schtasks /Change /TN "Обмен УТ-БП" /Disable
Не правьте служебные таблицы 1С в базе SQL напрямую, чтобы отключить регламентные задания. Платформа хранит их в своём формате, и ручная правка может испортить базу. Изменение данных средствами СУБД в обход платформы к тому же нарушает условия лицензионного соглашения 1С. Регламентные задания отключайте только средствами платформы.
Резервную копию средствами СУБД сделайте вручную непосредственно перед обновлением — после того как остановили задания и выгнали сеансы. Тогда копия будет согласованной.
Скрипт: отключение фоновых заданий при обновлении автоматически
Если базу обновляют ночью по расписанию или баз много, блокировки ставят через rac infobase update. У команды есть параметры именно под эту задачу:
--scheduled-jobs-deny=on|off— блокировка регламентных заданий;--sessions-deny=on|off— блокировка начала сеансов;--denied-from,--denied-to— период блокировки;--denied-message— сообщение пользователям;--permission-code— код разрешения.
Пример bat-файла для одной базы:
@echo off
set RAC="C:\Program Files\1cv8\8.3.24.1586\bin\rac.exe"
set CLUSTER=<uuid_кластера>
set IB=<uuid_базы>
set IBUSER=Администратор
set IBPWD=пароль
rem 1. Запрет регламентных заданий
%RAC% infobase update --cluster=%CLUSTER% --infobase=%IB% ^
--infobase-user=%IBUSER% --infobase-pwd=%IBPWD% --scheduled-jobs-deny=on
rem 2. Пауза, чтобы доработали текущие задания
timeout /t 300
rem 3. Запрет начала сеансов с кодом разрешения
%RAC% infobase update --cluster=%CLUSTER% --infobase=%IB% ^
--infobase-user=%IBUSER% --infobase-pwd=%IBPWD% ^
--sessions-deny=on --permission-code=upd77 ^
--denied-message="Обновление программы, работа будет доступна с 06:00"
rem 4. Дальше: завершение сеансов, резервная копия, обновление
Завершение оставшихся сеансов скрипт делает через rac session list и rac session terminate --cluster=... --session=<uuid> для каждого найденного сеанса этой базы. Если кластер защищён паролем, к командам добавьте --cluster-user и --cluster-pwd. Полный список параметров смотрите в rac help infobase и rac help session.
Само обновление в том же скрипте запускают пакетным Конфигуратором с кодом разрешения: /UC"upd77", а затем /UpdateDBCfg для применения изменений к структуре базы. Лог пишите через /Out"C:\logs\upd.log" — утром по нему видно, на каком шаге всё остановилось.
После обновления: вернуть регламентные задания
Это шаг, который забывают чаще всего. Сделайте его в обратном порядке:
- Снимите блокировку начала сеансов — в консоли или
--sessions-deny=off. - Зайдите в программу пользователем с полными правами и дождитесь окончания основного обновления данных.
- Снимите блокировку регламентных заданий —
--scheduled-jobs-deny=off. - Включите обратно задания SQL Agent и Планировщика Windows.
- Если выключали регламентные задания по одному в интерфейсе — включите их по своему списку.
Третий шаг особенно важен для конфигураций на БСП. Часть обработчиков обновления выполняется отложенно — регламентным заданием, уже после входа пользователей. Пока задания заблокированы, дополнительная обработка данных стоит на месте. Ход проверяйте в Администрирование → Обслуживание по ссылке на результаты обновления программы.
Если задания мешают обновлению: частые ситуации
Частые вопросы
Блокировка начала сеансов останавливает регламентные задания?
Нужно ли отключать задания при обновлении без изменения структуры базы?
Как отключить регламентные задания в файловой базе?
/AllowExecuteScheduledJobs -Off, а на время обновления выведите из базы всех пользователей.