Принудительное завершение сеансов 1С 8.3: от кнопки в программе до скрипта rac

· 10 мин

Содержание

Отключить пользователя от базы 1С 8.3 быстрее всего так: откройте Администрирование → Обслуживание → Активные пользователи, выделите нужный сеанс и нажмите «Завершить сеанс». В клиент-серверном варианте то же самое делается в консоли кластера: база → «Сеансы» → правой кнопкой по сеансу → «Удалить». Если нужно выгнать всех и не пустить обратно на время работ — включают блокировку сеансов с кодом разрешения.

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

Какой способ выбрать: сравнение по ситуациям

Способов отключить пользователя в 1С шесть. Они различаются тем, где работают (файловая база или сервер) и насколько жёстко рвут сеанс.

СпособФайловая базаКлиент-серверная базаЧто теряет пользователь
Обработка «Активные пользователи»дада (нужен пароль администратора кластера, если он задан)несохранённые данные в открытых формах
Конфигуратор при обновлениидадато же
Консоль администрирования серверовнетдато же
Блокировка сеансовдадаполучает предупреждение и время на сохранение
Диспетчер задач / taskkillдада, на стороне клиентавсё несохранённое, без предупреждения
Скрипт racнетдато же, что в консоли

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

Завершение сеанса не откатывает уже записанные данные, но всё, что пользователь ввёл и не записал, пропадёт. Если сотрудник на месте, проще позвонить и попросить выйти.

Способ 1. Завершить сеанс прямо из 1С:Предприятия

В типовых конфигурациях на БСП (Бухгалтерия 3.0, ЗУП 3.1, УТ 11, КА, ERP) есть обработка «Активные пользователи». Она показывает все сеансы базы и умеет их завершать.

Где найти обработку

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

Как отключить пользователя

  1. В списке найдите сеанс по имени пользователя, компьютеру и приложению (тонкий клиент, веб-клиент, Конфигуратор, фоновое задание).
  2. Выделите строку. Можно выделить несколько с зажатым Ctrl.
  3. Нажмите «Завершить сеанс».
  4. В клиент-серверной базе программа запросит логин и пароль администратора кластера, если он задан. Это не пользователь 1С, а учётная запись из консоли сервера.

📌 Что полезно знать про этот список:

  • 🖥 колонка «Компьютер» помогает отличить два сеанса одного пользователя — например, с рабочего ПК и с ноутбука;
  • ⚙️ строки «Фоновое задание» — это регламентные задания (обмены, загрузка курсов). Их завершение безопасно, но они снова запустятся по расписанию;
  • 👤 свой собственный сеанс обработка завершить не даст — он помечен отдельно.

В платформе есть ещё стандартная функция Все функции → Стандартные → Активные пользователи. Она только показывает список, кнопки завершения в ней нет. Нужна именно обработка БСП из раздела «Администрирование».

В файловой базе обработка не «убивает» процесс на чужом компьютере. Она выставляет сеансу признак завершения, клиент 1С на том компьютере получает его и закрывается сам, обычно в течение минуты. Если компьютер пользователя завис или выключен из сети, сеанс останется — тогда поможет способ 4.

Способ 2. Отключение пользователей через Конфигуратор

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

Но при операциях, требующих монопольного доступа, Конфигуратор сам предлагает выгнать остальных. Монопольный доступ нужен для:

  • 🔄 обновления конфигурации базы данных со сменой структуры;
  • 📦 загрузки информационной базы из .dt;
  • 🛠 тестирования и исправления базы.

Когда вы запускаете такую операцию, а в базе есть другие сеансы, в клиент-серверном варианте появляется окно со списком сеансов и кнопкой «Завершить сеансы и повторить». Нажатие завершает всех, кроме вас, и повторяет операцию.

В файловой базе такой кнопки нет — придётся сначала освободить базу способом 1 или 4.

Перед обновлением в рабочее время сначала включите блокировку сеансов (способ 5), а уже потом жмите «Завершить сеансы и повторить». Иначе через минуту кто-нибудь снова зайдёт, и монопольный режим опять не установится.

Способ 3. Отключить пользователя от базы в консоли кластера 1С

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

Как завершить сеанс

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

Если в кластере задан администратор, консоль спросит его логин и пароль при открытии кластера.

Сеансы и соединения — в чём разница

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

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

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

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

Номер версии подставьте свой — он должен совпадать с версией сервера 1С. После регистрации консоль подключится.

Если нужно отключить всех пользователей сразу

В ветке Кластеры → <кластер> → Сеансы (не внутри конкретной базы) видны сеансы всех баз кластера. Выделите несколько строк с Shift или Ctrl и удалите разом. Будьте внимательны: здесь легко зацепить чужую базу.

Способ 4. Диспетчер задач: когда остальное не сработало

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

Процесс, снятый в Диспетчере задач, закрывается мгновенно: всё несохранённое теряется без вопросов.

Терминальный сервер или RDP

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

  1. Откройте Диспетчер задач → вкладка «Пользователи».
  2. Раскройте нужного пользователя, найдите процесс 1cv8c.exe (тонкий клиент) или 1cv8.exe (толстый клиент и Конфигуратор).
  3. «Снять задачу».

То же из командной строки:

rem закрыть тонкий клиент конкретного пользователя
taskkill /F /IM 1cv8c.exe /FI "USERNAME eq ivanova"

rem посмотреть, кто залогинен на сервере, и завершить его RDP-сеанс целиком
query user
logoff 3

logoff с номером из query user закрывает весь сеанс Windows пользователя, не только 1С. Используйте его, если пользователь забыл выйти и ушёл домой.

Файловая база в сетевой папке

Файл базы 1Cv8.1CD лежит на сервере или чужом компьютере. Если клиент на ПК пользователя завис, а до самого ПК не добраться, закройте открытый файл на стороне сервера:

  1. На компьютере, где лежит база, откройте Управление компьютером → Общие папки → Открытые файлы.
  2. Найдите 1Cv8.1CD, открытый нужным пользователем.
  3. Правой кнопкой → «Закрыть открытый файл».

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

Рабочий процесс rphost на сервере 1С

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

Ещё одна деталь: после снятия клиента на компьютере пользователя сеанс в кластере может висеть ещё какое-то время, пока сервер не обнаружит разрыв. Такой сеанс добивают в консоли (способ 3).

Способ 5. Запретить новые подключения на время работ

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

Через программу (файловая и серверная база)

  1. Откройте Администрирование → Обслуживание → «Блокировка работы пользователей».
  2. Укажите время начала и окончания блокировки, текст сообщения («Обновление 1С, вернёмся в 19:30») и код разрешения.
  3. Нажмите «Установить блокировку».

Что происходит дальше:

  1. ⏳ Работающие пользователи получают предупреждение с вашим текстом и обратный отсчёт.
  2. 🚪 К началу блокировки их сеансы завершаются.
  3. 🔒 Новые входы запрещены до окончания блокировки.

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

/UC12345

Параметр вписывают в окне запуска: выберите базу → «Изменить» → последний шаг мастера → поле «Дополнительные параметры запуска». Или в строку ярлыка после пути к 1cv8.exe.

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

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

Блокировка из консоли не завершает уже работающие сеансы — она только не пускает новых. Работающих после этого удаляют вручную в узле «Сеансы».

Не забудьте снять блокировку

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

Способ 6. Автоматизация: скрипты для отключения пользователей

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

Утилита rac (клиент-серверная база)

rac.exe лежит в папке bin платформы. Она работает через сервис администрирования ras, который нужно запустить на сервере (по умолчанию порт 1545). Без ras команда rac выдаст ошибку подключения.

Базовые команды:

rem список кластеров — нужен UUID кластера
rac cluster list

rem список баз кластера
rac infobase summary list --cluster=<uuid-кластера>

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

rem завершить сеанс
rac session terminate --cluster=<uuid-кластера> --session=<uuid-сеанса>

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

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

Скрипт находит кластер, базу по имени и завершает все её сеансы, кроме фоновых заданий. Запускать на сервере с ras.

$rac  = "C:\Program Files\1cv8\8.3.24.1548\bin\rac.exe"
$base = "bp_main"

# Разбирает вывод rac (блоки "ключ : значение", разделённые пустой строкой)
function Get-RacBlocks([string[]]$lines) {
    $result = @(); $cur = @{}
    foreach ($l in $lines) {
        if ($l -match '^\s*$') {
            if ($cur.Count) { $result += [pscustomobject]$cur; $cur = @{} }
            continue
        }
        $k, $v = $l -split '\s*:\s*', 2
        $cur[$k.Trim()] = $v.Trim().Trim('"')
    }
    if ($cur.Count) { $result += [pscustomobject]$cur }
    return $result
}

$cluster = (Get-RacBlocks (& $rac cluster list))[0].cluster
$ib = Get-RacBlocks (& $rac infobase summary list --cluster=$cluster) |
      Where-Object { $_.name -eq $base }

$sessions = Get-RacBlocks (& $rac session list --cluster=$cluster --infobase=$($ib.infobase)) |
            Where-Object { $_.'app-id' -ne 'BackgroundJob' }

foreach ($s in $sessions) {
    Write-Host "Завершаю сеанс $($s.'session-id') пользователя $($s.'user-name')"
    & $rac session terminate --cluster=$cluster --session=$($s.session)
}

Перед боевым запуском закомментируйте строку с terminate и посмотрите, какие сеансы скрипт собирается закрыть. Имена пользователей на кириллице консоль может показать «кракозябрами» — на работу скрипта это не влияет, он завершает сеансы по UUID.

Запрет новых входов тоже ставится через rac, командой rac infobase update с параметрами --sessions-deny=on, --denied-message, --permission-code и --scheduled-jobs-deny=on. Для неё нужны логин и пароль администратора самой базы (--infobase-user, --infobase-pwd).

Параметры запуска БСП (файловая и серверная база)

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

"C:\Program Files\1cv8\8.3.24.1548\bin\1cv8.exe" ENTERPRISE /F"D:\Bases\Buh" /N"Администратор" /P"пароль" /C"ЗавершитьРаботуПользователей" /UC"12345"

Программа устанавливает блокировку с кодом 12345 и ждёт, пока все выйдут. После работ блокировку снимают запуском с /C"РазрешитьРаботуПользователей" и тем же /UC. Для серверной базы вместо /F"путь" укажите /S"srv1c\bp_main".

Эту пару удобно встроить в bat-файл ночного обновления или выгрузки: блокировка → DESIGNER с нужной операцией → снятие блокировки.

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

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