Как установить монопольный режим в базе 1С v8.3 (Интерактивно и Кодом)
Суть монопольного режима и причины блокировок
Монопольный режим (Exclusive Mode) — это состояние базы данных 1С, при котором доступ к ней имеет только один сеанс (администратора или фонового задания). Все остальные попытки подключения отвергаются сервером. Этот режим критически необходим для выполнения структурных изменений базы. Если в базе висит хотя бы один зависший сеанс или фоновое задание, попытка монопольной блокировки выдаст ошибку: «Ошибка разделенного доступа к базе данных / Ошибка блокировки (существуют активные сеансы)». Бизнес-риски: невозможность обновить конфигурацию (особенно измененную ИБ), провал регламентных операций, невозможность удалить помеченные объекты.
Операции, жестко требующие монопольного режима
| Операция в 1С | Где выполняется | Последствия прерывания |
|---|---|---|
| Обновление конфигурации БД | Конфигуратор (F7) | Сбой структуры таблиц (требует восстановления из бэкапа). |
| Тестирование и исправление (ТИИ) | Конфигуратор | Прерывание может оставить базу в неконсистентном состоянии. |
| Удаление помеченных объектов | Пользовательский режим | Безопасно (просто не удалит связанные объекты). |
Способы установки и принудительного освобождения базы
Сценарий 1: Интерактивная блокировка (Консоль кластера)
Самый надежный способ выгнать всех пользователей и отключить фоновые задания на сервере.
- Откройте консоль «Администрирование серверов 1С Предприятия».
- Откройте свойства вашей Информационной Базы (ИБ).
- Установите флажки «Блокировка начала сеансов включена» и «Блокировка регламентных заданий включена».
- Задайте код разрешения (любое слово, например,
12345). Сохраните (Применить). - В ветке "Сеансы" этой ИБ принудительно удалите (Удалить / Delete) все оставшиеся сеансы, кроме своего текущего конфигуратора.
- В параметрах запуска Конфигуратора (или ярлыка) пропишите ключ:
/UC 12345(чтобы войти самому).
Сценарий 2: Установка кодом (Встроенный язык 1С)
Используется при написании обработок обмена или обслуживания.
// Попытка установить монопольный режим
Попытка
УстановитьМонопольныйРежим(Истина);
Сообщить("Монопольный режим успешно установлен!");
// ... выполнение критичного кода ...
УстановитьМонопольныйРежим(Ложь);
Исключение
Сообщить("Не удалось заблокировать базу: " + ОписаниеОшибки());
КонецПопытки;Типовые ошибки администраторов
- Игнорирование фоновых заданий: Часто администраторы выкидывают пользователей, но забывают поставить галочку «Блокировка регламентных заданий». В ту же секунду сервер запускает фоновое задание, и база снова не монопольна.
- Зависшие COM-соединения: Обмены (например, с сайтом или другой базой 1С) устанавливают COM/V83.Application соединения. В консоли кластера они выглядят как фоновые процессы и также блокируют базу.
Автоматизация рутинных задач — ключ к стабильности. Разработчики ITSTM настроят CI/CD контуры и скрипты (через OneScript), которые будут автоматически устанавливать блокировки, безопасно завершать сеансы пользователей (с предупреждением) и обновлять 1С ночью без участия человека.
Частые вопросы (FAQ)
В чем разница между 'Блокировка сеансов' и 'Монопольный режим'?
Блокировка сеансов (в консоли) запрещает НОВЫМ пользователям входить в базу. Монопольный режим — это состояние конкретного сеанса (например, Конфигуратора), подтверждающее, что ВООБЩЕ ДРУГИХ сеансов в данный момент нет.
Как зайти в базу, если я сам заблокировал её с кодом разрешения?
В командной строке запуска 1С (или в дополнительных параметрах ярлыка) добавьте параметр: /UC КлючБлокировки (например, /UC 123). Для веб-клиента к URL добавляется ?uc=123.
Функция УстановитьМонопольныйРежим(Истина) выкидывает пользователей?
Нет! Она только ПРОВЕРЯЕТ, один ли вы в базе. Если есть хоть один другой сеанс, функция вызовет Исключение. Для выкидывания пользователей нужны другие механизмы (БлокировкаУстановкиСоединений и ЗавершитьРаботуСистемы).
Почему SQL сервер показывает базу как неактивную, а 1С говорит, что есть сеансы?
1С кэширует сеансы в пуле соединений рабочего процесса (rphost). SQL-сервер не знает о логических сеансах 1С, он видит только пулы TCP-подключений. Смотреть активные сеансы нужно только через Консоль кластера 1С.