Монопольный доступ к базе 1С 8.3: как выгнать всех и спокойно обновиться

· 9 мин

Содержание

Чтобы запустить 1С в монопольном режиме, в базе не должно остаться ни одного другого сеанса. Отдельной галочки «монопольно» в окне запуска 1С 8.3 нет. Монопольный режим включает сама платформа, когда вы запускаете операцию, которой он нужен, например Конфигурация → Обновить конфигурацию базы данных. Ваша задача — заранее заблокировать вход и завершить чужие сеансы.

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

Что такое монопольный режим в 1С 8.3 и когда без него не обойтись

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

Он нужен не для любой работы администратора. Монопольный доступ требуют:

  • 🔧 обновление конфигурации базы данных с изменением структуры (новые реквизиты, регистры, индексы);
  • 📦 загрузка информационной базы из файла .dt;
  • 🩺 тестирование и исправление информационной базы;
  • 🧩 часть операций, которые программа запускает из кода через УстановитьМонопольныйРежим(Истина) — например, некоторые обработки свёртки или перенумерации.

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

Если изменения не затрагивают структуру данных (правка модуля, формы), Конфигуратор может предложить динамическое обновление без выгона пользователей. Но после него работающие сеансы продолжают жить на старой версии до перезапуска, а при сбое разбираться сложнее. Для типовых релизов обновляйтесь в монопольном режиме.

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

Способ выбирайте по типу базы и по тому, к чему у вас есть доступ.

СпособТип базыКто можетКогда удобен
Блокировка в типовой конфигурациифайловая и клиент-сервернаяадминистратор базыБП, ЗУП, УТ и другие конфигурации на БСП
Консоль администрирования серверовклиент-сервернаяадминистратор кластеранесколько баз, зависшие сеансы
Утилита racклиент-сервернаяадминистратор кластераскрипты, Linux, нет графики
Вручную через «Активные пользователи»любаяадминистратор базы2–3 пользователя, все на связи

Способ 1. Блокировка работы пользователей в программе

В конфигурациях на Библиотеке стандартных подсистем (Бухгалтерия 3.0, ЗУП 3.1, УТ 11 и другие) есть встроенная блокировка.

  1. Войдите в 1С:Предприятие под пользователем с полными правами.
  2. Откройте Администрирование → Обслуживание (в старых релизах раздел называется Поддержка и обслуживание).
  3. Перейдите по ссылке «Блокировка работы пользователей».
  4. Заполните сообщение для пользователей, время начала и окончания блокировки и код разрешения, например 12345.
  5. Нажмите кнопку установки блокировки.

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

Сами вы заходите с кодом разрешения через параметр запуска /UC. В списке баз нажмите «Изменить», дойдите до последней страницы и впишите в поле дополнительных параметров:

/UC12345

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

Способ 2. Консоль администрирования серверов 1С

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

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

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

Способ 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:

  1. На компьютере, где лежит папка с базой, выполните fsmgmt.msc.
  2. Откройте «Открытые файлы».
  3. Найдите 1Cv8.1CD и посмотрите, с какого компьютера он открыт.
  4. Завершите процесс 1С на том компьютере. Закрывать файл из оснастки — крайняя мера, она равна выдёргиванию сетевого кабеля у пользователя.

На Linux открытый файл базы покажет lsof | grep 1Cv8.1CD, процессы — ps aux | grep 1cv8.

Монопольный режим на терминальном сервере (RDP, Citrix)

На терминальном сервере частая картина: бухгалтер закрыл окно RDP крестиком, его сеанс Windows остался в состоянии «Отключён», а внутри продолжает работать 1С. Для платформы это живой пользователь.

Найти и закрыть такие сеансы:

  1. Откройте командную строку на терминальном сервере от имени администратора.
  2. Посмотрите список сеансов:
quser
  1. Найдите отключённые сеансы с работающей 1С (её видно в диспетчере задач на вкладке «Пользователи»).
  2. Завершите нужный сеанс по его номеру:
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. Запустите 1С:Предприятие с кодом /UC и дождитесь окончания обработчиков обновления. В типовых конфигурациях программа покажет экран с ходом обновления данных.
  2. Проверьте журнал регистрации на ошибки за время обновления.
  3. Снимите блокировку сеансов там же, где её ставили: в конфигурации, в консоли кластера или командой rac infobase update ... --sessions-deny=off.
  4. Включите регламентные задания, если блокировали их отдельно.
  5. Уберите /UC из параметров своей базы в списке, чтобы не путаться в следующий раз.

Часть обработчиков в типовых конфигурациях работает отложенно, уже после того как пользователи вошли. Их ход виден в разделе Администрирование → Обслуживание. Пока они не закончились, отдельные отчёты могут считаться медленнее.

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

Самое частое сообщение — «Невозможно установить монопольный режим». Причина всегда одна: в базе есть ещё кто-то. Вопрос в том, кто именно.

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

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

Можно ли включить монопольный режим кнопкой в окне запуска 1С 8.3?
Нет. В 8.3 такой кнопки нет. Монопольный режим устанавливается автоматически при операции, которой он нужен, если в базе нет других сеансов.
Нужен ли монопольный режим, чтобы просто открыть Конфигуратор?
Нет. Конфигуратор открывается при работающих пользователях. Монопольный доступ понадобится только для обновления структуры, загрузки .dt, тестирования и исправления.
Как узнать, что база сейчас в монопольном режиме?
Другие пользователи при входе получат отказ. Из кода это проверяет функция МонопольныйРежим(), которая возвращает Истина, если режим установлен.
Что будет, если во время монопольного обновления пропадёт свет?
Обновление структуры прервётся, и база может не открыться или открыться с ошибками. Поэтому копию делают до начала работ, а не после.
Сколько держать блокировку, если обновление идёт долго?
Задайте время окончания с запасом, например на 2–3 часа больше ожидаемого. Если закончили раньше, снимите блокировку вручную.