Принудительное завершение сеансов 1С 8.3: от кнопки в программе до скрипта rac
Содержание
Отключить пользователя
от базы 1С 8.3 быстрее всего так: откройте Администрирование → Обслуживание → Активные пользователи, выделите нужный сеанс и нажмите «Завершить сеанс». В клиент-серверном варианте то же самое делается в консоли кластера: база → «Сеансы» → правой кнопкой по сеансу → «Удалить». Если нужно выгнать всех и не пустить обратно на время работ — включают блокировку сеансов с кодом разрешения.
Типичная ситуация: вечер, пора обновлять конфигурацию, а Конфигуратор пишет, что не может установить монопольный режим. В списке висит бухгалтер, который ушёл домой и оставил 1С открытой, плюс пара фоновых заданий. Выгнать их можно по-разному, и у каждого способа своя цена.
Какой способ выбрать: сравнение по ситуациям
Способов отключить пользователя в 1С шесть. Они различаются тем, где работают (файловая база или сервер) и насколько жёстко рвут сеанс.
| Способ | Файловая база | Клиент-серверная база | Что теряет пользователь |
|---|---|---|---|
| Обработка «Активные пользователи» | да | да (нужен пароль администратора кластера, если он задан) | несохранённые данные в открытых формах |
| Конфигуратор при обновлении | да | да | то же |
| Консоль администрирования серверов | нет | да | то же |
| Блокировка сеансов | да | да | получает предупреждение и время на сохранение |
Диспетчер задач / taskkill | да | да, на стороне клиента | всё несохранённое, без предупреждения |
Скрипт rac | нет | да | то же, что в консоли |
Если работы плановые, начинайте с блокировки сеансов: пользователи увидят сообщение и успеют записать документы. Принудительное завершение оставьте для «зависших» сеансов и тех, кто не отвечает.
Завершение сеанса не откатывает уже записанные данные, но всё, что пользователь ввёл и не записал, пропадёт. Если сотрудник на месте, проще позвонить и попросить выйти.
Способ 1. Завершить сеанс прямо из 1С:Предприятия
В типовых конфигурациях на БСП (Бухгалтерия 3.0, ЗУП 3.1, УТ 11, КА, ERP) есть обработка «Активные пользователи». Она показывает все сеансы базы и умеет их завершать.
Где найти обработку
- Откройте раздел
Администрирование → Обслуживание. - В группе команд обслуживания нажмите ссылку «Активные пользователи».
- Если ссылки не видно, включите «Все функции»: главное меню (кнопка с тремя полосками) →
Сервис → Параметры→ флажок «Отображать команду «Все функции»». ЗатемВсе функции → Обработки → Активные пользователи.
Как отключить пользователя
- В списке найдите сеанс по имени пользователя, компьютеру и приложению (тонкий клиент, веб-клиент, Конфигуратор, фоновое задание).
- Выделите строку. Можно выделить несколько с зажатым
Ctrl. - Нажмите «Завершить сеанс».
- В клиент-серверной базе программа запросит логин и пароль администратора кластера, если он задан. Это не пользователь 1С, а учётная запись из консоли сервера.
📌 Что полезно знать про этот список:
- 🖥 колонка «Компьютер» помогает отличить два сеанса одного пользователя — например, с рабочего ПК и с ноутбука;
- ⚙️ строки «Фоновое задание» — это регламентные задания (обмены, загрузка курсов). Их завершение безопасно, но они снова запустятся по расписанию;
- 👤 свой собственный сеанс обработка завершить не даст — он помечен отдельно.
В платформе есть ещё стандартная функция Все функции → Стандартные → Активные пользователи. Она только показывает список, кнопки завершения в ней нет. Нужна именно обработка БСП из раздела «Администрирование».
В файловой базе обработка не «убивает» процесс на чужом компьютере. Она выставляет сеансу признак завершения, клиент 1С на том компьютере получает его и закрывается сам, обычно в течение минуты. Если компьютер пользователя завис или выключен из сети, сеанс останется — тогда поможет способ 4.
Способ 2. Отключение пользователей через Конфигуратор
Сам Конфигуратор не умеет выбрать сеанс из списка и закрыть его. В меню Администрирование → Активные пользователи он только показывает, кто сейчас в базе.
Но при операциях, требующих монопольного доступа, Конфигуратор сам предлагает выгнать остальных. Монопольный доступ нужен для:
- 🔄 обновления конфигурации базы данных со сменой структуры;
- 📦 загрузки информационной базы из
.dt; - 🛠 тестирования и исправления базы.
Когда вы запускаете такую операцию, а в базе есть другие сеансы, в клиент-серверном варианте появляется окно со списком сеансов и кнопкой «Завершить сеансы и повторить». Нажатие завершает всех, кроме вас, и повторяет операцию.
В файловой базе такой кнопки нет — придётся сначала освободить базу способом 1 или 4.
Перед обновлением в рабочее время сначала включите блокировку сеансов (способ 5), а уже потом жмите «Завершить сеансы и повторить». Иначе через минуту кто-нибудь снова зайдёт, и монопольный режим опять не установится.
Способ 3. Отключить пользователя от базы в консоли кластера 1С
Это главный инструмент администратора клиент-серверной базы. Консоль «Администрирование серверов 1С:Предприятия» ставится вместе с платформой (компонент «Администрирование сервера 1С:Предприятия»).
Как завершить сеанс
- Запустите консоль. В дереве раскройте
Central 1C:Enterprise 8.3 servers → <имя сервера> → Кластеры → <кластер> → Информационные базы → <ваша база> → Сеансы. - Справа появится список: пользователь, компьютер, приложение, время начала, номер рабочего процесса.
- Щёлкните правой кнопкой по сеансу → «Удалить».
- Подтвердите. У пользователя появится сообщение о завершении сеанса администратором.
Если в кластере задан администратор, консоль спросит его логин и пароль при открытии кластера.
Сеансы и соединения — в чём разница
В ветке базы есть ещё узел «Соединения». Соединение — это канал между клиентом и рабочим процессом, сеанс — работа пользователя в базе, он и занимает лицензию. Удалять нужно именно сеанс: удалённое соединение клиент восстановит сам, и пользователь даже не заметит.
Если консоль не открывается
Частая проблема после установки новой версии платформы: консоль пишет, что не может создать компонент, или открывается пустой. Причина — не зарегистрирована библиотека radmin.dll нужной версии. Запустите командную строку от имени администратора:
regsvr32 "C:\Program Files\1cv8\8.3.24.1548\bin\radmin.dll"
Номер версии подставьте свой — он должен совпадать с версией сервера 1С. После регистрации консоль подключится.
Если нужно отключить всех пользователей сразу
В ветке Кластеры → <кластер> → Сеансы (не внутри конкретной базы) видны сеансы всех баз кластера. Выделите несколько строк с Shift или Ctrl и удалите разом. Будьте внимательны: здесь легко зацепить чужую базу.
Способ 4. Диспетчер задач: когда остальное не сработало
Это аварийный вариант. Он нужен, если сеанс завис, клиент не реагирует на завершение, а в файловой базе — если компьютер пользователя не отвечает.
Процесс, снятый в Диспетчере задач, закрывается мгновенно: всё несохранённое теряется без вопросов.
Терминальный сервер или RDP
На терминальном сервере все пользователи работают на одной машине, поэтому процесс можно найти и закрыть централизованно.
- Откройте Диспетчер задач → вкладка «Пользователи».
- Раскройте нужного пользователя, найдите процесс
1cv8c.exe(тонкий клиент) или1cv8.exe(толстый клиент и Конфигуратор). - «Снять задачу».
То же из командной строки:
rem закрыть тонкий клиент конкретного пользователя
taskkill /F /IM 1cv8c.exe /FI "USERNAME eq ivanova"
rem посмотреть, кто залогинен на сервере, и завершить его RDP-сеанс целиком
query user
logoff 3
logoff с номером из query user закрывает весь сеанс Windows пользователя, не только 1С. Используйте его, если пользователь забыл выйти и ушёл домой.
Файловая база в сетевой папке
Файл базы 1Cv8.1CD лежит на сервере или чужом компьютере. Если клиент на ПК пользователя завис, а до самого ПК не добраться, закройте открытый файл на стороне сервера:
- На компьютере, где лежит база, откройте
Управление компьютером → Общие папки → Открытые файлы. - Найдите
1Cv8.1CD, открытый нужным пользователем. - Правой кнопкой → «Закрыть открытый файл».
Закрытие файла посреди записи может повредить файловую базу. Делайте это, только если сеанс точно завис, и после — запустите Тестирование и исправление в Конфигураторе на копии.
Рабочий процесс rphost на сервере 1С
На сервере 1С видны процессы rphost.exe. Снимать их не стоит: в одном рабочем процессе обслуживаются сеансы многих пользователей, и вы оборвёте всех сразу. Если без этого никак — делайте это, когда в базе никого нет, или после предупреждения всем.
Ещё одна деталь: после снятия клиента на компьютере пользователя сеанс в кластере может висеть ещё какое-то время, пока сервер не обнаружит разрыв. Такой сеанс добивают в консоли (способ 3).
Способ 5. Запретить новые подключения на время работ
Отключить пользователей мало — нужно, чтобы они не вернулись через минуту. Для этого есть блокировка начала сеансов.
Через программу (файловая и серверная база)
- Откройте
Администрирование → Обслуживание→ «Блокировка работы пользователей». - Укажите время начала и окончания блокировки, текст сообщения («Обновление 1С, вернёмся в 19:30») и код разрешения.
- Нажмите «Установить блокировку».
Что происходит дальше:
- ⏳ Работающие пользователи получают предупреждение с вашим текстом и обратный отсчёт.
- 🚪 К началу блокировки их сеансы завершаются.
- 🔒 Новые входы запрещены до окончания блокировки.
Сами вы заходите с кодом разрешения. Добавьте в строку запуска параметр /UC:
/UC12345
Параметр вписывают в окне запуска: выберите базу → «Изменить» → последний шаг мастера → поле «Дополнительные параметры запуска». Или в строку ярлыка после пути к 1cv8.exe.
Через консоль кластера
- В консоли откройте свойства информационной базы (правой кнопкой по базе → «Свойства»).
- Поставьте флажок «Блокировка начала сеансов включена».
- Заполните «Начало», «Конец», «Сообщение» и «Код разрешения».
- При необходимости отметьте «Блокировка регламентных заданий включена» — иначе фоновые обмены продолжат подключаться.
Блокировка из консоли не завершает уже работающие сеансы — она только не пускает новых. Работающих после этого удаляют вручную в узле «Сеансы».
Не забудьте снять блокировку
Если указали время окончания — она снимется сама. Если нет — снимите вручную тем же путём. Забытая блокировка регламентных заданий — частая причина того, что наутро не прошли обмены и не загрузились курсы валют.
Способ 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 с нужной операцией → снятие блокировки.