К статье
Практический материал

Администрирование · 13 мин

Монопольный режим в 1С: как включить, снять и решить проблемы

Как включить монопольный режим в 1С: через конфигуратор, код, параметр запуска. Что делать, если режим не устанавливается, и какие операции его требуют.

Монопольный режим в 1С — это состояние информационной базы, при котором с ней работает только один сеанс, а все остальные пользователи и фоновые процессы блокируются. Он нужен для операций, которые меняют структуру базы или требуют гарантированного отсутствия параллельных транзакций: обновления конфигурации, загрузки и выгрузки данных, тестирования и исправления, удаления помеченных объектов.

Чаще всего монопольный режим включают в конфигураторе перед обновлением типовой конфигурации. Однако есть и другие способы: программная установка через встроенный язык, параметр командной строки, а также механизм «Завершение работы пользователей» в типовых конфигурациях. Выбор зависит от того, файловая у вас база или клиент-серверная, и от того, кто сейчас работает в системе.

Главная сложность — не само включение, а то, что режим не устанавливается, пока в базе есть активные сеансы, фоновые задания или соединения. Ниже разберём все способы, типичные причины отказа и безопасный порядок действий.

Что такое монопольный режим и когда он нужен

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

Операции, для которых монопольный режим обязателен или настоятельно рекомендуется:

  • обновление конфигурации базы данных (изменение структуры метаданных);
  • загрузка и выгрузка информационной базы через файлы .dt;
  • тестирование и исправление информационной базы;
  • удаление помеченных объектов (в типовых конфигурациях требует монопольного доступа);
  • массовые обработки данных, которые нельзя прерывать на середине.

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

Способ 1. Через конфигуратор

Самый распространённый сценарий — обновление конфигурации через конфигуратор. Здесь монопольный режим устанавливается автоматически, но только если в базе нет других активных сеансов.

Порядок действий:

  1. Попросите всех пользователей выйти из программы. Проверить активные сеансы можно в консоли кластера (для серверной базы) или через «Администрирование — Активные пользователи» в типовой конфигурации.
  2. Откройте конфигуратор и выполните нужную операцию: «Конфигурация — Обновить конфигурацию базы данных» или «Администрирование — Загрузить информационную базу».
  3. При запуске обновления платформа сама попытается установить монопольный режим. Если сеансов нет — операция начнётся сразу.
  4. Если появится сообщение «Ошибка установки монопольного режима» — значит, кто-то ещё подключён к базе.

Для файловой базы есть нюанс: конфигуратор сам является сеансом, и монопольный доступ означает, что кроме этого конфигуратора к файлу базы никто не подключён. Даже свёрнутый сеанс 1С:Предприятия на чьём-то компьютере помешает установке режима.

Порядок действий в конфигураторе
  1. 1
    Завершите все сеансы пользователей и фоновые задания
  2. 2
    Откройте базу в конфигураторе под учётной записью администратора
  3. 3
    Запустите обновление конфигурации базы данных или загрузку .dt
  4. 4
    Дождитесь завершения операции и закройте конфигуратор
  5. 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С, найдите свою базу и посмотрите список сеансов и соединений. Зависшие сеансы можно удалить принудительно. Для файловой базы список активных пользователей виден в конфигураторе: «Администрирование — Активные пользователи».

Отдельный случай — регламентные задания. Даже если пользователей нет, фоновое задание может стартовать по расписанию и сорвать установку режима. Перед обслуживанием базы отключите выполнение регламентных заданий (в консоли кластера — свойство базы «Блокировка регламентных заданий»).

Маршрут решения

Как выбрать действие

Ошибка монопольного режима, база клиент-сервернаяОткройте консоль кластера, проверьте сеансы и соединения, завершите лишние, включите блокировку регламентных заданий
Ошибка монопольного режима, база файловаяПроверьте «Администрирование — Активные пользователи» в конфигураторе, попросите всех выйти, убедитесь, что не запущено фоновых заданий
Сеансов нет, но режим не ставитсяПроверьте COM-соединения, открытые внешними программами, и веб-сервисы, опубликованные для этой базы
Нужно обновление ночью без присутствияИспользуйте пакетный запуск конфигуратора с /UpdateDBCfg и предварительной блокировкой сеансов в консоли кластера

Риски и безопасная работа

Монопольный режим сам по себе безопасен, но операции, которые под ним выполняются, могут необратимо изменить данные. Перед обновлением конфигурации, загрузкой .dt или тестированием и исправлением обязательно сделайте резервную копию: для файловой базы — выгрузку в .dt или копию файла 1Cv8.1CD, для серверной — средствами СУБД.

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

Если монопольный режим был установлен программно, убедитесь, что код снимает его даже при ошибке — иначе база останется заблокированной. Для этого снятие режима помещают в обработку исключений или выполняют вручную после инцидента.

Типичные ошибки
01
Обновление конфигурации без резервной копии — при сбое реструктуризации данные можно потерять безвозвратно
02
Попытка установить монопольный режим при работающих регламентных заданиях — операция обрывается на середине
03
Принудительное завершение процесса 1С во время обновления базы — риск повреждения структуры данных
04
Забытый включённый монопольный режим или блокировка сеансов — пользователи не могут войти в базу после окончания работ
05
Выполнение операций под пользователем без права «Монопольный режим» — ошибка нарушения прав доступа

Проверка результата

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

  • при попытке входа другого пользователя появляется сообщение о блокировке базы;
  • функция МонопольныйРежим() возвращает Истина;
  • в списке активных пользователей виден только ваш сеанс.

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

Контрольные точки

Как проверить результат

Вход второго пользователя
Норма

Появляется сообщение о блокировке базы

Тревожный признак

Пользователь входит свободно — монопольный режим не установлен

Функция МонопольныйРежим()
Норма

Возвращает Истина

Тревожный признак

Возвращает Ложь — режим не установлен или уже снят

После окончания работ
Норма

Пользователи входят в базу без сообщений о блокировке

Тревожный признак

Сообщение о блокировке осталось — снимите режим или блокировку сеансов

Итог

Что важно запомнить

Монопольный режим включается конфигуратором автоматически, программно методом УстановитьМонопольныйРежим(Истина) или через блокировку сеансов. Он не установится, пока есть активные сеансы, фоновые задания или внешние соединения. Перед обслуживанием базы всегда делайте резервную копию, а после — снимайте режим и проверяйте доступ пользователей.

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

Как снять монопольный режим, если сеанс администратора завершился аварийно?

Обычно монопольный режим сбрасывается автоматически при закрытии последнего сеанса. Если база осталась заблокированной, проверьте, не установлена ли блокировка сеансов в консоли кластера (снимите флаг в свойствах базы) или в константах типовой конфигурации — зайдите в базу и отключите блокировку работы пользователей.

Можно ли работать в базе, пока включён монопольный режим?

Может работать только тот единственный сеанс, который установил режим. Все остальные пользователи при попытке входа получат отказ. Поэтому монопольный режим включают только на время обслуживания базы.

Почему монопольный режим не устанавливается, хотя все пользователи вышли?

Чаще всего мешают фоновые или регламентные задания, зависшие сеансы на сервере или внешние соединения (COM, веб-сервисы). Проверьте список сеансов и соединений в консоли кластера и включите блокировку регламентных заданий на время работ.

Нужен ли монопольный режим для удаления помеченных объектов?

В типовых конфигурациях удаление помеченных объектов требует монопольного доступа, так как операция проверяет ссылки по всей базе. Если пользователи работают, обработка предложит завершить их сеансы или выполнит только частичное удаление.

Чем монопольный режим отличается от блокировки сеансов?

Монопольный режим — жёсткое состояние базы с одним сеансом, необходимое для обновления конфигурации. Блокировка сеансов — прикладной механизм, который не пускает новых пользователей, но не гарантирует монопольности. Для обновления конфигурации базы данных блокировки сеансов недостаточно.

Какие права нужны для установки монопольного режима?

У пользователя должно быть административное право «Монопольный режим», а для работы в конфигураторе и обновления конфигурации — соответствующие административные права. Обычно эти права входят в роль с полными правами.