Администрирование · 12 мин
Как отключить фоновые задания при обновлении 1С
Как отключить фоновые и регламентные задания при обновлении 1С: блокировка сеансов, консоль заданий, внешние обработки, проверка результата и типичные ошибки администратора.
Фоновые задания — одна из главных причин неудачных обновлений конфигурации 1С. Пока регламентное задание удерживает сеанс с информационной базой, конфигуратор не может получить монопольный доступ, а обновление либо не запускается, либо прерывается с ошибкой. Поэтому перед обновлением фоновые процессы нужно корректно остановить, а после обновления — не забыть включить обратно.
Способ отключения зависит от режима работы базы: в файловом варианте фоновые задания выполняет отдельный процесс клиентского приложения, а в клиент-серверном — рабочие процессы сервера 1С. Ниже разобраны оба сценария, а также варианты с блокировкой на уровне кластера и через внешние обработки.
Важно понимать разницу между регламентными и фоновыми заданиями: регламентное задание — это расписание, а фоновое — конкретный запущенный экземпляр. Отключать нужно и то, и другое: иначе уже запущенные фоновые задания продолжат работу даже после отключения расписаний.
Почему фоновые задания мешают обновлению
Обновление конфигурации базы данных в 1С требует монопольного режима: платформа должна гарантировать, что ни один сеанс не обращается к изменяемым таблицам. Фоновое задание — это полноценный сеанс, который держит соединение с базой и может выполнять длительные операции: обмен данными, расчёт итогов, загрузку курсов валют, полнотекстовое индексирование.
Если в момент обновления активен фоновый сеанс, возникают типичные ошибки: «Ошибка разделения доступа к базе данных», «Конфликт блокировок при выполнении транзакции» или бесконечное ожидание монопольного режима. В клиент-серверном варианте ситуация усугубляется тем, что фоновые задания стартуют автоматически по расписанию — даже если всех пользователей выгнали, задание может запуститься прямо во время обновления.
Отдельный риск — обновление на стороне СУБД. Реструктуризация таблиц при активных фоновых транзакциях может привести к взаимоблокировкам на уровне MS SQL или PostgreSQL, и тогда придётся принудительно снимать сессии уже средствами СУБД.
Подготовка: что сделать до отключения заданий
Перед любыми действиями сделайте резервную копию: для файловой базы — скопируйте файл 1Cv8.1CD, для клиент-серверной — выполните выгрузку в dt или штатный бэкап средствами СУБД. Это единственная гарантия отката, если обновление пойдёт не по плану.
Далее зафиксируйте текущее состояние заданий: какие регламентные задания включены, какие выполняются прямо сейчас. Это пригодится после обновления — вы сможете проверить, что всё вернулось в исходное состояние. Удобно сделать скриншот консоли заданий или выгрузить список.
Предупредите пользователей о времени работ и завершите их сеансы. Хотя пользовательские сеансы и фоновые задания блокируются по-разному, обновление всё равно потребует полной монопольности.
- 1Сделайте резервную копию базы (dt, копия файла или бэкап СУБД)
- 2Зафиксируйте список активных регламентных и фоновых заданий
- 3Завершите сеансы пользователей
- 4Отключите регламентные задания и дождитесь завершения фоновых
- 5Убедитесь в отсутствии активных сеансов и запустите обновление
Отключение заданий в клиент-серверном варианте
Самый надёжный способ — блокировка на уровне кластера серверов 1С. Откройте консоль администрирования серверов, найдите нужную информационную базу и откройте её свойства. Установите флажок «Блокировка регламентных заданий включена». С этого момента сервер перестанет запускать новые регламентные и фоновые задания для этой базы.
Обратите внимание: блокировка не прерывает уже выполняющиеся задания. Их нужно либо дождаться, либо завершить принудительно — в той же консоли, на вкладке «Сеансы», найдите сеансы с типом «Фоновое задание» и удалите их. Перед удалением убедитесь, что задание не выполняет критичную операцию записи.
Дополнительно можно установить блокировку начала сеансов с сообщением для пользователей — тогда никто не зайдёт в базу во время обновления. После завершения работ оба флажка снимаются.
Отключение заданий в файловом варианте
В файловой базе нет кластера, поэтому управление заданиями выполняется из самой базы. Если конфигурация построена на Библиотеке стандартных подсистем (БСП), откройте раздел «Администрирование» → «Обслуживание» → «Регламентные операции» (в разных конфигурациях путь может отличаться) и отключите выполнение регламентных заданий.
Универсальный вариант — внешняя обработка «Консоль заданий» (входит в состав инструментов разработчика и доступна в типовых поставках БСП). Она показывает все регламентные задания, позволяет отключить их одной кнопкой и видит активные фоновые задания с возможностью отмены.
Если под рукой нет обработки, задания можно отключить программно через внешнее соединение или в режиме предприятия:
УстановитьМонопольныйРежим(Истина);
Выборка = РегламентныеЗадания.ПолучитьРегламентныеЗадания();
Для Каждого Задание Из Выборка Цикл
Задание.Использование = Ложь;
Задание.Записать();
КонецЦикла;После отключения расписаний проверьте, нет ли запущенных фоновых заданий: в файловом режиме они выполняются процессом, запущенным отдельным экземпляром клиента. Если такой процесс работает — завершите его через консоль заданий или дождитесь окончания.
Проверка, что задания действительно отключены
Недостаточно поставить флажок — нужно убедиться, что ни одно задание не выполняется и не запустится. В клиент-серверном режиме откройте список сеансов в консоли кластера и отфильтруйте по типу «Фоновое задание»: список должен быть пуст. Подождите несколько минут и обновите список — если по расписанию должно было стартовать задание, а оно не появилось, блокировка работает.
В файловом режиме контролируйте журнал регистрации: там фиксируются события запуска и завершения фоновых заданий. Отсутствие новых записей о запуске — признак того, что задания отключены.
Как проверить результат
Нет сеансов с типом «Фоновое задание»
Фоновые сеансы появляются после блокировки — проверьте другой кластер или внешний запуск
Включена блокировка регламентных заданий
Флажок сброшен или база зарегистрирована в другом кластере
Нет новых событий запуска фоновых заданий
Задания стартуют — расписания не отключены
Конфигуратор устанавливает монопольный доступ сразу
Ошибка разделения доступа — остались активные сеансы
Включение заданий после обновления
После успешного обновления конфигурации базы данных снимите блокировки в обратном порядке: сначала убедитесь, что обновление завершилось полностью (включая отложенные обработчики обновления данных), затем снимите блокировку регламентных заданий в свойствах базы на кластере или включите использование заданий обратно в файловой базе.
Особое внимание — отложенным обработчикам обновления. В типовых конфигурациях они выполняются как раз фоновыми заданиями, и если забыть включить задания, база останется в состоянии незавершённого обновления: пользователи могут работать, но часть данных не будет обработана. Проверить статус можно в разделе «Результаты обновления программы» (в конфигурациях на БСП).
Финальный шаг — сверить список включённых заданий со снимком, сделанным до обновления, и убедиться в журнале регистрации, что задания выполняются без ошибок. Некоторые задания после обновления могут падать из-за изменений в конфигурации — такие ошибки нужно разбирать отдельно.
Альтернативные подходы и ограничения
Если база обновляется регулярно, ручные действия имеет смысл автоматизировать. В скриптах пакетного обновления обычно используют связку: установка блокировки сеансов и заданий через RAS (утилита администрирования кластера) или через COM-коннектор с кодом на встроенном языке, затем запуск конфигуратора в пакетном режиме с параметром обновления конфигурации базы данных.
Для баз на БСП есть механизм «Блокировка работы пользователей» (обработка, входящая в библиотеку): она устанавливает константу блокировки сеансов и заодно приостанавливает регламентные задания. Это удобно, когда администрирование ведётся из интерфейса предприятия без доступа к консоли кластера.
Ограничение всех программных способов: они работают, только если база доступна и нет монопольной блокировки со стороны других процессов. Если база уже заблокирована зависшим сеансом, сначала придётся снять зависшие сеансы на уровне кластера или СУБД.
Сравнение способов отключения
Самый надёжный для клиент-серверного режима; требует доступа к консоли администрирования и прав администратора кластера
Универсально для файлового режима и работы из предприятия; не блокирует запуск со стороны сервера, только отключает расписания
Подходит для автоматизации в скриптах; требует аккуратности — нужно сохранить исходное состояние заданий для обратного включения
Удобно из интерфейса, блокирует и сеансы, и задания; работает только в конфигурациях на базе БСП
Частые вопросы
Обновление зависло на этапе «ожидание монопольного режима» — что делать?
Откройте список сеансов (консоль кластера или консоль заданий) и найдите активные фоновые задания и пользовательские сеансы. Завершите их, предварительно убедившись, что задания не выполняют критичную запись. Если сеанс не удаляется, завершите соответствующий рабочий процесс rphost на сервере — это крайняя мера, после неё желательно проверить целостность данных.
Нужно ли отключать фоновые задания при обновлении платформы, а не конфигурации?
Обновление платформы само по себе не меняет структуру базы, но после смены версии обычно требуется обновление конфигурации базы данных, а оно уже требует монопольности. Поэтому практика та же: остановить задания, обновить, запустить обновление конфигурации БД, включить задания обратно.
Как отключить задания, если нет доступа к консоли кластера?
Используйте программный способ: через COM-соединение или тонкий клиент с кодом, отключающим использование регламентных заданий, либо обработку «Блокировка работы пользователей» в конфигурациях на БСП. Учтите, что без блокировки на уровне кластера уже запущенные фоновые задания придётся ждать или отменять через консоль заданий.
После обновления регламентные задания не запускаются, хотя блокировка снята. В чём причина?
Проверьте три вещи: снят ли флажок блокировки в свойствах базы на кластере, включено ли использование у самих регламентных заданий (могли отключить кодом и забыть вернуть) и не завершились ли задания аварийно — смотрите ошибки в журнале регистрации. Также убедитесь, что завершились отложенные обработчики обновления — до их окончания часть механизмов может быть заблокирована.
Опасно ли принудительно завершать фоновое задание?
Зависит от того, что оно делает. Задания чтения (формирование отчёта, индексация) прерывать относительно безопасно. Задания записи — обмены, проведение документов, закрытие периода — при обрыве могут оставить незавершённые транзакции и рассинхронизацию данных. Если сомневаетесь, дождитесь завершения или сделайте резервную копию перед принудительной отменой.
Можно ли обновлять конфигурацию без отключения заданий, если они короткие?
Теоретически обновление может пройти, если в момент реструктуризации ни одно задание не активно. На практике полагаться на случай нельзя: задание может стартовать по расписанию в любую секунду. Правильный подход — заблокировать запуск заданий на время обновления, это занимает пару минут и исключает риск конфликта блокировок.
Что важно запомнить
Перед обновлением 1С сделайте копию базы, заблокируйте регламентные задания на уровне кластера (или отключите их в файловой базе) и дождитесь завершения активных фоновых заданий. После обновления снимите блокировку, убедитесь в завершении отложенных обработчиков и проверьте, что задания снова выполняются без ошибок.