Как запретить запуск регламентных заданий на сервере 1С и навести порядок в фоновых процессах

· 10 мин

Содержание

Блокировку фоновых заданий в клиент-серверной 1С включают в свойствах информационной базы: откройте консоль администрирования серверов 1С, раскройте Кластер → Информационные базы, вызовите свойства нужной базы и поставьте флаг «Блокировка регламентных заданий включена». После записи менеджер кластера перестаёт запускать регламентные задания этой базы, а пользователи продолжают работать как обычно. Тот же флаг ставится из командной строки утилитой rac — это удобно для скриптов.

Типичная ситуация: администратор развернул копию рабочей базы для тестов, и через час контрагенты получили дубли писем, а в обмен с сайтом ушли тестовые заказы. Копия просто унаследовала расписание рабочей базы. Именно для таких случаев и нужна блокировка, и включать её стоит до первого входа в копию.

Как устроены регламентные и фоновые задания в 1С

Сначала о терминах, потому что от них зависит, что именно вы блокируете.

  • 🕒 Регламентное задание — объект метаданных с расписанием: загрузка курсов валют, обмен данными, обновление полнотекстового индекса, отправка почты. Его запускает сама платформа по расписанию.
  • ⚙️ Фоновое задание — процесс, который выполняет код на сервере без окна пользователя. Каждое регламентное задание в момент запуска тоже превращается в фоновое. Но фоновые задания запускает и прикладной код: формирование тяжёлого отчёта, закрытие месяца , длительные операции в типовых конфигурациях.

Кто их запускает, зависит от режима работы базы:

Режим базыКто запускает регламентные заданияЧем блокировать
Клиент-серверныйМенеджер кластера (процесс rmngr), без участия пользователейФлаг в свойствах базы в кластере или rac
ФайловыйКлиентский сеанс, открытый в базеФлага нет: отключают использование отдельных заданий в самой базе

В клиент-серверном варианте задания работают внутри рабочих процессов rphost и в консоли видны как сеансы с приложением «Фоновое задание». Каждый такой сеанс занимает соединение и память рабочего процесса, поэтому при десятке заданий с минутным расписанием нагрузка заметна даже ночью.

Флаг в кластере запрещает именно регламентные задания. Фоновые задания, которые запускает пользователь из формы (например, длительное формирование отчёта), продолжают работать. Если нужно остановить и их, понадобится блокировка начала сеансов или завершение конкретных сеансов.

Включение блокировки регламентных заданий в консоли кластера

Для изменения свойств базы нужны права администратора кластера (если он задан) и логин с паролем администратора самой информационной базы.

  1. Запустите «Администрирование серверов 1С Предприятия» на компьютере, где установлены средства администрирования.
  2. Раскройте дерево: Центральные серверы 1С:Предприятия 8.3 → <имя сервера> → Кластеры → <кластер> → Информационные базы.
  3. Щёлкните правой кнопкой по нужной базе и выберите Свойства.
  4. Если кластер защищён, введите логин и пароль администратора кластера, затем — администратора информационной базы.
  5. Установите флаг «Блокировка регламентных заданий включена».
  6. Нажмите ОК, чтобы записать изменения.

Снимается блокировка тем же путём — флаг убирают и снова нажимают ОК.

Что происходит после включения:

  • ✅ новые запуски регламентных заданий этой базы прекращаются;
  • ✅ остальные базы кластера работают по своим расписаниям;
  • ⏳ уже выполняющиеся задания доводятся до конца, флаг их не прерывает;
  • 👥 пользователи входят и работают без ограничений.

В том же окне свойств есть соседний блок «Блокировка начала сеансов включена» с периодом, сообщением и кодом разрешения. Их легко перепутать. Блокировка сеансов закрывает вход людям, а блокировка регламентных заданий — только автоматический запуск по расписанию. Перед обновлением конфигурации обычно включают обе.

Если консоль не открывает свойства базы и пишет об ошибке подключения, проверьте, зарегистрирована ли библиотека консоли под ту же версию платформы, что и сервер. Консоль одной версии с сервером другой версии работает нестабильно. Перерегистрация выполняется командой regsvr32 "C:\Program Files\1cv8\<версия>\bin\radmin.dll" от имени администратора.

Блокировка заданий из командной строки через rac

Когда базу копируют по расписанию (например, ночная выгрузка рабочей базы в тестовую), руками ставить флаг неудобно. Консольная утилита rac делает то же самое и встраивается в скрипт. Она работает через сервер администрирования ras, который должен быть запущен на сервере 1С (по умолчанию порт 1545).

Последовательность такая:

  1. Узнайте идентификатор кластера: rac cluster list.
  2. Найдите идентификатор базы: rac infobase --cluster=<uuid_кластера> summary list.
  3. Включите блокировку командой infobase update с параметром --scheduled-jobs-deny=on.

Пример bat-файла для Windows:

@echo off
set RAC="C:\Program Files\1cv8\8.3.24.1548\bin\rac.exe"
set CLUSTER=e3f1b2c4-0000-0000-0000-000000000000
set IB=7a9d5e10-0000-0000-0000-000000000000

rem Включить блокировку регламентных заданий
%RAC% infobase --cluster=%CLUSTER% update --infobase=%IB% ^
  --infobase-user="Администратор" --infobase-pwd="пароль" ^
  --scheduled-jobs-deny=on

rem Проверить результат: в выводе scheduled-jobs-deny : on
%RAC% infobase --cluster=%CLUSTER% info --infobase=%IB% ^
  --infobase-user="Администратор" --infobase-pwd="пароль"

Для снятия блокировки замените on на off. Путь к rac.exe и идентификаторы подставьте свои. Если кластер защищён паролем, добавьте параметры --cluster-user и --cluster-pwd. Полный список параметров команды выводит rac help infobase.

Пароль в открытом виде в bat-файле — плохая идея на общем сервере. Храните скрипт в папке с доступом только для учётной записи, под которой он запускается планировщиком Windows.

Отключение и настройка отдельных заданий в базе

Флаг кластера — грубый инструмент: он выключает всё сразу. Часто нужно иное: оставить загрузку курсов валют, но запретить обмен с сайтом. Это делается внутри базы.

В типовых конфигурациях на БСП (Бухгалтерия 3.0, ЗУП 3.1, УТ 11, ERP) путь такой: Администрирование → Обслуживание → Регламентные операции → Регламентные и фоновые задания. В списке видно каждое задание, его расписание, время последнего запуска и результат.

Как выключить одно задание

  1. Откройте список регламентных заданий по пути выше.
  2. Двойным щелчком откройте нужное задание.
  3. Снимите флаг «Включено».
  4. Нажмите Записать и закрыть.

Задание остаётся в списке, но платформа его больше не запускает. В файловой базе это единственный штатный способ остановить конкретное задание.

Что настраивают в расписании

ПараметрЗачем менять
Дни недели и месяцыПеренести тяжёлую операцию на выходные
Время начала и окончанияНе пускать задание в рабочие часы
Повторять через N секундРеже опрашивать почту или внешний сервис
Пауза при повтореСнизить частоту запусков, если задание выполняется долго
Завершать послеПрервать задание, если оно не уложилось в окно

Отдельно у задания задают число повторов и интервал при аварийном завершении. Если обмен падает из-за недоступности внешнего сервиса, два-три повтора с интервалом в несколько минут обычно спасают ночную загрузку без вмешательства администратора.

Обновление полнотекстового индекса и пересчёт итогов лучше развести по времени с ночными обменами. Когда все тяжёлые задания стартуют в 02:00, они конкурируют за диски и блокировки данных, и каждое идёт дольше.

Защита копии базы от работы с внешними ресурсами

Конфигурации на свежих редакциях БСП сами замечают, что база переехала: изменилась строка соединения или имя компьютера. При первом входе в такую копию программа предлагает выбрать, рабочая это база или копия. Если указать, что это копия, задания, работающие с внешними ресурсами (почта, обмены, загрузка с сайтов), остаются заблокированными. Отвечайте на этот вопрос внимательно: ошибочное «это рабочая база» в тестовой копии возвращает все обмены.

Управление заданиями из кода 1С

Программно задания включают и выключают тремя способами — от простого к низкоуровневому.

Флаг «Использование» у регламентного задания

Код выполняется на сервере в привилегированном режиме или под пользователем с правами администратора:

&НаСервере
Процедура ОтключитьРегламентноеЗадание(ИмяЗадания)
	
	Задание = РегламентныеЗадания.НайтиПредопределенное(Метаданные.РегламентныеЗадания[ИмяЗадания]);
	Если Задание = Неопределено Тогда
		Возврат;
	КонецЕсли;
	
	Задание.Использование = Ложь;
	Задание.Записать();
	
КонецПроцедуры

В конфигурациях на БСП напрямую объект лучше не трогать: используйте РегламентныеЗаданияСервер.ИзменитьЗадание, который корректно работает и в модели сервиса.

Ключ фонового задания вместо самодельных блокировок

Чтобы одна длительная операция не запустилась дважды, передайте ключ третьим параметром ФоновыеЗадания.Выполнить:

Параметры = Новый Массив;
Параметры.Добавить(Организация);

ФоновыеЗадания.Выполнить("ОбменДаннымиСервер.ВыполнитьОбмен", Параметры, "Обмен_" + Строка(Организация.УникальныйИдентификатор()));

Пока активно задание с таким ключом, повторный запуск с тем же ключом вызовет исключение. Оберните вызов в Попытка … Исключение и покажите пользователю понятное сообщение. Это надёжнее флажков в константах, которые остаются «поднятыми» после аварийного завершения.

Отмена активных фоновых заданий

Отбор = Новый Структура("Состояние", СостояниеФоновогоЗадания.Активно);
Для Каждого Задание Из ФоновыеЗадания.ПолучитьФоновыеЗадания(Отбор) Цикл
	Если СтрНайти(Задание.ИмяМетода, "ПолнотекстовыйПоиск") > 0 Тогда
		Задание.Отменить();
	КонецЕсли;
КонецЦикла;

Метод Отменить() посылает запрос на отмену. Задание остановится не мгновенно, а когда платформа сможет его прервать.

Флаг кластера через COM

Флаг «Блокировка регламентных заданий» из прикладного кода через встроенный язык напрямую не меняется: это свойство базы в кластере. Его ставят через COM-объект V83.COMConnector: подключение к агенту (ConnectAgent), аутентификация в кластере, подключение к рабочему процессу, AddAuthentication с учётными данными базы, поиск базы в GetInfoBases(), установка свойства ScheduledJobsDenied = Истина и запись через UpdateInfoBase. Для разовых задач проще вызвать rac из скрипта, как показано выше.

Поиск зависших и заблокированных фоновых заданий

Симптомы обычно такие: обмен не отрабатывает часами, курсы валют не грузятся, в списке заданий статус «Выполняется» висит с прошлой ночи.

Диагностика: выберите симптом

Как завершить сеанс фонового задания

  1. В консоли откройте Информационные базы → <база> → Сеансы.
  2. Отсортируйте по колонке «Приложение» и найдите строки «Фоновое задание».
  3. Сверьте время начала с временем запуска задания из списка в базе.
  4. Правой кнопкой — Удалить, чтобы завершить сеанс.

Завершение сеанса прерывает транзакцию задания. Если это закрытие месяца или загрузка пакета обмена, данные откатятся к состоянию до старта, и задание придётся запускать заново. Пользователей это не затрагивает, но делайте это вне пиковых часов.

Через командную строку то же видно командой rac session --cluster=<uuid> list --infobase=<uuid>: у сеансов фоновых заданий в поле app-id стоит BackgroundJob.

Перезапуск службы агента сервера 1С тоже снимает зависшие задания, но заодно обрывает сеансы всех пользователей всех баз кластера. Это крайняя мера, только в согласованное окно.

Как снизить нагрузку от фоновых заданий на сервер 1С

Когда заданий много, блокировка — временная мера. Постоянное решение — правильно разложить нагрузку.

  • 📅 Разнести расписания. Задания с интервалом в минуту (опрос почты, обмен с сайтом) проверьте в первую очередь: многим хватает 5–15 минут.
  • 🚫 Выключить ненужное. В типовой базе включены задания для подсистем, которыми вы не пользуетесь. Каждое лишнее задание — лишний сеанс.
  • 🖥️ Вынести задания на отдельный рабочий сервер. В кластере из нескольких серверов откройте свойства рабочего сервера, раздел требований назначения функциональности. Для типа объекта «Фоновое задание» задайте «Назначать» на выделенном сервере и «Не назначать» на остальных. Тогда тяжёлые задания не отнимают память у пользовательских процессов.
  • 🧮 Ограничить число баз на процесс. Параметры «Количество ИБ на процесс» и «Количество соединений на процесс» задаются в свойствах рабочего сервера. Для баз с тяжёлыми заданиями отдельный рабочий процесс снижает взаимное влияние.
  • 📊 Следить за длительностью. Если задание из года в год выполняется всё дольше, проблема обычно в росте данных: устаревшие записи регистров, неочищенный журнал регистрации, давно не пересчитанные итоги.

Чек-лист для копии рабочей базы, который стоит выполнять каждый раз:

Перед первым входом в копию базы
Выполнено: 0 / 5

Частые вопросы

Блокирует ли флаг кластера фоновые задания, запущенные пользователем?
Нет. Он запрещает только запуск регламентных заданий по расписанию. Длительные операции, которые пользователь запускает из формы, выполняются как обычно.
Можно ли заблокировать регламентные задания в файловой базе?
Флага кластера в файловом режиме нет. Отключайте нужные задания флагом «Включено» в списке регламентных заданий самой базы.
Нужно ли перезапускать сервер после включения блокировки?
Нет. Изменение вступает в силу сразу после записи свойств базы. Уже работающие задания доработают до конца.
Почему после снятия блокировки задания не запустились сразу?
Каждое задание стартует в ближайшее время по своему расписанию. Если окно запуска на сегодня прошло, задание выполнится в следующий подходящий момент.
Как узнать, включена ли блокировка, без консоли?
Выполните rac infobase --cluster=<uuid> info --infobase=<uuid> с учётными данными базы и найдите в выводе строку scheduled-jobs-deny.