Администрирование · 8 мин
Монопольный режим в 1С: что это такое и как с ним работать
Что такое монопольный режим в 1С, зачем он нужен, как включить и отключить его в файловой и клиент-серверной базе, а также что делать, если режим не устанавливается.
Монопольный режим в 1С — это состояние информационной базы, при котором с ней работает только один сеанс, а все остальные пользователи отключены или не могут подключиться. Такой режим требуется для операций, которые меняют структуру базы или массово обрабатывают данные: обновление конфигурации, загрузка и выгрузка базы, тестирование и исправление, изменение плана обмена. Без монопольного доступа платформа просто не даст выполнить эти действия и выдаст ошибку «Операция не может быть выполнена в многопользовательском режиме».
На практике чаще всего с монопольным режимом сталкиваются при обновлении конфигурации: мастер обновления просит завершить работу всех пользователей, а если кто-то остался в базе, процесс останавливается. Понимание того, как устанавливается и снимается монопольный доступ, экономит время администратора и снижает риск повреждения данных при обслуживании базы.
Для каких операций требуется монопольный режим
Платформа 1С требует монопольного доступа не ради формальности: перечисленные операции изменяют структуру метаданных или массово перезаписывают данные, и параллельная работа пользователей в этот момент привела бы к конфликтам и повреждению информации. К типовым ситуациям относятся:
- обновление конфигурации базы данных (реструктуризация таблиц);
- загрузка конфигурации из файла и объединение конфигураций;
- выгрузка и загрузка информационной базы в файл .dt;
- тестирование и исправление информационной базы;
- изменение состава распределенной информационной базы;
- некоторые массовые обработки данных, где разработчик явно установил монопольный режим.
Если платформа сообщает, что операция требует монопольного режима, обходить это требование не нужно. Попытки «выбить» пользователей принудительным завершением процессов в момент записи данных могут оставить базу в несогласованном состоянии.
Как включить монопольный режим в файловой базе
В файловом варианте работы монопольный режим устанавливается автоматически: если вы открываете конфигуратор и в базе нет других активных сеансов, доступ считается монопольным. Если кто-то еще работает, при попытке обновить конфигурацию появится сообщение о невозможности установить монопольный доступ со списком активных сеансов.
Порядок действий в этом случае такой: откройте в конфигураторе меню «Администрирование» — «Активные пользователи», посмотрите, кто находится в базе, и попросите их выйти. После того как список опустеет (кроме вашего сеанса), повторите операцию — монопольный режим установится сам.
- 1Предупредите пользователей о плановых работах и попросите выйти из программы
- 2Откройте конфигуратор и проверьте список активных пользователей (Администрирование — Активные пользователи)
- 3Убедитесь, что в списке остался только ваш сеанс
- 4Выполните требуемую операцию: обновление, загрузку или тестирование
- 5После завершения сообщите пользователям, что можно входить в базу
Монопольный режим в клиент-серверном варианте
В клиент-серверной базе управлять сеансами удобнее через консоль кластера серверов 1С. Там можно посмотреть список сеансов по конкретной базе, отправить пользователям сообщение о необходимости выйти и принудительно завершить зависшие сеансы — те, где клиентское приложение закрылось аварийно, но сеанс на сервере остался висеть.
Дополнительно администратор может установить блокировку начала сеансов: в свойствах информационной базы в консоли кластера задается дата и время начала блокировки, код разрешения и сообщение для пользователей. Пока блокировка активна, новые пользователи не смогут войти, а вы сможете спокойно дождаться завершения текущих сеансов и выполнить обслуживание. Зная код разрешения, при необходимости можно войти в базу, указав его в параметре запуска /UC.
Программная установка монопольного режима
Во встроенном языке 1С есть методы для управления монопольным доступом, которые используются в обработках и регламентных операциях:
УстановитьМонопольныйРежим(Истина);
Если МонопольныйРежим() Тогда
// выполняем операции, требующие монопольного доступа
КонецЕсли;
УстановитьМонопольныйРежим(Ложь);
Метод УстановитьМонопольныйРежим(Истина) вернет управление только если других сеансов нет; при наличии активных пользователей будет вызвано исключение. Поэтому в коде такие вызовы обычно оборачивают в попытку/исключение и корректно сообщают администратору о причине отказа. После завершения работы режим нужно обязательно снять, иначе остальные пользователи не смогут войти в базу.
Попытка
УстановитьМонопольныйРежим(Истина);
Исключение
Сообщить("Не удалось установить монопольный режим: есть активные сеансы");
КонецПопытки;Что делать, если монопольный режим не устанавливается
Самая частая причина — зависшие сеансы. Пользователь закрыл программу аварийно (отключилось питание, пропала сеть), а сеанс на сервере или в файловой базе числится активным. В клиент-серверном варианте такие сеансы завершаются через консоль кластера; в файловом — обычно достаточно подождать таймаут или перезапустить подключение.
Вторая причина — фоновые задания и регламентные операции. Даже если все пользователи вышли, выполняющееся фоновое задание считается сеансом и блокирует монопольный доступ. Проверьте список активных сеансов полностью, включая фоновые задания и сеансы COM-соединений, которые могли открыть внешние программы обмена.
Проверка результата и меры безопасности
Перед любой операцией в монопольном режиме сделайте резервную копию: выгрузку в файл .dt через конфигуратор или штатное копирование средствами СУБД для клиент-серверного варианта. Это единственная надежная страховка на случай сбоя в процессе реструктуризации или загрузки данных.
После завершения работ убедитесь, что база доступна пользователям: войдите под обычной учетной записью, откройте несколько типовых документов и проверьте, что блокировка сеансов снята, если она устанавливалась. Признак успешного завершения — пользователи входят в базу штатно, а в журнале регистрации нет ошибок, связанных с выполненной операцией.
Как проверить результат
Пользователи подключаются без сообщений о блокировке
Ошибка «Нарушение прав доступа» или сообщение о блокировке сеансов
Сеансы создаются и завершаются штатно
Висят сеансы от неработающих компьютеров
Нет ошибок реструктуризации или обновления
Ошибки фоновых заданий и обновления конфигурации
Частые вопросы
Чем монопольный режим отличается от блокировки сеансов?
Монопольный режим означает, что в базе работает ровно один сеанс. Блокировка сеансов — это запрет на новые подключения, при этом уже открытые сеансы продолжают работать. Обычно сначала ставят блокировку, ждут выхода пользователей, и только тогда монопольный доступ становится возможным.
Можно ли работать в базе, пока идет обновление конфигурации?
Нет. Обновление конфигурации базы данных требует монопольного доступа, и платформа не позволит запустить его при наличии других сеансов. Попытки обойти это ограничение чреваты повреждением структуры данных.
Пользователь вышел, но сеанс все равно висит. Что делать?
Это зависший сеанс. В клиент-серверном варианте завершите его через консоль кластера серверов. В файловом варианте подождите несколько минут — сеанс снимется по таймауту, либо убедитесь, что на компьютере пользователя действительно закрыт процесс 1С.
Что произойдет, если забыть снять монопольный режим в коде?
Пока сеанс, установивший монопольный режим, активен, другие пользователи не смогут войти в базу. После завершения этого сеанса режим снимается автоматически, но до этого момента база будет недоступна для коллективной работы.
Нужна ли резервная копия перед работой в монопольном режиме?
Да, обязательно. Именно в монопольном режиме выполняются самые рискованные операции: реструктуризация таблиц, загрузка данных, тестирование и исправление. Сбой посередине такой операции без копии может привести к потере базы.
Что важно запомнить
Монопольный режим — это работа с базой в единственном сеансе, необходимая для обновления, загрузки и обслуживания данных. Перед включением выведите пользователей, проверьте фоновые задания и сделайте резервную копию. После работ убедитесь, что доступ восстановлен.