Как освободить базу и открыть 1С:Предприятие монопольно

· 9 мин

Содержание

Чтобы запустить 1С в монопольном режиме, нужно сделать так, чтобы в базе не осталось ни одного чужого сеанса. Отдельной кнопки «войти монопольно» в окне запуска нет: вы запрещаете новые входы через Администрирование → Поддержка и обслуживание → Блокировка работы пользователей (или в консоли кластера), ждёте, пока все выйдут, и входите сами с кодом разрешения. После этого Конфигуратор или обработка получают исключительный доступ к базе.

Инструкция общая для платформы 1С:Предприятие 8.3 и типовых конфигураций на БСП: Бухгалтерии 3.0, ЗУП 3.1, УТ 11, ERP. Отличается только то, где включается блокировка: в файловой базе — из самой программы, в клиент-серверной — ещё и из консоли администрирования серверов.

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

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

Без монопольного доступа не выполнятся:

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

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

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

Подготовка к монопольному входу: что проверить заранее

Самая частая причина неудачи — не ошибка в действиях, а забытые сеансы. Перед стартом пройдитесь по списку.

Перед установкой монопольного режима
Выполнено: 0 / 6

Кто держит базу, кроме людей:

  • ⏱ регламентные и фоновые задания (загрузка курсов валют, обмены, полнотекстовый индекс);
  • 🌐 публикация на веб-сервере: Apache или IIS держат соединения с файловой базой, пока жив процесс;
  • 🔁 обмены через COM-соединение и внешние скрипты;
  • 💻 «зависшие» процессы 1cv8.exe или 1cv8c.exe на компьютерах, где программу закрыли некорректно.

Список текущих подключений видно в двух местах: в программе — Администрирование → Поддержка и обслуживание → Активные пользователи, в Конфигураторе — Администрирование → Активные пользователи.

Как включить монопольный режим в файловой базе 1С

В файловом варианте всё делается из пользовательского режима. Права нужны полные: роль «Администратор системы» или «Полные права».

Шаг 1. Установите блокировку

  1. Запустите 1С:Предприятие под администратором.
  2. Откройте Администрирование → Поддержка и обслуживание.
  3. Найдите группу «Обслуживание» и откройте Блокировка работы пользователей.
  4. Заполните поля:
    • сообщение для пользователей — например, «Обновление базы с 19:00 до 20:00»;
    • время начала и окончания блокировки;
    • код разрешения — любая строка, например obnov7.
  5. Нажмите «Установить блокировку».

С этого момента новые входы запрещены. Тем, кто уже работает, программа покажет предупреждение и через несколько минут завершит их сеансы.

Шаг 2. Дождитесь освобождения базы

Откройте Активные пользователи. В списке должен остаться только ваш сеанс. Если кто-то висит дольше 10–15 минут, выясните, где этот компьютер, и закройте программу на месте.

Шаг 3. Войдите в Конфигуратор с кодом разрешения

Закройте свой сеанс и запустите Конфигуратор с параметром /UC:

"C:\Program Files\1cv8\common\1cestart.exe" DESIGNER /F"D:\Bases\Buh" /N"Администратор" /P"пароль" /UCobnov7

Код можно указать и в настройках базы в окне запуска: Изменить → Дополнительные параметры запуска, строка /UCobnov7. После работ не забудьте её удалить.

Шаг 4. Снимите блокировку

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

Если пользователь открыл файловую базу по сети и его компьютер «упал», файл 1Cv8.1CD может остаться открытым на файловом сервере. Проверьте это на сервере: Управление компьютером → Общие папки → Открытые файлы. Закрытие файла оборвёт сеанс этого пользователя без сохранения его несохранённых данных.

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

В серверном варианте есть два пути: та же блокировка из программы (она работает и здесь) или настройка свойств базы в кластере. Второй путь надёжнее, когда пользователи не выходят сами или программа у них зависла.

Через консоль администрирования серверов

  1. Откройте консоль администрирования серверов 1С на компьютере администратора.
  2. Раскройте Центральные серверы 1С:Предприятия → имя сервера → Кластеры → кластер → Информационные базы.
  3. Откройте свойства нужной базы.
  4. Отметьте «Блокировка начала сеансов включена».
  5. Укажите сообщение и код разрешения.
  6. Отметьте «Блокировка регламентных заданий включена» — иначе фоновые задания будут снова и снова открывать сеансы.
  7. Сохраните свойства.

Затем раскройте узел «Сеансы» внутри базы и завершите оставшиеся сеансы через контекстное меню. Перед этим убедитесь, что люди закончили документы: при принудительном завершении несохранённые изменения пропадут.

После работ снимите обе галочки. Про блокировку регламентных заданий забывают чаще всего, и неделю спустя выясняется, что обмен с сайтом не идёт.

Через утилиту rac

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

rac localhost:1545 cluster list
rac localhost:1545 infobase summary list --cluster=<uuid кластера>

Затем включите блокировку для базы:

rac localhost:1545 infobase update --cluster=<uuid кластера> --infobase=<uuid базы> ^
  --infobase-user="Администратор" --infobase-pwd="пароль" ^
  --sessions-deny=on --scheduled-jobs-deny=on ^
  --denied-message="Обновление базы" --permission-code=obnov7

Список сеансов — rac session list --cluster=<uuid> --infobase=<uuid>. Точный синтаксис завершения сеанса и других подкоманд смотрите в справке rac help session: он зависит от версии платформы.

Порт 1545 — это порт службы ras по умолчанию. Служба должна быть запущена на сервере, иначе rac не подключится.

Ключи командной строки для запуска в монопольном режиме

Параметра, который сам по себе «включает монопольный режим», у 1cv8.exe нет. Командная строка помогает в другом: войти в заблокированную базу и автоматизировать блокировку.

ПараметрЧто делает
DESIGNER / ENTERPRISEЗапуск Конфигуратора или пользовательского режима
/F"путь"Файловая база по каталогу
/S"сервер\база"Серверная база
/N"имя" /P"пароль"Пользователь и пароль базы
/UCкодКод разрешения для входа при включённой блокировке
/C"строка"Параметр запуска, который читает конфигурация
/DisableStartupMessagesНе показывать стартовые предупреждения
/UpdateDBCfgПакетное обновление конфигурации базы данных

Блокировка через параметр /C в типовых конфигурациях

Конфигурации на БСП понимают два значения параметра /C:

  • ЗавершитьРаботуПользователей — устанавливает блокировку и завершает сеансы;
  • РазрешитьРаботуПользователей — снимает блокировку.

Так выглядит ночной сценарий обновления файловой базы:

set BASE=/F"D:\Bases\Buh"
set USR=/N"Администратор" /P"пароль"
set V8="C:\Program Files\1cv8\common\1cestart.exe"

rem 1. Выгнать пользователей и запретить вход
%V8% ENTERPRISE %BASE% %USR% /C"ЗавершитьРаботуПользователей" /UCobnov7 /DisableStartupMessages

rem 2. Обновить конфигурацию базы данных
%V8% DESIGNER %BASE% %USR% /UCobnov7 /UpdateDBCfg /Out"D:\Logs\update.log"

rem 3. Разрешить работу
%V8% ENTERPRISE %BASE% %USR% /C"РазрешитьРаботуПользователей" /UCobnov7 /DisableStartupMessages

Сеанс с параметром ЗавершитьРаботуПользователей сам ждёт, пока пользователи выйдут, и закрывается после этого. Проверьте сценарий на копии базы перед тем, как ставить его в планировщик.

Пароль администратора в bat-файле лежит открытым текстом. Ограничьте доступ к файлу и папке логов правами NTFS.

Монопольный режим из кода

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

Попытка
    УстановитьМонопольныйРежим(Истина);
Исключение
    Сообщить("Не удалось: в базе есть другие сеансы");
    Возврат;
КонецПопытки;

// ... операции, которым нужен монопольный доступ ...

УстановитьМонопольныйРежим(Ложь);

Как сократить время, пока база закрыта для всех

Монопольный доступ останавливает работу всего офиса. Чем короче окно, тем меньше недовольных. Несколько приёмов, которые реально экономят время.

Готовьте всё до блокировки

Загрузку файла обновления .cfu, сравнение и объединение конфигураций, проверку модулей делайте заранее, пока пользователи работают. Конфигуратор позволяет это без монопольного режима. На время блокировки остаётся одно действие — Конфигурация → Обновить конфигурацию базы данных и первый запуск в пользовательском режиме.

Используйте фоновое обновление в серверной базе

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

Планируйте окно с запасом

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

ЭтапНужен ли монопольный доступ
Загрузка и сравнение конфигурацииНет
Выгрузка в .dt для резервной копииЖелательно
Обновление конфигурации базы данных со сменой структурыДа
Обработчики обновления при первом запускеДа, в типовых конфигурациях
Проверка отчётов после обновленияНет

Почему не удаётся войти в монопольный режим: диагностика

Типичная ситуация: блокировка стоит, пользователи разошлись, а Конфигуратор при обновлении сообщает Невозможно установить монопольный режим. Причина всегда одна — где-то остался сеанс. Задача в том, чтобы найти, чей.

Диагностика: выберите симптом

Когда завершать процессы на сервере

Если сеанс не завершается ни из консоли, ни из программы, остаётся завершить рабочий процесс rphost в консоли кластера или перезапустить службу «Агент сервера 1С:Предприятия». Это оборвёт сеансы всех баз на этом сервере, а не только вашей. Делайте это вне рабочего времени и после предупреждения всех, кто работает на сервере.

Что делать, если обновление прервалось

Если реструктуризация оборвалась на середине, снова зайдите в Конфигуратор монопольно и повторите Конфигурация → Обновить конфигурацию базы данных. Если база не открывается, восстановите её из копии, сделанной перед работами. Запускать «Тестирование и исправление» на базе после прерванной реструктуризации без копии рискованно.

Частые вопросы о монопольном режиме

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