Администрирование · 13 мин
Монопольный режим в 1С: как включить, снять и решить проблемы
Как включить монопольный режим в 1С: через конфигуратор, код, параметр запуска. Что делать, если режим не устанавливается, и какие операции его требуют.
Монопольный режим в 1С — это состояние информационной базы, при котором с ней работает только один сеанс, а все остальные пользователи и фоновые процессы блокируются. Он нужен для операций, которые меняют структуру базы или требуют гарантированного отсутствия параллельных транзакций: обновления конфигурации, загрузки и выгрузки данных, тестирования и исправления, удаления помеченных объектов.
Чаще всего монопольный режим включают в конфигураторе перед обновлением типовой конфигурации. Однако есть и другие способы: программная установка через встроенный язык, параметр командной строки, а также механизм «Завершение работы пользователей» в типовых конфигурациях. Выбор зависит от того, файловая у вас база или клиент-серверная, и от того, кто сейчас работает в системе.
Главная сложность — не само включение, а то, что режим не устанавливается, пока в базе есть активные сеансы, фоновые задания или соединения. Ниже разберём все способы, типичные причины отказа и безопасный порядок действий.
Что такое монопольный режим и когда он нужен
Монопольный режим гарантирует, что в информационной базе работает ровно один сеанс. Все попытки других пользователей подключиться в этот момент отклоняются с сообщением о том, что база заблокирована. Это защищает структуру данных от конфликтов при массовых изменениях.
Операции, для которых монопольный режим обязателен или настоятельно рекомендуется:
- обновление конфигурации базы данных (изменение структуры метаданных);
- загрузка и выгрузка информационной базы через файлы .dt;
- тестирование и исправление информационной базы;
- удаление помеченных объектов (в типовых конфигурациях требует монопольного доступа);
- массовые обработки данных, которые нельзя прерывать на середине.
Для обычной работы — ввода документов, формирования отчётов — монопольный режим не нужен и вреден: он блокирует работу всех сотрудников. Поэтому включать его следует только на время конкретной операции и обязательно снимать после завершения.
Способ 1. Через конфигуратор
Самый распространённый сценарий — обновление конфигурации через конфигуратор. Здесь монопольный режим устанавливается автоматически, но только если в базе нет других активных сеансов.
Порядок действий:
- Попросите всех пользователей выйти из программы. Проверить активные сеансы можно в консоли кластера (для серверной базы) или через «Администрирование — Активные пользователи» в типовой конфигурации.
- Откройте конфигуратор и выполните нужную операцию: «Конфигурация — Обновить конфигурацию базы данных» или «Администрирование — Загрузить информационную базу».
- При запуске обновления платформа сама попытается установить монопольный режим. Если сеансов нет — операция начнётся сразу.
- Если появится сообщение «Ошибка установки монопольного режима» — значит, кто-то ещё подключён к базе.
Для файловой базы есть нюанс: конфигуратор сам является сеансом, и монопольный доступ означает, что кроме этого конфигуратора к файлу базы никто не подключён. Даже свёрнутый сеанс 1С:Предприятия на чьём-то компьютере помешает установке режима.
- 1Завершите все сеансы пользователей и фоновые задания
- 2Откройте базу в конфигураторе под учётной записью администратора
- 3Запустите обновление конфигурации базы данных или загрузку .dt
- 4Дождитесь завершения операции и закройте конфигуратор
- 5Сообщите пользователям, что работа возобновлена
Способ 2. Программно через встроенный язык
Если нужно установить монопольный режим из кода — например, в обработке обновления или регламентной операции — используются методы глобального контекста.
УстановитьМонопольныйРежим(Истина);
// Проверка текущего состояния
Если МонопольныйРежим() Тогда
Сообщить("Монопольный режим установлен");
КонецЕсли;
// Снятие режима
УстановитьМонопольныйРежим(Ложь);
Метод УстановитьМонопольныйРежим(Истина) вызывает исключение, если в базе есть другие сеансы. Поэтому вызов оборачивают в попытку:
Попытка
УстановитьМонопольныйРежим(Истина);
Исключение
Сообщить("Не удалось установить монопольный режим: в базе есть активные сеансы");
КонецПопытки;
Для выполнения метода у пользователя должно быть право «Монопольный режим» (обычно есть у роли с полными правами). Без этого права вызов завершится ошибкой нарушения прав доступа.
Способ 3. Параметр командной строки
Для автоматизации обслуживания базы (ночные обновления, пакетные выгрузки) удобно запускать 1С с параметрами, которые сразу устанавливают монопольный режим.
Для тонкого или толстого клиента используется параметр /C"МонопольныйРежим" — он передаётся в конфигурацию, и типовые механизмы БСП (библиотека стандартных подсистем) обрабатывают его, устанавливая блокировку сеансов. Пример строки запуска:
"C:\Program Files\1cv8\...\1cv8.exe" ENTERPRISE /F"D:\Bases\Trade" /N"Администратор" /P"пароль" /C"ЗавершитьРаботуПользователей"
Для конфигуратора пакетный запуск с обновлением конфигурации базы данных выглядит так:
1cv8.exe DESIGNER /F"D:\Bases\Trade" /N"Администратор" /P"пароль" /UpdateDBCfg
При выполнении /UpdateDBCfg конфигуратор сам попытается установить монопольный доступ. Если в базе останутся сеансы, пакетная операция завершится с ошибкой, которую нужно отслеживать по коду возврата или файлу журнала (параметр /Out).
Завершение работы пользователей в типовых конфигурациях
В конфигурациях на базе БСП (1С:Бухгалтерия, 1С:Управление торговлей, ERP и другие) есть штатный механизм блокировки сеансов без конфигуратора: «Администрирование — Обслуживание — Блокировка работы пользователей» (в разных версиях название может отличаться: «Завершение работы пользователей»).
Этот механизм работает иначе, чем классический монопольный режим: он устанавливает блокировку сеансов через константу, и пользователи при попытке входа видят сообщение о проведении регламентных работ. Активным пользователям отправляется предупреждение с просьбой завершить работу, а через заданное время их сеансы завершаются принудительно.
Преимущество подхода — администратор может заблокировать базу заранее, не выгоняя людей мгновенно, и установить текст сообщения, который увидят пользователи. После окончания работ блокировку снимают той же кнопкой.
Сравнение способов блокировки
Жёсткая блокировка, только один сеанс. Подходит для обновления конфигурации и загрузки .dt. Требует полного отсутствия других сеансов.
Мягкий вариант: предупреждает пользователей, даёт время на выход. Не подходит для обновления конфигурации базы данных — для него всё равно нужен монопольный доступ.
Для клиент-серверных баз: устанавливается в свойствах базы в консоли серверов 1С. Можно задать дату начала и окончания блокировки, код разрешения для обхода.
Ошибка «не удалось установить монопольный режим»: причины и решение
Самая частая проблема — сообщение «Ошибка исключительной блокировки информационной базы» или «Невозможно установить монопольный режим». Причины почти всегда одни и те же:
- активные сеансы пользователей, в том числе «зависшие» — программа закрыта некорректно, но сеанс на сервере ещё жив;
- фоновые и регламентные задания, выполняющиеся в момент установки режима;
- открытые соединения с базой (например, COM-соединения из внешних программ, веб-сервисы);
- второй открытый конфигуратор той же базы.
Для серверной базы откройте консоль кластера серверов 1С, найдите свою базу и посмотрите список сеансов и соединений. Зависшие сеансы можно удалить принудительно. Для файловой базы список активных пользователей виден в конфигураторе: «Администрирование — Активные пользователи».
Отдельный случай — регламентные задания. Даже если пользователей нет, фоновое задание может стартовать по расписанию и сорвать установку режима. Перед обслуживанием базы отключите выполнение регламентных заданий (в консоли кластера — свойство базы «Блокировка регламентных заданий»).
Как выбрать действие
Риски и безопасная работа
Монопольный режим сам по себе безопасен, но операции, которые под ним выполняются, могут необратимо изменить данные. Перед обновлением конфигурации, загрузкой .dt или тестированием и исправлением обязательно сделайте резервную копию: для файловой базы — выгрузку в .dt или копию файла 1Cv8.1CD, для серверной — средствами СУБД.
Не прерывайте обновление конфигурации базы данных на середине (например, выключением компьютера или завершением процесса). Прерванная реструктуризация может оставить базу в повреждённом состоянии, и восстановление потребует копии.
Если монопольный режим был установлен программно, убедитесь, что код снимает его даже при ошибке — иначе база останется заблокированной. Для этого снятие режима помещают в обработку исключений или выполняют вручную после инцидента.
Проверка результата
После установки монопольного режима убедитесь, что он действительно работает. Признаки успешной установки:
- при попытке входа другого пользователя появляется сообщение о блокировке базы;
- функция
МонопольныйРежим()возвращает Истина; - в списке активных пользователей виден только ваш сеанс.
После завершения работ проверьте обратное: режим снят, блокировка сеансов отключена, пользователи могут войти в базу. Если использовалась блокировка в консоли кластера — снимите флаг и очистите код разрешения, чтобы не оставить скрытую блокировку.
Как проверить результат
Появляется сообщение о блокировке базы
Пользователь входит свободно — монопольный режим не установлен
Возвращает Истина
Возвращает Ложь — режим не установлен или уже снят
Пользователи входят в базу без сообщений о блокировке
Сообщение о блокировке осталось — снимите режим или блокировку сеансов
Что важно запомнить
Монопольный режим включается конфигуратором автоматически, программно методом УстановитьМонопольныйРежим(Истина) или через блокировку сеансов. Он не установится, пока есть активные сеансы, фоновые задания или внешние соединения. Перед обслуживанием базы всегда делайте резервную копию, а после — снимайте режим и проверяйте доступ пользователей.
Частые вопросы
Как снять монопольный режим, если сеанс администратора завершился аварийно?
Обычно монопольный режим сбрасывается автоматически при закрытии последнего сеанса. Если база осталась заблокированной, проверьте, не установлена ли блокировка сеансов в консоли кластера (снимите флаг в свойствах базы) или в константах типовой конфигурации — зайдите в базу и отключите блокировку работы пользователей.
Можно ли работать в базе, пока включён монопольный режим?
Может работать только тот единственный сеанс, который установил режим. Все остальные пользователи при попытке входа получат отказ. Поэтому монопольный режим включают только на время обслуживания базы.
Почему монопольный режим не устанавливается, хотя все пользователи вышли?
Чаще всего мешают фоновые или регламентные задания, зависшие сеансы на сервере или внешние соединения (COM, веб-сервисы). Проверьте список сеансов и соединений в консоли кластера и включите блокировку регламентных заданий на время работ.
Нужен ли монопольный режим для удаления помеченных объектов?
В типовых конфигурациях удаление помеченных объектов требует монопольного доступа, так как операция проверяет ссылки по всей базе. Если пользователи работают, обработка предложит завершить их сеансы или выполнит только частичное удаление.
Чем монопольный режим отличается от блокировки сеансов?
Монопольный режим — жёсткое состояние базы с одним сеансом, необходимое для обновления конфигурации. Блокировка сеансов — прикладной механизм, который не пускает новых пользователей, но не гарантирует монопольности. Для обновления конфигурации базы данных блокировки сеансов недостаточно.
Какие права нужны для установки монопольного режима?
У пользователя должно быть административное право «Монопольный режим», а для работы в конфигураторе и обновления конфигурации — соответствующие административные права. Обычно эти права входят в роль с полными правами.