Принудительное завершение сеансов 1С: от формы «Активные пользователи» до rac

· 10 мин

Содержание

Чтобы отключить сеанс пользователя в 1С 8.3, откройте Администрирование → Обслуживание → Активные пользователи, выделите строку с нужным человеком и выполните команду «Завершить сеанс». В клиент-серверной базе то же самое делается в консоли кластера (ветка «Сеансы» у информационной базы, команда «Удалить») или командой rac session terminate.

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

Какой способ отключения выбрать

Способ зависит от двух вещей: как развёрнута база (файловый вариант или сервер 1С) и есть ли у вас права администратора кластера.

СпособФайловая базаКлиент-серверная базаЧто нужно
Форма «Активные пользователи»только просмотрзавершение отдельных сеансовроль администратора в базе + пароль администратора кластера, если он задан
Блокировка работы пользователейдадароль администратора в базе
Консоль кластера (MMC)нетдадоступ к серверу 1С, права администратора кластера
Утилита racнетдазапущенная служба ras
Завершение процесса на компьютередада (как крайняя мера)доступ к компьютеру или терминальному серверу

Конфигуратор тоже показывает список подключённых (Администрирование → Активные пользователи), но завершать сеансы из него нельзя. Это только справка.

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

Как отключить сеанс пользователя из режима 1С:Предприятие

Этот способ подходит для типовых конфигураций на Библиотеке стандартных подсистем: Бухгалтерия 3.0, ЗУП 3.1, УТ 11, КА, ERP, УНФ. Права нужны полные или административные.

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

  1. Откройте раздел Администрирование → Обслуживание.
  2. В группе мониторинга перейдите по ссылке «Активные пользователи».
  3. В списке найдите сеанс. Ориентируйтесь на колонки с именем пользователя, приложением (тонкий клиент, веб-клиент, фоновое задание) и временем начала работы.
  4. Выделите строку и выполните команду «Завершить сеанс» в командной панели. Можно выделить несколько строк .
  5. Если у кластера задан администратор, программа попросит ввести параметры администрирования: имя и пароль администратора кластера. Пароль администратора информационной базы обычно подставляется из текущего сеанса.
  6. Обновите список и убедитесь, что строка пропала.

Если раздела «Обслуживание» в панели нет, ту же форму можно открыть через Все функции → Обработки → Активные пользователи. Пункт «Все функции» включается в настройках главного меню (Сервис и настройки → Параметры → Отображать команду «Все функции»).

Особенность файловой базы

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

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

Отключение сеансов в консоли кластера серверов 1С

Консоль кластера — это оснастка MMC «Администрирование серверов 1С:Предприятия». Она ставится вместе с сервером 1С или отдельно, компонентом «Администрирование сервера 1С:Предприятия» в установщике платформы.

Как найти и удалить сеанс

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

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

Не путайте ветки «Сеансы» и «Соединения». Разрыв соединения не завершает сеанс: клиент через несколько секунд переподключится. Завершайте именно сеанс.

Если консоль не открывается

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

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

Номер версии в пути замените на свой. Если на одном компьютере стоит несколько платформ, консоль будет работать только с сервером той версии, чья radmin.dll зарегистрирована последней.

Как завершить сеанс 1С командой rac

Утилита rac лежит в каталоге bin платформы и работает через сервер администрирования ras. Это способ для Linux-серверов, удалённого администрирования и скриптов.

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

Если служба ras ещё не установлена, её можно запустить вручную для проверки:

ras cluster --port=1545 localhost:1540

Здесь 1545 — порт, на котором ras принимает команды, 1540 — порт агента сервера 1С. Для постоянной работы ras регистрируют как службу Windows или юнит systemd.

Последовательность команд

Сначала узнайте идентификатор кластера:

rac localhost:1545 cluster list

В выводе нужна строка cluster : <uuid>. Затем посмотрите базы и сеансы:

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

У каждого сеанса в выводе есть поля session (идентификатор), user-name, app-id, host и время последней активности. Завершение одного сеанса:

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

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

Расшифровка app-id

app-idЧто это за сеанс
1CV8Cтонкий клиент
1CV8толстый клиент
WebClientвеб-клиент через браузер
Designerконфигуратор
COMConnectionвнешнее COM-подключение (обмены, интеграции)
BackgroundJobфоновое или регламентное задание
SrvrConsoleконсоль администрирования

Сеансы BackgroundJob и COMConnection без причины не трогайте: можно оборвать обмен данными или закрытие месяца , которое запустил регламент.

Автоматическое отключение сеансов по расписанию

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

Вариант 1. Встроенное обновление конфигурации

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

Вариант 2. Скрипт с rac в Планировщике заданий

Для сервера 1С пишется короткий скрипт PowerShell, который завершает все интерактивные сеансы одной базы. Фоновые задания и консоль он не трогает:

$rac = "C:\Program Files\1cv8\8.3.24.1548\bin\rac.exe"
$srv = "localhost:1545"
$ibName = "buh"   # имя базы в кластере

$clOut = (& $rac $srv cluster list) -join "`n"
$cluster = [regex]::Match($clOut, '(?m)^cluster\s*:\s*(\S+)').Groups[1].Value

$ibOut = (& $rac $srv infobase summary list --cluster=$cluster) -join "`n"
$ib = $null
foreach ($b in ($ibOut -split "`n\s*`n")) {
    if ($b -match "(?m)^name\s*:\s*$ibName\s*$") {
        $ib = [regex]::Match($b, '(?m)^infobase\s*:\s*(\S+)').Groups[1].Value
    }
}
if (-not $ib) { Write-Output "База $ibName не найдена"; exit 1 }

$sOut = (& $rac $srv session list --cluster=$cluster --infobase=$ib) -join "`n"
foreach ($b in ($sOut -split "`n\s*`n")) {
    $sid = [regex]::Match($b, '(?m)^session\s*:\s*(\S+)').Groups[1].Value
    $app = [regex]::Match($b, '(?m)^app-id\s*:\s*(\S+)').Groups[1].Value
    if ($sid -and $app -in @('1CV8', '1CV8C', 'WebClient')) {
        & $rac $srv session terminate --cluster=$cluster --session=$sid
        Write-Output "Завершён сеанс $sid ($app)"
    }
}

Скрипт добавляют в Планировщик заданий Windows на нужное время, например на 22:30 перед копированием в 23:00. Запускайте его от учётной записи, у которой есть доступ к rac.exe. Если у кластера задан администратор, допишите в каждый вызов --cluster-user и --cluster-pwd, а пароль храните не в самом скрипте.

Вариант 3. Таймауты бездействия

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

Регламентные задания внутри типовых конфигураций сеансы других пользователей не завершают. Если нужна логика «каждый день в 22:00» именно средствами 1С, это доработка через расширение с подключением к агенту кластера. Для большинства организаций скрипта из варианта 2 достаточно.

Как запретить вход в базу на время работ

Завершить сеансы мало: через минуту пользователь зайдёт снова. Поэтому перед обслуживанием вход блокируют.

Блокировка в режиме Предприятия

Администрирование → Обслуживание → Блокировка работы пользователей. В форме задаются:

  • 🕒 время начала и окончания блокировки;
  • 💬 сообщение, которое увидят пользователи («Идёт обновление, вход до 23:30 закрыт»);
  • 🔑 код разрешения — с ним администратор сможет войти, пока база закрыта.

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

Войти в заблокированную базу можно с параметром запуска /UC, за которым сразу идёт код разрешения: например, /UC12345. Параметр прописывают в поле «Дополнительные параметры запуска» в настройках базы в окне запуска.

Не забудьте снять блокировку после работ — иначе утром никто не войдёт, а сообщение будет висеть до времени окончания, которое вы указали.

Блокировка в консоли кластера и через rac

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

Через rac блокировка ставится командой infobase update с параметрами --sessions-deny=on, --denied-message и --permission-code, плюс учётные данные базы --infobase-user и --infobase-pwd. Точные имена параметров для вашей версии сверьте по rac help infobase.

Блокировку регламентных заданий включайте на время загрузки .dt и обновления структуры. Иначе фоновое задание может стартовать посреди работ и помешать получить монопольный доступ.

Почему сеанс не отключается или висит

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

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

Для разбора, что делал пользователь перед зависанием, откройте журнал регистрации (Администрирование → Обслуживание → Журнал регистрации) и отфильтруйте события по пользователю и времени. Там видно последний документ или отчёт, с которым он работал.

В файловом варианте «висящий» сеанс обычно означает живой процесс 1cv8c.exe на чьём-то компьютере или в терминальной сессии. Найдите его в Диспетчере задач на вкладке «Пользователи» и завершите. Предупредите человека: несохранённые изменения пропадут.

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

Освобождается ли лицензия сразу после завершения сеанса?
Да. Клиентская лицензия возвращается в пул сразу после того, как сеанс удалён в кластере или закрыт клиент. Если лицензия не освободилась, сеанс ещё жив: проверьте список ещё раз.
Увидит ли пользователь, что его отключили?
Да. Клиент 1С сообщит, что соединение с сервером потеряно или сеанс завершён, и закроется либо предложит перезапуститься. Если перед этим стояла блокировка с текстом, он увидит ваше сообщение.
Можно ли завершить собственный сеанс из формы «Активные пользователи»?
Смысла нет: проще закрыть программу. Перед массовым завершением проверьте, что в выделение не попала ваша строка, иначе вы выгоните сами себя посреди работ.
Чем завершение сеанса отличается от удаления пользователя из списка пользователей?
Завершение только выгоняет человека из программы, и он может войти снова. Чтобы запретить вход навсегда, у пользователя снимают флажок «Вход в программу разрешён» в карточке пользователя.
Можно ли отключить сеанс, если у меня нет пароля администратора кластера?
В клиент-серверной базе — нет, ни из формы, ни из консоли. Остаётся блокировка работы пользователей, для которой хватает прав администратора базы, или просьба к тому, кто администрирует сервер.