Освобождаем информационную базу перед обновлением: блокировка входа и завершение сеансов

· 9 мин

Содержание

Чтобы корректно выкинуть всех из базы 1С, сначала закройте вход, а уже потом завершайте сеансы. В типовых конфигурациях это делается в Администрирование → Обслуживание через форму «Блокировка работы пользователей». В клиент-серверном варианте то же самое можно сделать в консоли кластера или утилитой rac. Если сделать наоборот, вы освободите базу на пару секунд: бухгалтер, которого выбросило, тут же зайдёт снова, и обновление опять не получит монопольный доступ.

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

Кто сейчас работает в базе: смотрим до того, как отключать

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

Где его открыть:

  • 🖥️ В пользовательском режиме: Администрирование → Обслуживание, ссылка «Активные пользователи».
  • 🛠️ В Конфигураторе: меню Администрирование → Активные пользователи.
  • 🧩 В консоли кластера (клиент-серверная база ): Информационные базы → <ваша база> → Сеансы.
  • ⌨️ Из командной строки: rac session list (подробно ниже).

На что смотреть в списке:

КолонкаЗачем она нужна
ПользовательКого предупредить заранее, если это главбух в разгаре закрытия месяца
Приложение«Тонкий клиент», «Веб-клиент», «Конфигуратор», «Фоновое задание», «COM-соединение»
КомпьютерНайти машину, где 1С висит со вчерашнего дня
Начало работыОтличить зависший сеанс от рабочего

Сеанс с приложением «COM-соединение» или «Фоновое задание» обычно принадлежит обмену или регламентному заданию. Людей обзванивать бесполезно: такие сеансы вернутся, пока вы не заблокируете регламентные задания.

Перед отключением отправьте сообщение в общий чат или по почте: «В 19:00 база закрывается на 30 минут, сохраните документы». Несохранённая форма документа при завершении сеанса теряется. Предупреждение за 10–15 минут решает почти все конфликты.

Блокировка входа штатными средствами программы

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

Пошагово

  1. Войдите в базу под пользователем с полными правами.
  2. Откройте Администрирование → Обслуживание и перейдите по ссылке «Блокировка работы пользователей».
  3. Заполните текст сообщения. Его увидят те, кто попробует войти: «Идёт обновление, вход после 20:00».
  4. Задайте время начала и окончания. Если оставить начало пустым, блокировка начнётся сразу.
  5. Впишите код разрешения, например 7319. С ним администратор войдёт в закрытую базу.
  6. Нажмите кнопку установки блокировки.
  7. В клиент-серверной базе программа попросит параметры администрирования кластера. Без них она не сможет завершить чужие сеансы на сервере.

После этого откройте «Активные пользователи» ещё раз. В списке должен остаться только ваш сеанс.

Как войти в закрытую базу

Добавьте к строке запуска параметр /UC с кодом разрешения:

"C:\Program Files\1cv8\common\1cestart.exe" ENTERPRISE /S"srv1c\buh" /UC7319

В окне запуска это делается так: выделите базу, нажмите Изменить…, дойдите до последней страницы и впишите /UC7319 в поле дополнительных параметров запуска.

Снять блокировку

В той же форме нажмите кнопку снятия блокировки. Если вы задали время окончания, блокировка снимется сама.

Код разрешения не пишите в тексте сообщения для пользователей. Звучит очевидно, но «вход по коду 7319» в сообщении встречается регулярно.

Запуск с командой завершения сеансов

В конфигурациях на БСП есть ещё один приём, полезный для скриптов. Параметр запуска /C"ЗавершитьРаботуПользователей" ставит блокировку и выкидывает всех, а /C"РазрешитьРаботуПользователей" снимает её:

"C:\Program Files\1cv8\common\1cestart.exe" ENTERPRISE /S"srv1c\buh" /N"Админ" /P"пароль" /C"ЗавершитьРаботуПользователей" /UC7319

Сеанс, запущенный с этой командой, дождётся, пока остальные отключатся, и закроется сам. Код /UC в той же строке нужен, чтобы потом войти обратно.

Монопольный режим: где он на самом деле нужен

Монопольный доступ нужен не для любой работы в Конфигураторе. Он требуется для обновления структуры базы данных («Обновить конфигурацию базы данных»), загрузки файла .dt, тестирования и исправления. Пока в базе есть хоть один чужой сеанс, включая фоновые, эти операции не запустятся.

Поэтому схема всегда одна: блокировка входа → проверка списка активных → операция в Конфигураторе с /UC → снятие блокировки.

Консоль кластера: принудительное отключение пользователей от базы

В клиент-серверном варианте консоль администрирования кластера даёт полный контроль. Она работает и тогда, когда войти в саму базу нельзя: например, база зависла или конфигурация не открывается.

Если консоль не запускается

Оснастка MMC требует зарегистрированной библиотеки radmin.dll той же версии, что и сервер. После обновления платформы консоль часто перестаёт открываться. Лечится перерегистрацией из командной строки от имени администратора:

regsvr32 "C:\Program Files\1cv8\8.3.25.1374\bin\radmin.dll"

Номер версии в пути подставьте свой: он должен совпадать с версией сервера 1С, к которому подключаетесь.

Закрыть вход на уровне кластера

  1. Раскройте Информационные базы, нажмите правой кнопкой на базу → «Свойства».
  2. Введите имя и пароль администратора информационной базы (пользователя 1С с полными правами).
  3. Включите блокировку начала сеансов, задайте сообщение, интервал и код разрешения.
  4. Отдельным флажком включите блокировку регламентных заданий.
  5. Нажмите ОК.

Эта блокировка действует на уровне сервера. Она сработает даже в нетиповой конфигурации без БСП.

Завершить сеансы

  1. Откройте Информационные базы → <база> → Сеансы.
  2. Выделите все строки, кроме своей (Shift или Ctrl).
  3. Нажмите правой кнопкой → «Удалить».

Пользователь увидит сообщение о разрыве соединения, его клиент закроется.

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

Командная строка: rac, ras и менеджер кластера rmngr

rmngr — это процесс менеджера кластера, а не утилита с командами. Сеансами и блокировками он управляет сам, а вы отдаёте ему команды через сервер администрирования ras и клиент rac. Работает это для клиент-серверной базы.

Подготовка

На сервере должен работать ras. Его ставят службой или запускают вручную:

ras cluster --port=1545 localhost:1540

Здесь 1540 — порт агента сервера, 1545 — порт, на котором ras ждёт команд от rac.

Порядок команд

rem 1. UUID кластера
rac localhost:1545 cluster list

rem 2. UUID информационной базы
rac localhost:1545 infobase summary list --cluster=<UUID_кластера>

rem 3. Закрыть вход и регламентные задания
rac localhost:1545 infobase update --cluster=<UUID_кластера> --infobase=<UUID_базы> ^
  --infobase-user="Админ" --infobase-pwd="пароль" ^
  --sessions-deny=on --scheduled-jobs-deny=on ^
  --denied-message="Обновление базы, вход после 20:00" --permission-code=7319

rem 4. Список сеансов базы
rac localhost:1545 session list --cluster=<UUID_кластера> --infobase=<UUID_базы>

rem 5. Завершить сеанс
rac localhost:1545 session terminate --cluster=<UUID_кластера> --session=<UUID_сеанса>

Если у кластера задан администратор, добавляйте к командам --cluster-user и --cluster-pwd. Полный список параметров для вашей версии покажет rac help infobase или rac help session.

Снять блокировку — та же команда infobase update с --sessions-deny=off --scheduled-jobs-deny=off.

Если сеанс не исчезает

Иногда сеанс висит после terminate: процесс занят долгим запросом к СУБД. Подождите 1–2 минуты и повторите. Посмотрите в консоли узел «Блокировки» базы: он покажет, какой сеанс держит объекты.

Крайняя мера — перезапуск рабочего процесса rphost или службы сервера 1С.

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

Файловая база: что работает, а что нет

Консоли кластера и rac у файловой базы нет. Там вся логика держится на самой программе и на файловой системе.

Что работает:

  • ✅ «Активные пользователи» в программе и в Конфигураторе: список виден.
  • ✅ Форма «Блокировка работы пользователей» и параметр /C"ЗавершитьРаботуПользователей". Клиенты пользователей сами получают команду и закрываются.
  • ✅ Код /UC для входа администратора.

Чего нет:

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

Когда клиент завис и не закрывается

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

Порядок действий:

  1. На компьютере, где лежит каталог базы, откройте fsmgmt.msc (оснастка «Общие папки»).
  2. Перейдите в «Открытые файлы» и найдите 1Cv8.1CD.
  3. Посмотрите колонку пользователя: это и есть «потерявшийся» сеанс.
  4. Если дозвониться нельзя, закройте файл через контекстное меню.

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

Если база лежит не на сетевом ресурсе, а на локальном диске сервера терминалов, ищите процесс 1cv8.exe или 1cv8c.exe нужного пользователя в диспетчере задач на вкладке «Пользователи». Это тоже обрывает работу без сохранения.

Ночное окно по расписанию: автоматизируем отключение

Обновлять базу и делать выгрузку удобно ночью. Будить администратора ради этого необязательно.

Блокировка с интервалом

В форме блокировки (и в свойствах базы в кластере) есть поля начала и окончания. Поставьте, например, с 23:00 до 23:45. Днём блокировку можно установить заранее: до 23:00 она не мешает, а в 23:00 программа сама начнёт выводить людей. В 23:45 вход откроется.

Скрипт для планировщика Windows

Для клиент-серверной базы подойдёт bat-файл на rac, который ставит блокировку и завершает все сеансы. UUID кластера и базы получите один раз командами из раздела выше и впишите в переменные.

@echo off
set RAC="C:\Program Files\1cv8\8.3.25.1374\bin\rac.exe"
set SRV=localhost:1545
set CL=<UUID_кластера>
set IB=<UUID_базы>

%RAC% %SRV% infobase update --cluster=%CL% --infobase=%IB% ^
  --infobase-user="Админ" --infobase-pwd="пароль" ^
  --sessions-deny=on --scheduled-jobs-deny=on ^
  --denied-message="Ночное обслуживание" --permission-code=7319

for /f "tokens=2 delims=: " %%s in ('%RAC% %SRV% session list --cluster^=%CL% --infobase^=%IB% ^| findstr /b "session"') do (
  %RAC% %SRV% session terminate --cluster=%CL% --session=%%s
)

Дальше в том же скрипте запускается нужная операция с /UC7319, а в конце — команда снятия блокировки с --sessions-deny=off --scheduled-jobs-deny=off. Задание в планировщике запускайте от учётной записи, у которой есть доступ к rac.exe.

Пароли в bat-файле лежат открытым текстом. Храните скрипт в папке, доступной только администраторам, и заведите для обслуживания отдельного пользователя 1С.

Для файловой базы вместо rac используйте запуск 1cestart.exe с /C"ЗавершитьРаботуПользователей": сеанс сам дождётся отключения остальных.

Перед тем как закрыть базу
Выполнено: 0 / 6

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

Можно ли выкинуть всех из базы, если сам в неё войти не могу?
В клиент-серверном варианте — да: консоль кластера и rac работают без входа в базу. Нужны права администратора кластера и учётные данные администратора информационной базы для установки блокировки.
Забыл код разрешения, база заблокирована. Что делать?
В клиент-серверной базе снимите блокировку в свойствах базы в консоли кластера или командой rac infobase update с --sessions-deny=off. Если блокировку ставили на время, она снимется сама по окончании интервала.
Почему после снятия сеансов база всё равно занята?
Чаще всего виноваты регламентные задания и обмены: они открывают фоновые сеансы заново. Включите блокировку регламентных заданий и проверьте список ещё раз.
Сколько ждать, пока пользователи отключатся после блокировки?
Если начало блокировки задано на ближайшие минуты, программа предупреждает пользователей и закрывает их сеансы к назначенному времени. Зависший клиент может не отреагировать — его придётся снять вручную.
Заблокирует ли это вход через веб-клиент?
Да. Блокировка начала сеансов действует на любые клиенты этой базы, включая веб-клиент и COM-соединения. Обмены, которые подключаются к базе как отдельный сеанс, тоже получат отказ.