Отключаем зависшего пользователя от базы 1С без перезагрузки сервера

· 9 мин

Содержание

Завершить сеанс пользователя в 1С:Предприятии 8.3 быстрее всего так: в клиент-серверной базе откройте консоль администрирования кластера, раскройте Информационные базы → <ваша база> → Сеансы, щёлкните по нужной строке правой кнопкой и выберите «Удалить». В типовой конфигурации на БСП то же самое делается без консоли: Администрирование → Обслуживание → Активные пользователи, кнопка «Завершить сеанс».

Типичная ситуация: вечер, пора ставить обновление, а в списке активных пользователей висит менеджер, который ушёл домой и не закрыл программу. Или бухгалтер жалуется, что 1С «не пускает»: его старый сеанс после обрыва связи всё ещё держит лицензию. Отключить его можно тремя способами — из самой программы, из консоли кластера и командой rac, — а блокировка входа не даст ему вернуться.

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

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

Обрывать сеанс без предупреждения приходится в таких случаях:

  • 🔧 Обновление конфигурации с изменением структуры базы — для него нужен монопольный доступ.
  • 📦 Загрузка .dt, тестирование и исправление базы — тоже только в монопольном режиме.
  • 🔑 Не хватает лицензий: зависшие сеансы занимают места, и новые пользователи получают отказ.
  • 🐢 Сеанс тормозит всех: долгий отчёт или обработка держит блокировки, остальные ждут.
  • 🚪 Увольнение или смена прав — нужно, чтобы сотрудник вышел из базы прямо сейчас, а не при следующем входе.

Сеанс фонового задания (обмена, загрузки банковской выписки, расчёта) обрывать опасно: операция прервётся на середине. Если в списке видите сеанс с приложением «Фоновое задание», сначала выясните, что оно делает.

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

Это самый удобный путь для бухгалтерских баз: не нужен доступ к серверу, не нужна консоль.

В типовой конфигурации (БП 3.0, ЗУП 3.1, УТ 11)

  1. Откройте Администрирование → Обслуживание.
  2. Перейдите по ссылке «Активные пользователи».
  3. Выделите строку пользователя. В колонках видно приложение (тонкий клиент, веб-клиент, Конфигуратор, фоновое задание), компьютер и время начала сеанса.
  4. Нажмите «Завершить сеанс».
  5. Если база клиент-серверная и на кластере задан администратор, программа попросит его имя и пароль. Введите их — это учётная запись администратора кластера, а не пользователя 1С.

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

💡 Двойной щелчок по строке в списке открывает журнал регистрации с отбором по этому сеансу. Так видно, что пользователь делал последним, — полезно, если сеанс «висит» и нужно понять почему.

В Конфигураторе

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

Если база файловая

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

  • закрыть программу на компьютере пользователя (сам пользователь, удалённый доступ или диспетчер задач на терминальном сервере — процесс 1cv8c.exe или 1cv8.exe);
  • включить блокировку работы пользователей (см. раздел про регламентные работы) — программа сама предупредит всех и закроет их сеансы.

Завершая процесс через диспетчер задач, проверьте пользователя в колонке «Пользователь». На терминальном сервере у каждого сотрудника свой 1cv8c.exe, легко убить чужой.

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

Консоль — это оснастка MMC «Администрирование серверов 1С:Предприятия». Она ставится вместе с платформой и работает только для клиент-серверных баз.

Подготовка: если консоль не открывается

Самая частая проблема — консоль выдаёт ошибку при запуске или не видит сервер. Причина обычно одна: не зарегистрирована библиотека radmin.dll нужной версии платформы. Запустите командную строку от имени администратора и выполните:

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

Номер версии в пути подставьте свой — он должен совпадать с версией платформы на сервере. После смены релиза платформы регистрацию нужно повторить.

Пошагово

  1. Запустите консоль, щёлкните правой кнопкой по «Central 1C:Enterprise 8.3 servers» и добавьте центральный сервер: имя компьютера и порт агента (по умолчанию 1540).
  2. Раскройте Кластеры → <кластер> → Информационные базы → <ваша база> → Сеансы.
  3. Найдите пользователя. Помогут колонки «Пользователь», «Компьютер», «Приложение», «Начало работы».
  4. Щёлкните по строке правой кнопкой и выберите «Удалить». Подтвердите.

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

💡 Узел Сеансы есть и на уровне всего кластера — там видны сеансы всех баз. Удобно, если на сервере десяток баз и непонятно, в какой из них «застрял» человек.

Сеанс и соединение — не одно и то же

В консоли есть узлы «Сеансы» и «Соединения». Сеанс — это работа пользователя с базой: его права, лицензия, открытые данные. Соединение — канал связи между клиентом и рабочим процессом. Пользователя отключают через сеанс. Удаление одного соединения сеанс обычно не закрывает: клиент переподключится.

Способ 3. Утилита rac: завершение сеансов из командной строки

rac пригодится, если на сервере Linux, нет графического доступа или нужно отключать пользователей по расписанию — например, ночью перед резервным копированием.

Запуск сервера администрирования ras

rac работает не напрямую с кластером, а через сервер администрирования ras (порт по умолчанию 1545). Его нужно запустить на сервере 1С. Для проверки — вручную:

"C:\Program Files\1cv8\8.3.24.1548\bin\ras.exe" cluster --port=1545 localhost:1540

Для постоянной работы ras регистрируют как службу Windows с ключом --service. На Linux его запускают как демон (--daemon) или через systemd.

Основные команды

Найти идентификатор кластера:

rac cluster list

Найти идентификатор базы:

rac infobase summary list --cluster=<uuid-кластера>

Посмотреть сеансы конкретной базы:

rac session list --cluster=<uuid-кластера> --infobase=<uuid-базы>

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

rac session terminate --cluster=<uuid-кластера> --session=<uuid-сеанса>

Если на кластере задан администратор, к каждой команде добавьте --cluster-user=<имя> --cluster-pwd=<пароль>. Без указания адреса rac подключается к localhost:1545. Для удалённого сервера адрес пишут после команды: rac cluster list srv1c:1545. Полный список параметров выдаёт rac help session.

Отключить всех пользователей базы одним скриптом

Вывод rac — блоки строк «ключ : значение». В блоке сеанса первая строка — session : <uuid>. Скрипт PowerShell ниже находит все сеансы базы и завершает их по очереди:

$rac     = "C:\Program Files\1cv8\8.3.24.1548\bin\rac.exe"
$cluster = "<uuid-кластера>"
$ib      = "<uuid-базы>"

& $rac session list --cluster=$cluster --infobase=$ib |
  Select-String '^session\s+:\s+(\S+)' |
  ForEach-Object {
    $id = $_.Matches[0].Groups[1].Value
    & $rac session terminate --cluster=$cluster --session=$id
  }

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

Блокировка новых подключений на время регламентных работ

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

СпособГдеПодходит для
Блокировка работы пользователей (БСП)Администрирование → ОбслуживаниеФайловые и клиент-серверные базы с типовой конфигурацией
Свойства базы в консоли кластераКарточка базы в консолиКлиент-серверные базы, любая конфигурация
rac infobase updateКомандная строкаАвтоматизация, Linux, ночные скрипты

Через программу

  1. Откройте Администрирование → Обслуживание и перейдите в «Блокировку работы пользователей».
  2. Отметьте запрет работы, напишите сообщение для пользователей: «С 20:00 до 21:00 обновление, сохраните документы».
  3. Укажите время начала и окончания блокировки.
  4. Задайте код разрешения — по нему администратор сможет войти в заблокированную базу.
  5. Нажмите «Установить блокировку».

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

Чтобы войти в заблокированную базу, добавьте к параметрам запуска ключ /UC с кодом разрешения:

"C:\Program Files\1cv8\8.3.24.1548\bin\1cv8.exe" DESIGNER /S"srv1c\buh" /UC1234

Через консоль кластера

Откройте свойства базы в консоли. Включите флажок «Блокировка начала сеансов включена», заполните время начала и конца, сообщение и код разрешения. Там же есть флажок «Блокировка регламентных заданий включена» — включите его, чтобы обмены и фоновые расчёты не стартовали во время работ.

Через rac

rac infobase update --cluster=<uuid-кластера> --infobase=<uuid-базы> ^
  --infobase-user=Администратор --infobase-pwd=<пароль> ^
  --sessions-deny=on --scheduled-jobs-deny=on ^
  --denied-message="Обновление базы" --permission-code=1234

Для этой команды нужны логин и пароль пользователя информационной базы с административными правами. После работ снимите блокировку той же командой с --sessions-deny=off --scheduled-jobs-deny=off.

Не забудьте снять блокировку после обновления. Иначе утром вся бухгалтерия увидит сообщение о регламентных работах и не сможет войти.

Почему сеансы зависают и как сделать так, чтобы их было меньше

Если отключать «призраков» приходится каждый день, проблема не в пользователях, а в настройках.

Откуда берутся зависшие сеансы

  • 📶 Обрыв связи. Ноутбук ушёл в сон, упал VPN, пропал Wi-Fi. Клиента уже нет, а сервер ещё какое-то время держит сеанс — вдруг клиент вернётся.
  • 🖥️ Закрытое окно RDP. Сотрудник нажал крестик в окне удалённого рабочего стола вместо «Выйти». Терминальная сессия осталась, 1С в ней продолжает работать.
  • ⏳ Долгая операция. Сеанс жив, просто выполняет тяжёлый отчёт или закрытие месяца . Его не стоит путать с зависшим.
  • 🔒 Ожидание блокировки. Сеанс ждёт, пока другой сеанс освободит данные. В консоли это видно по сеансам, которые долго находятся в одном вызове.

Что настроить

  1. Таймауты сеансов. В Конфигураторе, в Администрирование → Параметры информационной базы, задаются время засыпания пассивного сеанса и время завершения спящего сеанса. Первое — через сколько секунд без связи сеанс «засыпает» и отдаёт лицензию. Второе — через сколько спящий сеанс будет завершён окончательно.
  2. Завершение терминальных сессий. На терминальном сервере в групповой политике задайте лимит для отключённых сеансов RDP: например, завершать через 2 часа. Тогда брошенные окна не будут копиться неделями.
  3. Регламентные задания. Тяжёлые обмены и пересчёты переносите на ночь, чтобы днём они не держали блокировки.

Как найти виновника тормозов

В списке сеансов консоли кластера включите колонки с текущим временем вызова и нагрузкой на СУБД (через настройку колонок списка). Сеанс, у которого текущий вызов длится десятки минут, и есть тот, кто держит остальных. Прежде чем его удалить, посмотрите в журнале регистрации, что именно запущено: может, это закрытие месяца, которое лучше дождаться, чем запускать заново.

Если сеанс не завершается

Бывает, что сеанс удалили, а он снова в списке или не исчезает вовсе.

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

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

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

Узнает ли пользователь, что его отключили?
Да. Клиент покажет сообщение о разрыве соединения с сервером или о завершении сеанса. Несохранённые изменения в открытых формах пропадут.
Освобождается ли лицензия после завершения сеанса?
Да, сразу после того, как сеанс исчезнет из списка в консоли. Спящий сеанс лицензию тоже не держит.
Можно ли отключить пользователя, если я не администратор сервера?
В клиент-серверной базе — только если в базе у вас полные права и вы знаете учётную запись администратора кластера (если она задана). Без них остаётся попросить пользователя выйти.
Почему в списке активных пользователей висит человек, который давно ушёл?
Обычно это брошенное окно RDP или сеанс после обрыва связи. Помогает лимит на отключённые терминальные сессии и таймауты сеансов в параметрах базы.
Как отключить всех перед обновлением, не обходя кабинеты?
Установите блокировку работы пользователей с сообщением и временем начала. К этому времени программа сама закроет сеансы, а код разрешения пустит вас.