Пользователи не выходят из базы: принудительное завершение сеансов 1С 8.3
Содержание
В клиент-серверной 1С 8.3 активный сеанс снимают в консоли администрирования серверов: Кластеры → <кластер> → Информационные базы → <база> → Сеансы, правой кнопкой по строке — Удалить. Из командной строки то же делает rac session terminate. В файловой базе сервера нет, и «снять сеанс» можно только закрыв процесс 1С на компьютере пользователя или разорвав его подключение к общей папке.
Частое заблуждение — что окно Конфигуратора Администрирование → Активные пользователи умеет выгонять людей. Оно лишь показывает, кто сидит в базе. Чтобы принудительно завершить сеансы и не дать пользователям вернуться, нужны два действия: удалить текущие сеансы и включить блокировку новых подключений.
Где посмотреть, кто сейчас работает в базе
Сначала поймите, кого именно вы собираетесь отключать. Сеанс — это не только бухгалтер с открытым окном. Это ещё фоновые и регламентные задания, Конфигуратор, COM-соединения внешних программ, веб-сервисы и обмены.
Где видно список:
- 🖥️ Консоль администрирования серверов — полный список с приложением, компьютером, рабочим процессом, временем начала и последней активности. Работает только для клиент-серверной базы.
- 📋 Обработка «Активные пользователи» в типовых конфигурациях на БСП (БП 3.0, ЗУП 3.1, УТ 11) — раздел
Администрирование → Обслуживание. Видны пользователи, компьютер, приложение, время начала. - 🛠️ Конфигуратор,
Администрирование → Активные пользователи— только просмотр. - 💻 Командная строка —
rac session listвыводит все сеансы кластера с UUID, которые нужны для удаления.
Какие колонки смотреть в консоли
| Колонка | Что подсказывает |
|---|---|
| Приложение | Тонкий клиент, Конфигуратор, фоновое задание, COM-соединение, веб-сервис |
| Компьютер | С какой машины подключение — по нему находят забывшего выйти |
| Последняя активность | Давно не было активности — кандидат на отключение |
| Время вызова текущее | Сеанс прямо сейчас выполняет серверный вызов |
| Заблокировано СУБД | Сеанс ждёт блокировку в базе данных — признак зависания |
Сеанс с приложением «Конфигуратор» удаляйте последним и только после звонка владельцу. Несохранённые изменения конфигурации пропадут.
Как завершить сеанс пользователя из интерфейса
В консоли кластера
- Запустите «Администрирование серверов 1С Предприятия» (оснастка ставится вместе с сервером).
- Раскройте
Центральные серверы 1С:Предприятия → <сервер> → Кластеры → <кластер> → Информационные базы → <база> → Сеансы. - Выделите одну или несколько строк. Shift и Ctrl работают как в Проводнике.
- Правая кнопка мыши →
Удалить. Консоль попросит подтверждение.
Если кластер защищён администратором, консоль сначала запросит его имя и пароль. Пользователь увидит сообщение о разрыве соединения, его клиент закроется или предложит перезапуск.
Чтобы снять сеансы сразу во всех базах кластера, откройте узел Сеансы на уровне самого кластера, а не конкретной базы.
Через «Активные пользователи» в типовой конфигурации
Удобно, если у вас нет доступа к серверу, но есть полные права в базе:
- Откройте
Администрирование → Обслуживаниеи перейдите по ссылке «Активные пользователи». - Выделите нужного пользователя.
- Нажмите команду завершения сеанса в командной панели формы.
- При необходимости введите параметры администратора кластера — программа их запросит.
Завершение сеансов из этой обработки работает только в клиент-серверном варианте. В файловой базе команда недоступна.
Сравнение способов
| Способ | Когда подходит | Ограничения |
|---|---|---|
| Консоль кластера | Есть доступ к серверу или к консоли с рабочего места | Только клиент-серверная база |
| «Активные пользователи» в БСП | Администратор базы без доступа к серверу | Нужен пароль администратора кластера, если он задан |
rac | Скрипты, ночные регламенты, массовое отключение | Нужен запущенный ras |
| Блокировка сеансов | Перед обновлением, чтобы никто не вернулся | Сама по себе не выгоняет тех, кто уже внутри (кроме варианта БСП) |
Снятие сеансов из командной строки: rac и ras
Утилита rac.exe лежит в каталоге платформы, обычно C:\Program Files\1cv8\<версия>\bin\. Она общается не с агентом напрямую, а с сервером администрирования ras. По умолчанию ras слушает порт 1545.
Шаг 1. Запустить ras
Разово, для проверки:
"C:\Program Files\1cv8\<версия>\bin\ras.exe" cluster --port=1545 localhost:1540
Для постоянной работы ras регистрируют службой Windows. Без него rac вернёт ошибку подключения.
Шаг 2. Найти кластер, базу и сеансы
rac cluster list
rac infobase summary list --cluster=<UUID кластера>
rac session list --cluster=<UUID кластера> --infobase=<UUID базы>
Если у кластера есть администратор, добавляйте --cluster-user=<имя> --cluster-pwd=<пароль> к каждой команде, кроме cluster list.
В выводе session list каждая запись начинается со строки session : <UUID>. Там же видны user-name, host, app-id. Ключ --licenses показывает, какие лицензии занимают сеансы.
Шаг 3. Удалить сеанс
rac session terminate --cluster=<UUID кластера> --session=<UUID сеанса>
Если ваша версия rac поддерживает текст для пользователя, его передают параметром — проверьте точное имя в rac help session.
Скрипт: отключить всех в одной базе
Пример на PowerShell. Он берёт первый кластер на сервере и завершает все сеансы указанной базы:
$rac = "C:\Program Files\1cv8\<версия>\bin\rac.exe"
$base = "buh" # имя базы в кластере
$cluster = ((& $rac cluster list | Select-String '^cluster\s+:')[0].Line -split ':',2)[1].Trim()
$lines = & $rac infobase summary list --cluster=$cluster
$ib = $null
for ($i = 0; $i -lt $lines.Count; $i++) {
if ($lines[$i] -match '^infobase\s+:\s+(\S+)') { $cur = $Matches[1] }
if ($lines[$i] -match "^name\s+:\s+$base\s*$") { $ib = $cur }
}
if (-not $ib) { Write-Host "База $base не найдена"; exit 1 }
& $rac session list --cluster=$cluster --infobase=$ib |
Select-String '^session\s+:' |
ForEach-Object {
$id = ($_.Line -split ':',2)[1].Trim()
& $rac session terminate --cluster=$cluster --session=$id
}
Скрипт выгоняет всех, включая фоновые задания и Конфигуратор. Запускайте его вне рабочего времени или после предупреждения пользователей.
Блокировка новых подключений перед обновлением
Удалённый сеанс через минуту может вернуться: пользователь просто перезапустит 1С. Перед обновлением, загрузкой .dt или тестированием и исправлением базы нужна блокировка.
Правильный порядок
Последовательность важна, иначе часть пользователей успеет переподключиться:
- Предупредите людей заранее — письмом или в чате, за 15–30 минут.
- Включите блокировку начала сеансов и регламентных заданий.
- Удалите оставшиеся сеансы.
- Проверьте список: в нём должен остаться только ваш сеанс.
- После работ снимите блокировку и убедитесь, что регламентные задания снова запускаются.
В консоли кластера
Откройте свойства информационной базы (правая кнопка по базе → Свойства) и заполните:
- ✅ «Блокировка начала сеансов включена» — флажок;
- 🕒 «Начало» и «Конец» — интервал блокировки (можно оставить пустыми);
- 💬 «Сообщение» — что увидит пользователь при попытке входа;
- 🔑 «Код разрешения» — с ним можно войти, несмотря на блокировку;
- ⏸️ «Блокировка регламентных заданий включена» — чтобы фоновые задания не стартовали заново.
Консоль попросит логин и пароль администратора информационной базы. Блокировка не выгоняет тех, кто уже внутри, — их удаляйте отдельно.
Код разрешения передают при запуске параметром /UC:
"C:\Program Files\1cv8\<версия>\bin\1cv8.exe" DESIGNER /S"srv1c\buh" /N"Администратор" /P"пароль" /UC"7777"
Через rac
rac infobase update --cluster=<UUID кластера> --infobase=<UUID базы> ^
--infobase-user=Администратор --infobase-pwd=пароль ^
--sessions-deny=on --scheduled-jobs-deny=on ^
--denied-message="Обновление базы до 22:00" --permission-code=7777
После работ повторите команду с --sessions-deny=off --scheduled-jobs-deny=off.
Средствами типовой конфигурации
В конфигурациях на БСП есть обработка «Блокировка работы пользователей» (Администрирование → Обслуживание). Её отличие от консоли — она не только запрещает вход, но и мягко завершает работу тех, кто внутри. Пользователи получают предупреждение, а по истечении времени их сеансы закрываются.
Ту же процедуру можно запустить без входа в интерфейс, параметром командной строки:
1cv8.exe ENTERPRISE /S"srv1c\buh" /N"Администратор" /P"пароль" /C"ЗавершитьРаботуПользователей" /UC"7777"
Снять блокировку — тем же способом с /C"РазрешитьРаботуПользователей" и тем же кодом /UC.
Код разрешения запишите до включения блокировки. Если забудете его, войти сможете только после снятия блокировки в консоли кластера.
Файловая база: как выгнать пользователей без сервера
У файловой базы нет кластера и сеансов в серверном понимании. Каждый пользователь — это процесс 1cv8.exe или 1cv8c.exe, который держит открытым файл 1Cv8.1CD. Значит, отключать надо процессы или сетевые подключения к файлу.
Варианты от мягкого к жёсткому:
- Блокировка через БСП. Обработка «Блокировка работы пользователей» работает и в файловом режиме: клиенты получают предупреждение и закрываются сами. Это самый безопасный путь.
- Открытые файлы на сервере-шаре. На компьютере, где лежит папка базы, запустите
fsmgmt.msc→ «Открытые файлы». Найдите1Cv8.1CD, по колонке «Пользователь» поймёте, кто держит базу. Правая кнопка → «Закрыть открытый файл». - Терминальный сервер
. Если 1С работает через RDP, в Диспетчере задач на вкладке «Пользователи» видно процессы каждого сеанса. Процесс
1cv8c.exeможно завершить у конкретного пользователя. - Удалённо по сети —
taskkill /S <компьютер> /IM 1cv8c.exe, при наличии прав администратора на той машине.
Закрытие файла или завершение процесса посреди записи может оставить незавершённую транзакцию. Делайте это, только если пользователь не проводит документы прямо сейчас, и после — запустите базу и проверьте, что она открывается.
После того как все вышли, база доступна монопольно: можно обновлять конфигурацию или делать тестирование и исправление.
Зависший сеанс не удаляется: проверка процессов на уровне ОС
Бывает, что сеанс удалили, а он висит в списке. Или пропадает и через секунду появляется снова. Разберитесь по симптому.
Как найти зависший rphost
Процессы сервера 1С:
| Процесс | Роль |
|---|---|
ragent.exe | Агент сервера, принимает подключения (порт 1540) |
rmngr.exe | Менеджер кластера (порт 1541) |
rphost.exe | Рабочий процесс, обслуживает сеансы |
ras.exe | Сервер администрирования для rac |
Порядок проверки:
- В консоли откройте
Рабочие процессыкластера. Там указан PID каждогоrphostи занимаемая им память. - В Диспетчере задач Windows на вкладке «Подробности» включите колонку «ИД процесса» и найдите тот же PID.
- Посмотрите память и загрузку процессора. Процесс, который съел всю память или на 100% грузит ядро без активных вызовов, — кандидат на перезапуск.
Завершение процесса rphost.exe обрывает все сеансы, которые он обслуживает, а не один. Таких сеансов может быть несколько десятков. Делайте это вне рабочего времени или после предупреждения всех пользователей базы.
Безопаснее сначала выключить процесс в консоли: в его свойствах снимите флажок «Включен». Кластер перестанет назначать на него новые сеансы и завершит его, когда текущие уйдут. Жёсткое «Завершить процесс» в Диспетчере задач — последний шаг.
Перезапуск всей службы «Агент сервера 1С:Предприятия» обрывает сеансы во всех базах кластера. Прибегайте к нему, только если не помогло остальное.
Частые вопросы
Освобождается ли лицензия после удаления сеанса?
rac session list --licenses.Почему пользователь снова в базе через минуту после удаления?
Можно ли завершить сеанс из 1С без консоли и без прав на сервер?
Что будет с документом, который пользователь не сохранил?
Как снять сеансы ночью по расписанию?
rac в Планировщик заданий Windows. Перед ним добавьте команду rac infobase update с --sessions-deny=on, после регламента — с --sessions-deny=off.