Монопольный доступ к базе 1С 8.3: как выгнать всех и спокойно обновиться
Содержание
Чтобы запустить 1С в монопольном режиме, в базе не должно остаться ни одного другого сеанса. Отдельной галочки «монопольно» в окне запуска 1С 8.3 нет. Монопольный режим включает сама платформа, когда вы запускаете операцию, которой он нужен, например Конфигурация → Обновить конфигурацию базы данных. Ваша задача — заранее заблокировать вход
и завершить чужие сеансы.
Обычно сначала ставят блокировку сеансов: в типовой конфигурации, в консоли кластера или командой rac. Потом разрешают вход только себе по коду и делают работу. Ниже пошагово для файловой и клиент-серверной базы, терминального сервера и ночного пакетного запуска.
Что такое монопольный режим в 1С 8.3 и когда без него не обойтись
Монопольный режим — состояние, в котором с информационной базой работает ровно один сеанс. Остальные сеансы платформа к базе не пускает.
Он нужен не для любой работы администратора. Монопольный доступ требуют:
- 🔧 обновление конфигурации базы данных с изменением структуры (новые реквизиты, регистры, индексы);
- 📦 загрузка информационной базы из файла
.dt; - 🩺 тестирование и исправление информационной базы;
- 🧩 часть операций, которые программа запускает из кода через
УстановитьМонопольныйРежим(Истина)— например, некоторые обработки свёртки или перенумерации.
Открыть Конфигуратор , посмотреть отчёт или выгрузить список пользователей можно и при работающих коллегах. Монопольность понадобится в момент, когда вы нажмёте «Обновить конфигурацию базы данных» или «Загрузить информационную базу».
Если изменения не затрагивают структуру данных (правка модуля, формы), Конфигуратор может предложить динамическое обновление без выгона пользователей. Но после него работающие сеансы продолжают жить на старой версии до перезапуска, а при сбое разбираться сложнее. Для типовых релизов обновляйтесь в монопольном режиме.
Как включить монопольный режим в 1С 8.3: четыре способа
Способ выбирайте по типу базы и по тому, к чему у вас есть доступ.
| Способ | Тип базы | Кто может | Когда удобен |
|---|---|---|---|
| Блокировка в типовой конфигурации | файловая и клиент-серверная | администратор базы | БП, ЗУП, УТ и другие конфигурации на БСП |
| Консоль администрирования серверов | клиент-серверная | администратор кластера | несколько баз, зависшие сеансы |
Утилита rac | клиент-серверная | администратор кластера | скрипты, Linux, нет графики |
| Вручную через «Активные пользователи» | любая | администратор базы | 2–3 пользователя, все на связи |
Способ 1. Блокировка работы пользователей в программе
В конфигурациях на Библиотеке стандартных подсистем (Бухгалтерия 3.0, ЗУП 3.1, УТ 11 и другие) есть встроенная блокировка.
- Войдите в 1С:Предприятие под пользователем с полными правами.
- Откройте
Администрирование → Обслуживание(в старых релизах раздел называетсяПоддержка и обслуживание). - Перейдите по ссылке «Блокировка работы пользователей».
- Заполните сообщение для пользователей, время начала и окончания блокировки и код разрешения, например
12345. - Нажмите кнопку установки блокировки.
Программа предупредит работающих пользователей и через несколько минут завершит их сеансы. Новые входы будут отклоняться с сообщением «Начало сеанса с информационной базой запрещено» и вашим текстом.
Сами вы заходите с кодом разрешения через параметр запуска /UC. В списке баз нажмите «Изменить», дойдите до последней страницы и впишите в поле дополнительных параметров:
/UC12345
Теперь можно открывать Конфигуратор и обновлять базу. Не закрывайте сеанс 1С:Предприятия, из которого ставили блокировку, пока не закончите работу: если он завершится некорректно, проще заново войти с /UC, чем гадать, снялась ли блокировка.
Способ 2. Консоль администрирования серверов 1С
Для клиент-серверной базы блокировку можно поставить без входа в конфигурацию.
- Запустите консоль администрирования серверов 1С:Предприятия.
- Раскройте кластер →
Информационные базы→ нужную базу. - Откройте свойства базы и введите логин и пароль администратора информационной базы.
- Включите флаг «Блокировка начала сеансов включена», задайте сообщение и код разрешения.
- Включите «Блокировка регламентных заданий включена» — иначе фоновые задания будут снова и снова открывать сеансы.
- Сохраните свойства.
- В ветке
Сеансыэтой базы выделите оставшиеся сеансы и удалите их.
Удаление сеанса в консоли обрывает работу пользователя без сохранения. Документ, который он не записал, пропадёт. Делайте это после предупреждения или в нерабочее время.
Способ 3. Утилита rac для серверов и Linux
Утилита rac работает через сервер администрирования ras (по умолчанию порт 1545). На Linux-сервере его запускают так:
ras cluster --daemon
Дальше получаете идентификаторы кластера и базы и ставите блокировку:
rac cluster list
rac infobase summary list --cluster=<id_кластера>
rac infobase update --cluster=<id_кластера> --infobase=<id_базы> \
--infobase-user=Админ --infobase-pwd=пароль \
--sessions-deny=on --scheduled-jobs-deny=on \
--denied-message="Обновление базы" --permission-code=12345
Оставшиеся сеансы смотрите командой rac session list --cluster=<id_кластера> --infobase=<id_базы> и завершаете rac session terminate с идентификатором сеанса. Полный список параметров вашей версии платформы выдаёт rac help infobase и rac help session.
Способ 4. Вручную через «Активные пользователи»
Если пользователей двое-трое, быстрее позвонить им. Кто именно в базе, видно в Конфигураторе: Администрирование → Активные пользователи. В списке есть имя пользователя, компьютер, приложение и время начала сеанса.
Попросите всех выйти, обновите список и убедитесь, что в нём остались только вы. Минус способа — ничто не мешает человеку зайти снова, пока вы обновляетесь.
Файловая база, MS SQL и PostgreSQL: в чём разница
Монопольный режим в 1С — механизм самой платформы. Он одинаков для MS SQL Server, PostgreSQL и других СУБД. Переводить базу SQL в однопользовательский режим средствами СУБД не нужно: 1С этого не ждёт, а сервер 1С сам может потерять соединение.
Отличия есть между файловым и клиент-серверным вариантом:
| Файловая база | Клиент-серверная база | |
|---|---|---|
| Где видны сеансы | «Активные пользователи» | «Активные пользователи», консоль кластера, rac |
| Чем держится база | открытым файлом 1Cv8.1CD | сеансом на сервере 1С |
| Как убрать зависший сеанс | закрыть процесс 1С или открытый файл | удалить сеанс в консоли или rac |
| Регламентные задания | выполняются в сеансе пользователя | выполняются на сервере, их блокируют отдельно |
В файловой базе блокировка из типовой конфигурации тоже работает. Но если у пользователя завис процесс 1cv8.exe, файл базы останется открытым, хотя человек «давно вышел».
Как найти такой хвост в Windows:
- На компьютере, где лежит папка с базой, выполните
fsmgmt.msc. - Откройте «Открытые файлы».
- Найдите
1Cv8.1CDи посмотрите, с какого компьютера он открыт. - Завершите процесс 1С на том компьютере. Закрывать файл из оснастки — крайняя мера, она равна выдёргиванию сетевого кабеля у пользователя.
На Linux открытый файл базы покажет lsof | grep 1Cv8.1CD, процессы — ps aux | grep 1cv8.
Монопольный режим на терминальном сервере (RDP, Citrix)
На терминальном сервере частая картина: бухгалтер закрыл окно RDP крестиком, его сеанс Windows остался в состоянии «Отключён», а внутри продолжает работать 1С. Для платформы это живой пользователь.
Найти и закрыть такие сеансы:
- Откройте командную строку на терминальном сервере от имени администратора.
- Посмотрите список сеансов:
quser
- Найдите отключённые сеансы с работающей 1С (её видно в диспетчере задач на вкладке «Пользователи»).
- Завершите нужный сеанс по его номеру:
logoff 3
logoff закрывает весь сеанс Windows пользователя, а не только 1С. Несохранённые файлы Word и Excel тоже пропадут. Предупредите человека заранее.
В Citrix логика та же: отключённые сессии видны в консоли управления Citrix, оттуда их и завершают.
Чтобы проблема не повторялась, настройте в групповых политиках лимит для отключённых сеансов RDP — например, завершать их через 2–4 часа. Тогда к ночному обновлению забытых сеансов не останется.
Ночное обновление: bat-файл для монопольного запуска
Когда блокировка поставлена, Конфигуратор можно запустить без интерфейса. Это удобно для обновления по расписанию через планировщик заданий Windows.
Пример для клиент-серверной базы:
@echo off
set V8="C:\Program Files\1cv8\8.3.25.1374\bin\1cv8.exe"
set BASE=/S"srv1c\buh"
set AUTH=/N"Админ" /P"пароль"
set CODE=/UC"12345"
%V8% DESIGNER %BASE% %AUTH% %CODE% /DumpIB "D:\backup\buh.dt" /Out "D:\backup\log_dump.txt"
%V8% DESIGNER %BASE% %AUTH% %CODE% /UpdateDBCfg /Out "D:\backup\log_update.txt"
Для файловой базы замените /S"srv1c\buh" на /F"D:\Bases\Buh". Номер платформы в пути подставьте свой.
Что важно в этом сценарии:
- 🔑 параметр
/UCс кодом разрешения обязателен, иначе ваш же скрипт упрётся в блокировку; - 📝
/Outпишет лог — по нему утром видно, прошло ли обновление; - 🔒 пароль администратора в bat-файле лежит открытым текстом, поэтому храните файл в папке с доступом только для администраторов.
В типовых конфигурациях на БСП завершить и разрешить работу пользователей можно и из командной строки — параметрами запуска /C"ЗавершитьРаботуПользователей" и /C"РазрешитьРаботуПользователей" в режиме ENTERPRISE с тем же /UC. Так весь цикл «выгнать — обновить — пустить» собирается в один скрипт.
Резервная копия перед монопольной операцией
Обновление структуры и загрузка .dt необратимы. Если что-то пойдёт не так, откатиться можно только к копии.
Варианты копии:
| Способ | Где делать | Что даёт |
|---|---|---|
Выгрузка в .dt | Конфигуратор, Администрирование → Выгрузить информационную базу | копия, которую можно загрузить в любую базу и на любой СУБД |
| Копия каталога базы | файловая база, при отсутствии пользователей | самый быстрый откат: вернуть папку на место |
| Бэкап средствами СУБД | MS SQL, PostgreSQL | быстрое восстановление больших баз |
Делайте копию уже после блокировки сеансов: тогда в ней точно нет недописанных пользователями документов. Копию проверьте хотя бы по размеру и дате файла, а для .dt раз в квартал пробно разворачивайте её в отдельную базу.
После обновления: что вернуть на место
Обновили структуру — работа ещё не закончена.
- Запустите 1С:Предприятие с кодом
/UCи дождитесь окончания обработчиков обновления. В типовых конфигурациях программа покажет экран с ходом обновления данных. - Проверьте журнал регистрации на ошибки за время обновления.
- Снимите блокировку сеансов там же, где её ставили: в конфигурации, в консоли кластера или командой
rac infobase update ... --sessions-deny=off. - Включите регламентные задания, если блокировали их отдельно.
- Уберите
/UCиз параметров своей базы в списке, чтобы не путаться в следующий раз.
Часть обработчиков в типовых конфигурациях работает отложенно, уже после того как пользователи вошли. Их ход виден в разделе Администрирование → Обслуживание. Пока они не закончились, отдельные отчёты могут считаться медленнее.
Почему не удаётся установить монопольный режим
Самое частое сообщение — «Невозможно установить монопольный режим». Причина всегда одна: в базе есть ещё кто-то. Вопрос в том, кто именно.
1Cv8.1CD через «Открытые файлы» и завершите процесс 1С на том компьютере.Частые вопросы
Можно ли включить монопольный режим кнопкой в окне запуска 1С 8.3?
Нужен ли монопольный режим, чтобы просто открыть Конфигуратор?
.dt, тестирования и исправления.Как узнать, что база сейчас в монопольном режиме?
МонопольныйРежим(), которая возвращает Истина, если режим установлен.