Многие администраторы систем на базе 1С:Предприятие 8.3 сталкиваются с ситуацией, когда стандартная процедура подготовки базы к обслуживанию (например, для выгрузки бэкапа) перестает работать привычным образом. Вы устанавливаете в консоли администрирования флаг «Блокировка регламентных заданий включена», но в списке активных сеансов продолжают плодиться фоновые процессы. Это не только мешает монопольному доступу, но и создает нагрузку на сервер в тот момент, когда он должен «отдыхать».
В этой статье мы подробно разберем, почему так происходит в современных версиях платформы (8.3.22, 8.3.24, 8.3.25), и какие шаги необходимо предпринять, чтобы гарантированно остановить выполнение всех заданий.
Прежде всего, давайте проанализируем разницу между типами заданий, так как это корень многих заблуждений. В 1С существует два тесно связанных, но разных понятия:
Важно понимать: не каждое фоное задание является регламентным. Если пользователь нажал кнопку «Сформировать отчет» и отчет формируется в фоне, то блокировка регламентных заданий на него не подействует. Также существуют системные процессы самой платформы, которые могут игнорировать этот флаг. Рассмотрим ситуацию подробнее.
Проанализируем техническую составляющую последних релизов платформы. Начиная с веток 8.3.23 и выше, архитектура взаимодействия между менеджером кластера и рабочими процессами rphost претерпела изменения. Часто возникает ситуация «рассинхрона»: вы установили галочку в консоли (MMC-оснастке), но команда не дошла до конкретного рабочего процесса или не была зафиксирована в файле конфигурации кластера srvribrg.lst.
В этом случае рабочие процессы продолжают использовать старую копию настроек и запускать задания по расписанию. Выясним, как с этим бороться. Опытным путем установлено, что в таких случаях помогает только перезапуск службы Агента сервера 1С. Это заставляет систему заново перечитать все файлы настроек кластера.
Одной из самых частых причин «неубиваемых» фоновых заданий является механизм полнотекстового поиска. Даже если вы заблокировали регламентные задания, платформа может инициировать служебные сеансы для индексации данных или проверки целостности индекса. Эти процессы часто маскируются под обычные фоновые задания.
Чтобы полностью остановить активность, выполним следующие действия в самой базе (через «Функции для технического специалиста» или программно):
Только после отключения самого механизма индексации фоновые задания этого типа перестанут создаваться «как из ружья».
Рассмотрим правильный алгоритм блокировки базы для проведения регламентных работ. Использование только флага «Блокировка регламентных заданий» часто недостаточно. Для гарантированного результата необходимо использовать Код разрешения.
Разберем по шагам, как это сделать правильно:
BackupPass).Зачем нужен код разрешения? Если он установлен, платформа блокирует любые новые соединения, которые не содержат этого ключа. Это касается и внешних источников данных, и COM-соединений, и системных фоновых процессов. Без кода разрешения некоторые механизмы платформы могут считать себя «легитимными» для входа в базу.
Если ручное удаление сеансов в консоли не помогает (они тут же появляются снова), попробуем подойти к вопросу программно. Рассмотрим пример кода, который можно использовать во внешней обработке для принудительного завершения фоновых заданий перед установкой блокировки.
// Получаем все активные фоновые задания базы
Задания = ФоновыеЗадания.ПолучитьФоновыеЗадания();
Для Каждого Задание Из Задания Цикл
Если Задание.Состояние = СостояниеФоновогоЗадания.Активно Тогда
Попытка
// Пытаемся отменить выполнение
Задание.Отменить();
Сообщить("Задание " + Задание.Наименование + " отменено.");
Исключение
Сообщить("Не удалось отменить задание: " + ИнформацияОбОшибке().Описание);
КонецПопытки;
КонецЕсли;
КонецЦикла;
Этот метод позволяет более адресно воздействовать на процессы, запущенные через механизм ФоновыеЗадания. Однако помните, что для его выполнения у вас должен быть активный сеанс, который сам может быть заблокирован, если вы уже установили запрет на вход. Для удобного интерактивного управления такими процессами без написания кода подойдёт обработка для мониторинга и отмены регламентных и фоновых заданий.
Как отметили участники обсуждения, в новых версиях платформы визуально изменилось окно свойств базы. Если вы заметили, что настройки не сохраняются или ведут себя странно, попробуйте применить настройки через утилиту администрирования серверов, запущенную от имени администратора. Иногда проблема кроется в правах доступа службы 1С к каталогу srvinfo, где хранятся настройки. Если служба не может записать изменения в файл, блокировка фактически не включается, хотя визуально галочка в консоли стоит. Для проверки параметров баз и признака блокировки непосредственно в файлах каталога кластера можно использовать инструмент для считывания настроек баз из файлов кластера srvinfo.
Если вы столкнулись с тем, что блокировка не работает, выполните действия в следующей последовательности:
КодРазрешения.1C:Enterprise 8.3 Server Agent. Это радикальный, но самый действенный метод очистки памяти рабочих процессов от «зависших» заданий.Помните, что стабильность работы планировщика заданий часто зависит от конкретного релиза. Если проблема повторяется регулярно, рассмотрите возможность обновления платформы до последнего патча в рамках вашей ветки (например, переход с .2106 на более свежий билд 8.3.22).