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

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

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

Что такое монопольный режим в 1С, зачем он нужен, как включить и снять в файловой и клиент-серверной базе. Решение ошибок «монопольный режим уже установлен» и советы администратору.

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

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

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

Зачем нужен монопольный режим и когда он обязателен

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

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

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

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

Как включить монопольный режим в конфигураторе

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

Если нужно установить режим вручную, действуйте так:

  • войдите в конфигуратор под учётной записью с правами администратора;
  • откройте меню «Администрирование» → «Пользователи» и убедитесь, что активных сеансов нет;
  • при необходимости завершите чужие сеансы через диалог активных пользователей;
  • выполните нужную операцию — платформа сама установит монопольный доступ.

В типовых конфигурациях (Бухгалтерия, Управление торговлей, ERP) есть штатный механизм блокировки: раздел «Администрирование» → «Обслуживание» → «Блокировка работы пользователей». Там можно установить блокировку на период, задать сообщение для пользователей и код разблокировки для досрочного входа.

Порядок включения блокировки в типовой конфигурации
  1. 1
    Откройте Администрирование → Обслуживание → Блокировка работы пользователей
  2. 2
    Установите флаг блокировки и укажите период действия
  3. 3
    Введите текст сообщения, которое увидят пользователи
  4. 4
    При необходимости задайте код разблокировки для администраторов
  5. 5
    Нажмите «Установить блокировку» и проверьте, что новые сеансы отклоняются

Монопольный режим в клиент-серверной базе

В клиент-серверном варианте (MS SQL, PostgreSQL и другие СУБД) блокировку удобнее ставить через консоль администрирования серверов 1С. Там можно не только заблокировать базу, но и принудительно завершить все сеансы одним действием.

Порядок действий: откройте консоль кластера, найдите нужную информационную базу, откройте её свойства. Установите флаг «Блокировка начала сеансов включена», укажите время начала и окончания блокировки, сообщение для пользователей и код разрешения. Затем на вкладке «Сеансы» завершите существующие сеансы — иначе монопольного доступа не будет.

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

bash
"C:\Program Files\1cv8\platform\bin\1cv8.exe" DESIGNER /F"D:\Bases\Trade" /N"Администратор" /P"пароль" /DisableStartupDialogs /DumpIB "D:\Backup\trade.dt"

Обратите внимание: блокировка сеансов через консоль кластера не завершает уже открытые сеансы автоматически — она лишь запрещает новые. Активные сеансы нужно завершить отдельно, иначе монопольный доступ установить не получится.

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

Во встроенном языке 1С есть объект УстановитьМонопольныйРежим и методы проверки состояния. Это используют в обработках обновления и обменах данными, когда нужно гарантировать эксклюзивный доступ перед массовыми изменениями.

1c
Если Не МонопольныйРежим() Тогда
    УстановитьМонопольныйРежим(Истина);
КонецЕсли;
// ... выполнение операций ...
УстановитьМонопольныйРежим(Ложь);

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

Типичные ошибки и способы их решения

Самая частая ситуация — ошибка «Монопольный режим уже установлен» или «Нарушение прав доступа» при попытке войти в базу. Причины обычно такие:

  • администратор установил блокировку и забыл её снять;
  • завис сеанс, который удерживает монопольный доступ, хотя пользователь уже закрыл программу;
  • остался запущенный фоновый процесс обновления, прерванный аварийно;
  • в файловой базе остался сеанс на другом компьютере в локальной сети.

Что делать: в клиент-серверной базе откройте консоль кластера, найдите «зависший» сеанс и завершите его, затем снимите блокировку сеансов в свойствах базы. В файловой базе проверьте все компьютеры, где может быть открыт сеанс, и перезагрузите компьютер, с которого база заблокирована. Если ничего не помогает, перезапуск службы агента сервера 1С или сервера СУБД сбрасывает все соединения — но это крайняя мера, прерывающая работу всех баз кластера.

Типичные ошибки администраторов
01
Завершение сеансов без предупреждения — пользователи теряют несохранённые данные
02
Забытая блокировка после обновления — утром никто не может войти в базу
03
Тестирование и исправление без резервной копии — при ошибке восстановить данные нечем
04
Попытка установить монопольный режим, не завершив активные сеансы — ошибка и потерянное время

Как проверить состояние базы и снять блокировку

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

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

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

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

Вход выполняется без сообщений о блокировке

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

Ошибка «База данных заблокирована» или «Монопольный режим»

Свойства базы в консоли кластера
Норма

Флаг «Блокировка начала сеансов» снят

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

Флаг установлен, указано время блокировки

Список сеансов
Норма

Только рабочие сеансы пользователей

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

Зависшие сеансы от выключенных компьютеров

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

Меры безопасности перед включением монопольного режима

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

  1. Сделайте резервную копию: выгрузку .dt через конфигуратор или бэкап средствами СУБД.
  2. Предупредите пользователей заранее и согласуйте время работ.
  3. Завершите фоновые задания и обмены данными, чтобы не оборвать их посередине.
  4. Выполните операцию и сразу проверьте результат: откройте базу, проверьте ключевые отчёты.
  5. Снимите блокировку и сообщите пользователям о возобновлении работы.
Итог

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

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

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

Почему 1С пишет «Для выполнения операции требуется монопольный доступ»?

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

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

Если у вас есть права администратора кластера, откройте консоль администрирования серверов 1С, завершите зависший сеанс и снимите блокировку в свойствах базы. В файловой базе найдите компьютер с открытым сеансом и закройте программу. Без прав администратора снять блокировку нельзя — это защита от несанкционированного доступа.

Можно ли обновить конфигурацию без монопольного режима?

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

Что видят пользователи при включённой блокировке?

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

Опасно ли принудительное завершение сеансов пользователей?

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

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

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