Завершаем чужие сеансы 1С 8.3: от кнопки в программе до скрипта на rac
Содержание
Закрыть сеанс в 1С 8.3 проще всего из консоли администрирования серверов: Кластер → Информационные базы → <база> → Сеансы, правой кнопкой по строке пользователя и команда «Удалить». Пользователь увидит сообщение о завершении работы администратором, лицензия освободится сразу. Если база файловая, консоли нет: сеансы закрывают блокировкой из режима Предприятия или снимают процесс 1cv8c.exe на компьютере пользователя.
Способ выбирают по варианту базы и по тому, сколько людей нужно выгнать: одного зависшего бухгалтера или всех перед обновлением. Ниже все варианты для платформы 8.3 с интерфейсом «Такси» и типовых конфигураций на БСП (БП 3.0, ЗУП 3.1, УТ 11).
| Ситуация | Лучший способ | Нужны права |
|---|---|---|
| Клиент-сервер, один сеанс | Консоль кластера, «Удалить» | Администратор кластера |
| Клиент-сервер, все сеансы | Блокировка в Предприятии или rac | Администратор базы или кластера |
| Файловая база, все сеансы | Блокировка в Предприятии | Полные права в базе |
| Файловая база, один «мёртвый» сеанс | Процесс на ПК или открытый файл на сервере | Администратор Windows |
| Регулярно по ночам | bat-файл с rac или /C ЗавершитьРаботуПользователей | Учётка планировщика |
Завершение работы пользователей из самой программы
В типовых конфигурациях есть обработка из Библиотеки стандартных подсистем. Путь в БП 3.0, ЗУП 3.1 и УТ 11 одинаковый: Администрирование → Обслуживание, группа «Блокировка работы пользователей».
Как поставить блокировку
- Откройте
Администрирование → Обслуживание → Блокировка работы пользователей. - Отметьте флажок установки блокировки.
- Задайте время начала и окончания. Начало ставьте на 5–10 минут вперёд, чтобы люди успели провести документы.
- Напишите сообщение: «Обновление базы с 19:00 до 19:40, сохраните документы».
- Укажите код разрешения, например
upd2010. С ним администратор сможет войти в заблокированную базу. - Нажмите кнопку записи блокировки.
Дальше программа сама показывает пользователям предупреждение, а к началу блокировки завершает их сеансы. Новые входы запрещены до конца периода.
Чтобы войти в заблокированную базу, добавьте к строке запуска параметр /UC с кодом:
"C:\Program Files\1cv8\common\1cestart.exe" ENTERPRISE /S"srv1c\buh" /UC"upd2010"
Список активных сеансов в типовых конфигурациях открывается там же: Администрирование → Обслуживание → Активные пользователи. В клиент-серверной базе из этого списка можно завершить выбранный сеанс, программа запросит пароль администратора кластера, если он задан.
Чем блокировка в программе отличается от блокировки в консоли
| Признак | Блокировка БСП | Блокировка в свойствах базы на сервере |
|---|---|---|
| Где ставится | В режиме Предприятия | В консоли кластера или через rac |
| Файловая база | Работает | Не применима |
| Предупреждает пользователей заранее | Да, с таймером | Нет |
| Закрывает уже открытые сеансы | Да, по наступлении времени | Нет, только запрещает новые |
| Код для входа | /UC | /UC (поле «Код разрешения») |
Второе отличие часто упускают: флажок «Блокировка начала сеансов включена» в свойствах базы на сервере не выгоняет тех, кто уже работает. Их придётся удалить вручную или скриптом.
Закрытие сеансов в консоли администрирования кластера
Консоль администрирования серверов 1С ставится вместе с сервером. Подключается она к агенту сервера по порту 1540, поэтому работает и с другого компьютера сети.
Пошагово
- Запустите «Администрирование серверов 1С Предприятия».
- Раскройте
Central 1C:Enterprise 8.3 servers → <имя сервера> → Кластеры → <кластер> → Информационные базы → <база> → Сеансы. - Если на кластере есть администраторы, консоль спросит логин и пароль администратора кластера.
- Найдите строку по колонкам «Пользователь», «Компьютер», «Приложение».
- Правой кнопкой по строке → «Удалить». Подтвердите.
Можно выделить несколько строк
через Ctrl или Shift и удалить их за раз.
Что смотреть в списке сеансов перед удалением
- 👤 «Приложение». Тонкий клиент, толстый клиент, веб-клиент, Конфигуратор, COM-соединение, фоновое задание. Фоновые задания не удаляйте без нужды: обмен или закрытие месяца оборвётся на середине.
- 🕒 «Начало работы» и «Последняя активность». Сеанс без активности несколько часов — главный кандидат.
- 🔒 «Блокировано СУБД» и «Блокировано упр.». Там номер сеанса, который держит блокировку. По нему находят виновника «зависания» у других.
- 💤 «Спящий». Сеанс, у которого пропала связь с клиентом. Он держит лицензию, пока не истечёт время завершения.
Узел «Соединения» — не то же самое, что «Сеансы». Если разорвать только соединение, сеанс останется и может переподключиться. Лицензию освобождает удаление именно сеанса.
Если консоль не открывается
Самый частый случай после обновления платформы — консоль пишет, что оснастка не может быть создана. Причина в незарегистрированной библиотеке radmin.dll нужной версии. Зарегистрируйте её от имени администратора:
regsvr32 "C:\Program Files\1cv8\8.3.25.1374\bin\radmin.dll"
Номер версии в пути подставьте свой: он должен совпадать с версией установленного сервера. Для 64-битного сервера регистрируйте библиотеку из 64-битного каталога Program Files.
Файловая база: где здесь «сеансы» и как их закрыть
У файловой базы нет кластера и нет консоли. Каждый пользователь открывает файл 1Cv8.1CD напрямую, поэтому и «выгнать» его можно тремя способами.
Способ 1. Блокировка из Предприятия
Работает так же, как в клиент-серверном варианте, и это самый мягкий путь. Пользователи получат предупреждение и закроются сами по таймеру.
Ограничение: если у человека завис клиент или он ушёл, оставив открытое модальное окно, программа на его компьютере может не отработать завершение. Тогда переходите к способу 2 или 3.
Способ 2. Посмотреть, кто сидит, в Конфигураторе
В Конфигураторе откройте Администрирование → Активные пользователи. Список покажет имя пользователя 1С, компьютер и режим. Завершить отсюда чужой сеанс нельзя, но вы узнаете, к кому идти.
Способ 3. Закрыть открытый файл на сервере
Если база лежит в общей папке на Windows-сервере, сервер видит, кто держит 1Cv8.1CD:
- Откройте
Управление компьютером → Общие папки → Открытые файлы. - Найдите строки с путём к
1Cv8.1CD, в колонке видно имя компьютера и учётку Windows. - Правой кнопкой → «Закрыть открытый файл».
То же самое в PowerShell от администратора:
Get-SmbOpenFile | Where-Object Path -like "*1Cv8.1CD" |
Select-Object FileId, ClientComputerName, ClientUserName
Get-SmbOpenFile | Where-Object Path -like "*Buh*1Cv8.1CD" | Close-SmbOpenFile -Force
Принудительное закрытие файла обрывает сеанс без сохранения. Документ, который человек редактировал, пропадёт. Делайте это, когда пользователь точно не работает, и только после резервной копии, если дальше идёт обновление.
Снятие процессов 1С через Диспетчер задач
Это крайний способ, когда сеанс не закрывается ничем другим. Какой процесс снимать, зависит от того, где он висит.
| Процесс | Где запущен | Что будет при снятии |
|---|---|---|
1cv8c.exe | ПК пользователя или терминальный сервер | Закроется тонкий клиент одного человека |
1cv8.exe | ПК пользователя | Закроется толстый клиент или Конфигуратор |
rphost.exe | Сервер 1С | Оборвутся ВСЕ сеансы, обслуживаемые этим рабочим процессом |
rmngr.exe, ragent.exe | Сервер 1С | Остановится кластер, работа встанет у всех |
Терминальный сервер
На RDP-ферме проще всего:
- Откройте Диспетчер задач → вкладка «Пользователи».
- Раскройте нужного пользователя, найдите процесс «1С:Предприятие».
- «Снять задачу». Если висит весь сеанс Windows — правой кнопкой по пользователю → «Выйти».
Командой можно снять клиент конкретного человека, не трогая остальных:
taskkill /F /IM 1cv8c.exe /FI "USERNAME eq ivanova"
Почему не стоит снимать rphost
Снятие rphost.exe обрывает работу всех пользователей на этом процессе, а не одного. На сервере с одним рабочим процессом это равносильно перезапуску 1С для всей компании. Если без этого никак, предупредите людей и делайте в обед или вечером. Перезапуск службы «Агент сервера 1С:Предприятия 8.3» — тем более только в нерабочее время.
После снятия клиента в Диспетчере задач сеанс на сервере не исчезает мгновенно. Он переходит в «спящие» и держит лицензию до таймаута. Чтобы освободить её сразу, удалите сеанс в консоли.
Почему сеансы зависают и не закрываются
Перед тем как удалять, полезно понять причину. Иначе завтра будет то же самое.
Таймауты спящих сеансов
В Конфигураторе откройте Администрирование → Параметры информационной базы. Два поля отвечают за «мёртвые» сеансы:
- ⏳ «Время засыпания пассивного сеанса» — через сколько секунд без связи с клиентом сеанс уходит в сон.
- 🗑 «Время завершения спящего сеанса» — через сколько секунд спящий сеанс удаляется сервером.
По умолчанию второе значение большое, порядка суток. Если лицензий впритык, уменьшите его, например, до 1800–3600 секунд. Слишком маленькое ставить не стоит: люди на нестабильном VPN будут терять несохранённые документы.
Блокировки на уровне СУБД
Когда в консоли видно, что сеанс ждёт, а виновника нет, смотрите на стороне SQL Server. Запрос покажет, кто кого блокирует:
SELECT session_id, blocking_session_id, wait_type, wait_time, status
FROM sys.dm_exec_requests
WHERE blocking_session_id <> 0;
Номера здесь — это сеансы SQL, а не 1С. Сопоставить их можно через колонку «Соединение с СУБД» в списке сеансов консоли.
Автоматическое закрытие сеансов по расписанию
Для ночных обновлений и выгрузок закрывать сеансы руками неудобно. Есть два рабочих варианта.
Вариант 1. Утилита rac (клиент-сервер)
rac работает не с агентом напрямую, а через сервер администрирования ras. Его нужно запустить один раз и лучше оформить службой. По умолчанию ras слушает порт 1545.
sc create "1C RAS" binPath= "\"C:\Program Files\1cv8\8.3.25.1374\bin\ras.exe\" cluster --service --port=1545 srv1c:1540" start= auto
sc start "1C RAS"
Дальше команды идут по цепочке: кластер → база → сеансы.
rac srv1c:1545 cluster list
rac srv1c:1545 infobase summary list --cluster=<uuid-кластера>
rac srv1c:1545 session list --cluster=<uuid-кластера> --infobase=<uuid-базы>
rac srv1c:1545 session terminate --cluster=<uuid-кластера> --session=<uuid-сеанса>
Если на кластере заданы администраторы, к командам добавьте --cluster-user= и --cluster-pwd=.
Пример bat-файла, который запрещает новые входы и закрывает все сеансы одной базы:
@echo off
set RAC="C:\Program Files\1cv8\8.3.25.1374\bin\rac.exe"
set SRV=srv1c:1545
set CL=<uuid-кластера>
set IB=<uuid-базы>
rem запрет новых сеансов
%RAC% %SRV% infobase update --cluster=%CL% --infobase=%IB% ^
--infobase-user="Администратор" --infobase-pwd="***" ^
--sessions-deny=on --denied-message="Обновление базы" --permission-code="upd2010"
rem завершение всех текущих сеансов
for /f "tokens=2 delims=: " %%S in ('%RAC% %SRV% session list --cluster=%CL% --infobase=%IB% ^| findstr /b "session "') do (
%RAC% %SRV% session terminate --cluster=%CL% --session=%%S
)
После работ снимите запрет той же командой infobase update с --sessions-deny=off. Полный список параметров для вашей версии смотрите в rac help session и rac help infobase.
Не храните пароль администратора в открытом bat-файле на общем диске. Положите скрипт в каталог с доступом только для учётки планировщика.
Вариант 2. Параметр запуска БСП (файловая и серверная база)
Типовые конфигурации понимают специальные параметры командной строки:
"C:\Program Files\1cv8\common\1cestart.exe" ENTERPRISE /F"D:\Bases\Buh" ^
/N"Администратор" /P"***" /C"ЗавершитьРаботуПользователей" /UC"upd2010"
Программа сама установит блокировку и дождётся выхода пользователей. Обратный параметр /C"РазрешитьРаботуПользователей" снимает блокировку. Этот путь удобен для файловых баз, где rac не применим.
Задание вешают на Планировщик заданий Windows: триггер «Ежедневно, 22:00», действие — запуск bat-файла, флажок «Выполнять с наивысшими правами».
Частые вопросы
Освобождается ли лицензия сразу после удаления сеанса?
rac session terminate, лицензия возвращается в пул. Если просто закрыть клиент, лицензия держится, пока спящий сеанс не завершится по таймауту.Может ли обычный пользователь закрыть чужой сеанс?
Что увидит пользователь, чей сеанс удалили?
Как закрыть свой собственный зависший сеанс, если программа не отвечает?
1cv8c.exe в Диспетчере задач, затем попросите администратора удалить спящий сеанс в консоли. Иначе при повторном входе может не хватить лицензии.Можно ли закрывать сеансы с другого компьютера?
rac — к ras по порту 1545. Оба порта должны быть открыты в брандмауэре сервера.