Пользователи не выходят из базы: принудительное завершение сеансов 1С 8.3

· 9 мин

Содержание

В клиент-серверной 1С 8.3 активный сеанс снимают в консоли администрирования серверов: Кластеры → <кластер> → Информационные базы → <база> → Сеансы, правой кнопкой по строке — Удалить. Из командной строки то же делает rac session terminate. В файловой базе сервера нет, и «снять сеанс» можно только закрыв процесс 1С на компьютере пользователя или разорвав его подключение к общей папке.

Частое заблуждение — что окно Конфигуратора Администрирование → Активные пользователи умеет выгонять людей. Оно лишь показывает, кто сидит в базе. Чтобы принудительно завершить сеансы и не дать пользователям вернуться, нужны два действия: удалить текущие сеансы и включить блокировку новых подключений.

Где посмотреть, кто сейчас работает в базе

Сначала поймите, кого именно вы собираетесь отключать. Сеанс — это не только бухгалтер с открытым окном. Это ещё фоновые и регламентные задания, Конфигуратор, COM-соединения внешних программ, веб-сервисы и обмены.

Где видно список:

  • 🖥️ Консоль администрирования серверов — полный список с приложением, компьютером, рабочим процессом, временем начала и последней активности. Работает только для клиент-серверной базы.
  • 📋 Обработка «Активные пользователи» в типовых конфигурациях на БСП (БП 3.0, ЗУП 3.1, УТ 11) — раздел Администрирование → Обслуживание. Видны пользователи, компьютер, приложение, время начала.
  • 🛠️ Конфигуратор, Администрирование → Активные пользователи — только просмотр.
  • 💻 Командная строка — rac session list выводит все сеансы кластера с UUID, которые нужны для удаления.

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

КолонкаЧто подсказывает
ПриложениеТонкий клиент, Конфигуратор, фоновое задание, COM-соединение, веб-сервис
КомпьютерС какой машины подключение — по нему находят забывшего выйти
Последняя активностьДавно не было активности — кандидат на отключение
Время вызова текущееСеанс прямо сейчас выполняет серверный вызов
Заблокировано СУБДСеанс ждёт блокировку в базе данных — признак зависания

Сеанс с приложением «Конфигуратор» удаляйте последним и только после звонка владельцу. Несохранённые изменения конфигурации пропадут.

Как завершить сеанс пользователя из интерфейса

В консоли кластера

  1. Запустите «Администрирование серверов 1С Предприятия» (оснастка ставится вместе с сервером).
  2. Раскройте Центральные серверы 1С:Предприятия → <сервер> → Кластеры → <кластер> → Информационные базы → <база> → Сеансы.
  3. Выделите одну или несколько строк. Shift и Ctrl работают как в Проводнике.
  4. Правая кнопка мыши → Удалить. Консоль попросит подтверждение.

Если кластер защищён администратором, консоль сначала запросит его имя и пароль. Пользователь увидит сообщение о разрыве соединения, его клиент закроется или предложит перезапуск.

Чтобы снять сеансы сразу во всех базах кластера, откройте узел Сеансы на уровне самого кластера, а не конкретной базы.

Через «Активные пользователи» в типовой конфигурации

Удобно, если у вас нет доступа к серверу, но есть полные права в базе:

  1. Откройте Администрирование → Обслуживание и перейдите по ссылке «Активные пользователи».
  2. Выделите нужного пользователя.
  3. Нажмите команду завершения сеанса в командной панели формы.
  4. При необходимости введите параметры администратора кластера — программа их запросит.

Завершение сеансов из этой обработки работает только в клиент-серверном варианте. В файловой базе команда недоступна.

Сравнение способов

СпособКогда подходитОграничения
Консоль кластераЕсть доступ к серверу или к консоли с рабочего местаТолько клиент-серверная база
«Активные пользователи» в БСПАдминистратор базы без доступа к серверуНужен пароль администратора кластера, если он задан
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 или тестированием и исправлением базы нужна блокировка.

Правильный порядок

Последовательность важна, иначе часть пользователей успеет переподключиться:

  1. Предупредите людей заранее — письмом или в чате, за 15–30 минут.
  2. Включите блокировку начала сеансов и регламентных заданий.
  3. Удалите оставшиеся сеансы.
  4. Проверьте список: в нём должен остаться только ваш сеанс.
  5. После работ снимите блокировку и убедитесь, что регламентные задания снова запускаются.

В консоли кластера

Откройте свойства информационной базы (правая кнопка по базе → Свойства) и заполните:

  • ✅ «Блокировка начала сеансов включена» — флажок;
  • 🕒 «Начало» и «Конец» — интервал блокировки (можно оставить пустыми);
  • 💬 «Сообщение» — что увидит пользователь при попытке входа;
  • 🔑 «Код разрешения» — с ним можно войти, несмотря на блокировку;
  • ⏸️ «Блокировка регламентных заданий включена» — чтобы фоновые задания не стартовали заново.

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

Код разрешения передают при запуске параметром /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. Значит, отключать надо процессы или сетевые подключения к файлу.

Варианты от мягкого к жёсткому:

  1. Блокировка через БСП. Обработка «Блокировка работы пользователей» работает и в файловом режиме: клиенты получают предупреждение и закрываются сами. Это самый безопасный путь.
  2. Открытые файлы на сервере-шаре. На компьютере, где лежит папка базы, запустите fsmgmt.msc → «Открытые файлы». Найдите 1Cv8.1CD, по колонке «Пользователь» поймёте, кто держит базу. Правая кнопка → «Закрыть открытый файл».
  3. Терминальный сервер . Если 1С работает через RDP, в Диспетчере задач на вкладке «Пользователи» видно процессы каждого сеанса. Процесс 1cv8c.exe можно завершить у конкретного пользователя.
  4. Удалённо по сети — taskkill /S <компьютер> /IM 1cv8c.exe, при наличии прав администратора на той машине.

Закрытие файла или завершение процесса посреди записи может оставить незавершённую транзакцию. Делайте это, только если пользователь не проводит документы прямо сейчас, и после — запустите базу и проверьте, что она открывается.

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

Зависший сеанс не удаляется: проверка процессов на уровне ОС

Бывает, что сеанс удалили, а он висит в списке. Или пропадает и через секунду появляется снова. Разберитесь по симптому.

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

Как найти зависший rphost

Процессы сервера 1С:

ПроцессРоль
ragent.exeАгент сервера, принимает подключения (порт 1540)
rmngr.exeМенеджер кластера (порт 1541)
rphost.exeРабочий процесс, обслуживает сеансы
ras.exeСервер администрирования для rac

Порядок проверки:

  1. В консоли откройте Рабочие процессы кластера. Там указан PID каждого rphost и занимаемая им память.
  2. В Диспетчере задач Windows на вкладке «Подробности» включите колонку «ИД процесса» и найдите тот же PID.
  3. Посмотрите память и загрузку процессора. Процесс, который съел всю память или на 100% грузит ядро без активных вызовов, — кандидат на перезапуск.

Завершение процесса rphost.exe обрывает все сеансы, которые он обслуживает, а не один. Таких сеансов может быть несколько десятков. Делайте это вне рабочего времени или после предупреждения всех пользователей базы.

Безопаснее сначала выключить процесс в консоли: в его свойствах снимите флажок «Включен». Кластер перестанет назначать на него новые сеансы и завершит его, когда текущие уйдут. Жёсткое «Завершить процесс» в Диспетчере задач — последний шаг.

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

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

Освобождается ли лицензия после удаления сеанса?
Да. Клиентская лицензия освобождается вместе с сеансом. Проверить, какие лицензии заняты, можно командой rac session list --licenses.
Почему пользователь снова в базе через минуту после удаления?
Удаление сеанса не запрещает вход. Чтобы человек не вернулся, включите блокировку начала сеансов в свойствах базы или через обработку блокировки в типовой конфигурации.
Можно ли завершить сеанс из 1С без консоли и без прав на сервер?
Только через обработку «Активные пользователи» в типовой конфигурации, и то при клиент-серверной базе. Если на кластере задан администратор, понадобятся его имя и пароль.
Что будет с документом, который пользователь не сохранил?
Несохранённые изменения пропадут. Транзакция, которая шла в момент удаления, откатится: документ останется в том состоянии, в котором был до попытки записи.
Как снять сеансы ночью по расписанию?
Поставьте PowerShell-скрипт с rac в Планировщик заданий Windows. Перед ним добавьте команду rac infobase update с --sessions-deny=on, после регламента — с --sessions-deny=off.