Монопольный доступ к базе 1С 8.3: как выгнать всех и работать одному
Содержание
Чтобы запустить 1С 8 в монопольном режиме, нужно не нажать особую кнопку, а убрать из базы всех остальных. Включите блокировку сеансов с кодом разрешения (Администрирование → Обслуживание → Блокировка работы пользователей или свойства базы в консоли кластера), дождитесь выхода пользователей и откройте Конфигуратор с ключом /UC <код>. Дальше платформа сама захватит базу монопольно, когда операция этого потребует.
Частое заблуждение — искать в окне запуска 1С 8.3 галочку «Монопольно». Она была в 7.7, в восьмёрке её нет. Монопольный режим в 1С:Предприятии 8 — это состояние, когда к информационной базе подключён ровно один сеанс. Получить его можно только одним путём: сделать так, чтобы других сеансов не осталось и новые не появлялись.
Когда базе нужен монопольный доступ, а когда нет
Монопольный режим нужен не всегда. Открыть Конфигуратор , посмотреть модуль, выгрузить отчёт о конфигурации можно при работающих пользователях.
Монополия обязательна для таких операций:
- 🔄 обновление конфигурации базы данных, если меняется структура таблиц (новые реквизиты, регистры, индексы);
- 📥 загрузка информационной базы из файла
.dt— она полностью заменяет данные; - 🛠
Администрирование → Тестирование и исправлениев Конфигураторе; - 🧩 часть обработок обслуживания в самой программе: свёртка базы, некоторые обработки перехода на новый релиз, удаление помеченных объектов в монопольном варианте.
Выгрузку в .dt платформа 8.3 тоже выполняет надёжнее, когда в базе никого нет: в файловом варианте это фактически требование, иначе данные в архиве могут оказаться несогласованными.
Если обновление конфигурации меняет только модули и формы, без структуры данных, в клиент-серверной базе его можно применить динамически, не выгоняя людей. Платформа сама предложит этот вариант. Для файловой базы динамического обновления нет.
Подготовка: кто сейчас сидит в базе
Перед захватом базы посмотрите, кого придётся отключить. Мест для проверки три.
| Где смотреть | Как открыть | Что видно |
|---|---|---|
| Конфигуратор | Администрирование → Активные пользователи | Все сеансы, включая фоновые задания и других «конфигураторщиков» |
| Программа на БСП (БП 3.0, ЗУП 3.1, УТ 11) | Администрирование → Обслуживание → Активные пользователи | Те же сеансы, можно завершить выделенный |
| Консоль кластера (клиент-сервер) | Узел базы → Сеансы | Сеансы с компьютером, приложением и временем начала |
Предупредите людей заранее, лучше письменно и с точным временем. Пользователь, у которого оборвали сеанс посреди ввода документа, теряет несохранённые изменения.
Перед операциями, ради которых нужен монопольный режим, сделайте резервную копию базы
. Обновление структуры и загрузка .dt необратимы.
Обычный путь: блокировка и запуск через окно выбора базы
Это способ для типовых конфигураций на БСП. Работает и в файловом, и в клиент-серверном варианте.
Шаг 1. Включите блокировку в программе
- Откройте базу в режиме 1С:Предприятие под пользователем с полными правами.
- Перейдите в
Администрирование → Обслуживание. В старых релизах раздел называется «Поддержка и обслуживание». - В блоке обслуживания откройте «Блокировка работы пользователей».
- Заполните сообщение для пользователей: что происходит и когда закончится.
- Задайте код разрешения — любое короткое слово латиницей, например
admin7. - Укажите время начала и окончания блокировки, если хотите отложить её.
- Нажмите кнопку установки блокировки.
После этого программа рассылает пользователям предупреждение и через несколько минут завершает их сеансы. Новые входы запрещены всем, кто не знает кода.
Шаг 2. Войдите в Конфигуратор с кодом
- Закройте свой сеанс 1С:Предприятия: он тоже считается.
- В окне запуска выберите базу и нажмите
Изменить. - Пролистайте мастер до последней страницы и в поле «Дополнительные параметры запуска» впишите
/UC admin7. - Нажмите
Готово, затемКонфигуратор.
Теперь вы единственный, кто может войти. Обновление, загрузка .dt или тестирование получат монопольный доступ без ошибок.
Не забудьте снять блокировку после работ. Иначе утром бухгалтерия увидит ваше сообщение «идёт обновление» и не попадёт в базу. Снимается там же, где ставилась, кнопкой снятия блокировки.
Ключ /UC лучше убрать из параметров базы после работы. Иначе он будет срабатывать и при следующей блокировке, а вы забудете, что он там прописан.
Клиент-серверная база: блокировка через консоль кластера
В серверном варианте блокировку держит кластер, а не конфигурация. Поэтому способ работает с любой базой, даже нетиповой и без БСП. Нужны права администратора кластера и логин с паролем администратора информационной базы.
Через консоль администрирования серверов
- Откройте «Администрирование серверов 1С Предприятия».
- Раскройте
Кластеры → <ваш кластер> → Информационные базы. - Правой кнопкой по базе →
Свойства. Введите имя и пароль администратора ИБ. - Отметьте «Блокировка начала сеансов включена».
- Заполните «Сообщение» и «Код разрешения».
- Отметьте «Блокировка регламентных заданий включена».
- Нажмите
OK.
Блокировка запрещает новые входы, но не выгоняет тех, кто уже работает. Дальше раскройте узел базы → Сеансы, выделите оставшиеся сеансы и удалите их через контекстное меню.
Удаление сеанса обрывает работу пользователя без сохранения. Делайте это только после рассылки предупреждения и в согласованное окно, лучше вне рабочего времени.
Почему регламентные задания мешают
Это главная ловушка серверной базы. Вы выгнали всех людей, а Конфигуратор всё равно пишет, что монопольный режим установить нельзя. В списке сеансов при этом висит BackgroundJob: фоновое задание обмена, загрузки курсов или полнотекстового индекса.
Флажок блокировки регламентных заданий не даёт стартовать новым заданиям. Уже запущенное задание нужно дождаться или завершить его сеанс вручную. После работ снимите оба флажка.
Через утилиту rac
То же самое делается из командной строки утилитой rac (она лежит в каталоге bin платформы и общается с сервисом ras). Порядок такой:
rac cluster list
rac infobase summary list --cluster=<uuid_кластера>
rac infobase update --cluster=<uuid_кластера> --infobase=<uuid_базы> ^
--infobase-user=Админ --infobase-pwd=Пароль ^
--sessions-deny=on --scheduled-jobs-deny=on ^
--denied-message="Обновление базы" --permission-code=admin7
rac session list --cluster=<uuid_кластера> --infobase=<uuid_базы>
rac session terminate --cluster=<uuid_кластера> --session=<uuid_сеанса>
Если кластер защищён паролем, к командам добавляются параметры администратора кластера. Точный синтаксис для вашей версии платформы смотрите в rac help infobase и rac help session. Снятие блокировки — та же команда update с --sessions-deny=off --scheduled-jobs-deny=off.
Запуск 1С 8 в монопольном режиме из командной строки
Отдельной консольной утилиты вроде «v83c.exe» у платформы нет. Работают с тремя исполняемыми файлами:
| Файл | Что это | Для монопольных операций |
|---|---|---|
1cestart.exe | Стартер, окно выбора базы | Только для ручного запуска |
1cv8.exe | Толстый клиент и Конфигуратор | Да: режим DESIGNER и пакетные команды |
1cv8c.exe | Тонкий клиент | Нет, Конфигуратора в нём нет |
Монопольного ключа в командной строке тоже нет. Монополию дают две вещи: отсутствие чужих сеансов и ключ /UC, который пропускает вас через блокировку.
Пример: открыть Конфигуратор файловой базы с кодом разрешения.
"C:\Program Files\1cv8\8.3.24.1691\bin\1cv8.exe" DESIGNER /F "D:\Bases\Buh" /N "Администратор" /P "пароль" /UC admin7
Для серверной базы вместо /F указывают /S "server01\buh". Номер платформы в пути подставьте свой: смотрите, какие каталоги есть в C:\Program Files\1cv8.
Ключи запуска для пакетного обновления и выгрузки
Ночное обслуживание удобно запускать скриптом. Схема для типовой конфигурации на БСП:
- Скрипт запускает 1С:Предприятие с параметром
/C "ЗавершитьРаботуПользователей"и кодом/UC. Конфигурация ставит блокировку и завершает сеансы. - Конфигуратор в пакетном режиме делает копию и обновляет структуру.
- Последний запуск с
/C "РазрешитьРаботуПользователей"снимает блокировку.
set V8="C:\Program Files\1cv8\8.3.24.1691\bin\1cv8.exe"
set IB=/S "server01\buh" /N "Администратор" /P "пароль" /UC admin7
%V8% ENTERPRISE %IB% /C "ЗавершитьРаботуПользователей" /DisableStartupMessages
%V8% DESIGNER %IB% /DumpIB "E:\Backup\buh.dt" /Out "E:\Logs\dump.log"
%V8% DESIGNER %IB% /UpdateDBCfg /Out "E:\Logs\update.log"
%V8% ENTERPRISE %IB% /C "РазрешитьРаботуПользователей" /DisableStartupMessages
Полезные ключи для таких сценариев:
| Ключ | Что делает |
|---|---|
/UC <код> | Вход в базу, на которой стоит блокировка сеансов |
/DisableStartupMessages | Не показывать стартовые вопросы и предупреждения |
/Out <файл> | Писать результат пакетной операции в лог |
/DumpIB <файл> | Выгрузить базу в .dt |
/RestoreIB <файл> | Загрузить базу из .dt |
/UpdateDBCfg | Обновить конфигурацию базы данных |
💡 Всегда пишите /Out в отдельный файл и проверяйте его после ночного прогона. Пакетный Конфигуратор не показывает окон: ошибку монополии вы увидите только в логе.
/C "ЗавершитьРаботуПользователей" обрывает сеансы всех пользователей. Ставьте такой скрипт в планировщик только на время, когда в базе гарантированно никто не работает. Пароль администратора в bat-файле храните в каталоге, доступном только учётной записи планировщика.
Для нетиповой конфигурации без БСП первый и последний шаги заменяет блокировка через rac. В файловой базе без БСП автоматической блокировки нет совсем: пользователей выводят организационно.
Монополия из кода
Разработчику доступно встроенное: УстановитьМонопольныйРежим(Истина) переводит сеанс в монопольный режим, МонопольныйРежим() возвращает текущее состояние. Если в базе есть другие сеансы, вызов завершится исключением, поэтому его оборачивают в Попытка:
Попытка
УстановитьМонопольныйРежим(Истина);
Исключение
Сообщить("Не удалось захватить базу: " + КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
Возврат;
КонецПопытки;
// ... операция, которой нужна монополия
УстановитьМонопольныйРежим(Ложь);
Файловая база: что держит её занятой
В файловом варианте блокировку держит сам файл 1Cv8.1CD. Кластера нет, консоли нет, принудительно отключить чужой сеанс из Конфигуратора нельзя. Остаётся три пути:
- Блокировка через программу на БСП, как в разделе выше: она завершает сеансы штатно.
- Список
Администрирование → Активные пользователив Конфигураторе: по колонке компьютера понятно, к кому идти. - Открытые файлы на сервере, где лежит база. В Windows Server это
Управление компьютером → Общие папки → Открытые файлы. Закрытие файла1Cv8.1CDтам отключает пользователя.
Типичная история: в списке активных пользователей никого, а монопольный режим не ставится. Обычно это зависший процесс 1cv8.exe или 1cv8c.exe на чьём-то компьютере, который уже не виден как сеанс, но файл держит. Найдите его по списку открытых файлов и завершите на том компьютере через Диспетчер задач.
Принудительное закрытие файла базы или процесса 1С может оставить в базе несохранённые данные пользователя. Делайте это только когда человек предупреждён или процесс точно завис.
Ещё одна причина — веб-публикация. Если базу открывают через браузер, сеансы держит процесс веб-сервера. Перед работами остановите публикацию или пул приложений, предупредив удалённых пользователей.
Диагностика: не получается установить монопольный режим
Ошибки здесь бывают двух видов, и их часто путают.
Невозможно установить монопольный режим с перечислением сеансов означает, что в базе остался кто-то ещё. Это могут быть люди, фоновые задания, второй Конфигуратор, веб-клиент или COM-соединение внешней программы.
Ошибка блокировки информационной базы для конфигурирования — другое. Это не про монополию, а про то, что конфигурацию уже редактирует кто-то в другом Конфигураторе. Сеансы пользователей здесь ни при чём, нужно найти коллегу с открытым Конфигуратором.
Если все сеансы закрыты, а ошибка повторяется в клиент-серверной базе, проверьте сеансы ещё раз через минуту. Внешние программы (обмены, интеграции через COM, сервисы отчётов) переподключаются сами. Их нужно остановить на стороне той программы, а не только удалить сеанс.