Завершаем чужую сессию в 1С 8.3: консоль кластера, rac, блокировка и код
Содержание
Прекратить сеанс пользователя в клиент-серверной 1С 8.3 проще всего в консоли администрирования серверов: Кластеры → <кластер> → Информационные базы → <база> → Сеансы, правой кнопкой по строке пользователя → Удалить. Без графической консоли то же делает команда rac session terminate, а из самой программы — форма «Активные пользователи» в типовых конфигурациях на БСП.
Частая ошибка — удалять в консоли не сеанс, а соединение. Соединение клиент восстановит через несколько секунд, и пользователь даже не заметит, что его «выкинули». Работу завершает только удаление сеанса. И второе заблуждение: Конфигуратор умеет показать, кто в базе, но завершить чужую сессию из него нельзя.
Всё ниже относится к платформе 8.3 в целом, а не к конкретной конфигурации. Пути в консоли и команды rac одинаковы для БП, ЗУП, УТ и ERP.
Как найти нужный сеанс и не ошибиться
Прежде чем завершать, убедитесь, что сеанс действительно тот. Один и тот же пользователь может держать несколько сеансов: тонкий клиент, Конфигуратор, фоновые задания от его имени.
Где посмотреть список:
- 🖥️ Консоль администрирования серверов — полный список с компьютером, приложением и временем последней активности. Работает только в клиент-серверном варианте.
- 🛠️ Конфигуратор →
Администрирование → Активные пользователи— только просмотр, без завершения. - 📋 Режим 1С:Предприятие → форма «Активные пользователи». В БП 3.0, ЗУП 3.1 и УТ 11 она открывается из раздела
Администрирование, группа обслуживания. Если не видите команду — наберите «Активные пользователи» в поиске по меню (кнопка с лупой в шапке).
Колонка «Приложение» в консоли подскажет, что это за сеанс:
| Значение в консоли | Что это | Можно завершать? |
|---|---|---|
1CV8C | Тонкий клиент | Да, если пользователь предупреждён |
1CV8 | Толстый клиент | Да, если пользователь предупреждён |
WebClient | Работа через браузер | Да |
Designer | Конфигуратор | Осторожно: может идти обновление |
BackgroundJob | Фоновое задание | Только если зависло |
COMConnection | Внешнее подключение (обмен, интеграция) | Осторожно: оборвётся обмен |
SrvrConsole | Сама консоль администрирования | Нет смысла |
💡 Смотрите на колонку «Последняя активность». Если сеанс бездействует несколько часов, скорее всего, человек ушёл и оставил программу открытой. Такой сеанс можно закрывать без долгих согласований.
Несохранённые данные завершённого сеанса пропадают. Документ, который человек набирал полчаса и не записал, исчезнет. Перед удалением сеанса напишите пользователю или позвоните.
Завершение сеанса пользователя через консоль администрирования
Консоль ставится вместе с сервером 1С или отдельно, если при установке платформы выбрать компонент «Администрирование сервера 1С:Предприятия». Она подключается к агенту сервера на порт 1540.
Пошагово
- Запустите «Администрирование серверов 1С Предприятия» из меню «Пуск».
- Если сервера в дереве нет: правой кнопкой по
Central 1C:Enterprise 8.3 servers→Создать → Центральный сервер 1С:Предприятия 8.3, укажите имя сервера и порт 1540. - Раскройте сервер →
Кластеры→ нужный кластер. Если кластер защищён, консоль спросит логин и пароль администратора кластера. - Откройте
Информационные базы→ вашу базу →Сеансы. Чтобы увидеть сеансы всех баз сразу, откройте узелСеансыпрямо под кластером. - Найдите строку пользователя, щёлкните правой кнопкой →
Удалить. - Подтвердите удаление.
Через пару секунд у пользователя появится сообщение о том, что сеанс завершён администратором, и программа закроется. Лицензия, которую занимал сеанс, освободится сразу.
Можно выделить несколько строк с Ctrl или Shift и удалить их одним действием. Удобно, когда нужно выгнать из базы весь отдел перед обновлением.
Если консоль не открывается
Самая частая ситуация: после обновления платформы консоль выдаёт ошибку при запуске оснастки. Причина — зарегистрирована библиотека от старой версии, которую уже удалили. Лечится перерегистрацией radmin.dll той версии, что стоит сейчас. Командная строка от имени администратора:
regsvr32 "C:\Program Files\1cv8\8.3.24.1548\bin\radmin.dll"
Номер версии в пути подставьте свой: он совпадает с именем папки в C:\Program Files\1cv8\. Разрядность консоли и библиотеки должна совпадать: для 64-битной платформы берите путь из Program Files, для 32-битной — из Program Files (x86).
Команда rac: завершаем сеанс из командной строки
Утилита rac лежит в папке bin платформы и работает не напрямую с кластером, а через сервер администрирования ras. Без запущенного ras команды rac не найдут кластер. По умолчанию ras слушает порт 1545.
Запустить ras вручную на сервере 1С (оборвётся при закрытии окна):
cd "C:\Program Files\1cv8\8.3.24.1548\bin"
ras cluster --port=1545
Для постоянной работы ras регистрируют службой Windows или юнитом systemd в Linux, тогда держать окно открытым не нужно.
Три команды, которые нужны
:: 1. Узнать идентификатор кластера
rac srv1c:1545 cluster list
:: 2. Получить список сеансов (UUID кластера из первой команды)
rac srv1c:1545 session list --cluster=<uuid-кластера>
:: 3. Завершить конкретный сеанс
rac srv1c:1545 session terminate --cluster=<uuid-кластера> --session=<uuid-сеанса>
Если на кластере задан администратор, добавляйте к командам 2 и 3 параметры --cluster-user=<логин> и --cluster-pwd=<пароль>.
В выводе session list ищите блок с нужным user-name и host. Идентификатор для завершения — значение поля session, а не session-id: второе — это короткий номер сеанса, команда его не примет.
Чтобы сузить список до одной базы, сначала получите её UUID через rac infobase summary list --cluster=<uuid-кластера>, затем добавьте к session list параметр --infobase=<uuid-базы>.
💡 Полный перечень параметров для вашей версии покажет rac help session. Набор опций от релиза к релизу расширяется, поэтому сверяйтесь со справкой, а не со старыми шпаргалками.
Когда rac удобнее консоли
- 🐧 Сервер 1С на Linux, а графической консоли под рукой нет.
- ⏰ Нужно завершать сеансы по расписанию, например каждую ночь перед регламентом.
- 🧩 Скрипт обновления должен сам освободить базу перед загрузкой изменений.
Что видно и чего нельзя сделать в Конфигураторе
В Конфигураторе есть Администрирование → Активные пользователи. Окно показывает, кто сейчас в базе, с какого компьютера и в каком приложении. Кнопки «завершить» там нет — это просто список.
Поэтому типичный сценарий выглядит так: администратор открыл Конфигуратор, увидел в «Активных пользователях» троих коллег, мешающих обновлению, и дальше идёт в консоль кластера, rac или в форму «Активные пользователи» режима Предприятия.
В режиме 1С:Предприятие форма «Активные пользователи» в конфигурациях на БСП умеет больше. В клиент-серверной базе в ней есть команда завершения выбранного сеанса. При первом использовании программа запросит параметры администрирования: логин и пароль администратора кластера (если он задан) и администратора информационной базы. Права на эту операцию есть только у пользователя с полными правами.
Файловая база
У файловой базы нет кластера, сеансы держат сами процессы 1cv8.exe и 1cv8c.exe на компьютерах пользователей. Варианты:
- Попросить пользователей выйти. Самый безопасный путь.
- Включить блокировку работы пользователей в режиме Предприятия (см. следующий раздел). Она работает и в файловом варианте: клиенты сами получают предупреждение и завершаются.
- На терминальном сервере — завершить процесс
1cv8c.exeнужного пользователя в диспетчере задач на вкладке «Пользователи».
Снятие процесса — крайняя мера. Если в этот момент шла запись документа, транзакция оборвётся. Для файловой базы такой обрыв иногда заканчивается необходимостью тестирования и исправления.
Монопольный режим и блокировка начала сеансов
Монопольный доступ нужен для узкого круга операций: обновление конфигурации
базы данных с реструктуризацией, загрузка .dt, тестирование и исправление. Пока в базе есть хоть один чужой сеанс, установить монопольный режим не получится, и Конфигуратор сообщит об этом при попытке обновления.
Завершить сеансы — полдела. Если не закрыть вход, через минуту кто-нибудь зайдёт снова. Для этого есть блокировка начала сеансов.
Блокировка в свойствах базы (клиент-серверный вариант)
В консоли откройте свойства информационной базы (правой кнопкой → Свойства) и заполните:
| Поле | Что указать |
|---|---|
| Блокировка начала сеансов включена | Отметить флажок |
| Начало / Конец | Интервал, когда вход закрыт |
| Сообщение о блокировке | Текст для пользователей: «Обновление до 14:00» |
| Код разрешения | Любая строка, например upd77 |
| Блокировка регламентных заданий включена | Отметить, чтобы фоновые задания не мешали |
С кодом разрешения в базу пустят только того, кто укажет его в параметре запуска /UC:
"C:\Program Files\1cv8\common\1cestart.exe" DESIGNER /S srv1c\buh /UC upd77
Так вы зайдёте в Конфигуратор, пока остальным вход закрыт. После работ снимите флажок — иначе утром бухгалтерия не попадёт в базу.
Блокировка из режима Предприятия
В типовых конфигурациях на БСП есть форма «Блокировка работы пользователей» в разделе Администрирование, рядом с «Активными пользователями». Задаёте время начала, сообщение и код разрешения, нажимаете «Установить блокировку». Пользователи получают предупреждение, а к началу блокировки их сеансы завершаются автоматически. Этот способ подходит и для файловой базы.
Сеансы, которые зависают сами
В свойствах базы в консоли есть ещё два параметра: «Время засыпания пассивного сеанса» и «Время завершения спящего сеанса». Первый переводит бездействующий сеанс в спящее состояние, второй закрывает спящий сеанс и освобождает лицензию. Если «забытые» сеансы съедают лицензии каждый день, настройте эти значения вместо ручной чистки.
Программное завершение сеансов из кода 1С
Из встроенного языка завершить чужой сеанс напрямую нельзя: ПолучитьСеансыИнформационнойБазы() только возвращает список. Завершение идёт через средства администрирования кластера. Самый короткий путь — COM-соединитель V83.COMConnector.
Условия:
- 🔌 На компьютере, где выполняется код, зарегистрирован
comcntr.dllтой же версии платформы, что и сервер:regsvr32 "C:\Program Files\1cv8\<версия>\bin\comcntr.dll". - 🔑 Известны логин и пароль администратора кластера (или кластер без администратора).
- 🪟 Код работает на Windows. Для сервера на Linux используйте
racили механизм администрирования черезras.
Пример: завершить все сеансы указанного пользователя в указанной базе, кроме собственного.
&НаСервереБезКонтекста
Процедура ЗавершитьСеансыПользователя(ИмяБазы, ИмяПользователя)
Коннектор = Новый COMОбъект("V83.COMConnector");
Агент = Коннектор.ConnectAgent("tcp://srv1c:1540");
Для Каждого Кластер Из Агент.GetClusters() Цикл
// Логин и пароль администратора кластера; пустые строки, если он не задан
Агент.Authenticate(Кластер, "", "");
Для Каждого Сеанс Из Агент.GetSessions(Кластер) Цикл
Если НРег(Сеанс.infoBase.Name) <> НРег(ИмяБазы) Тогда
Продолжить;
КонецЕсли;
Если НРег(Сеанс.UserName) <> НРег(ИмяПользователя) Тогда
Продолжить;
КонецЕсли;
Если Сеанс.SessionID = НомерСеансаИнформационнойБазы() Тогда
Продолжить; // свой сеанс не трогаем
КонецЕсли;
Агент.TerminateSession(Кластер, Сеанс);
КонецЦикла;
КонецЦикла;
КонецПроцедуры
Код выполняется на сервере 1С, поэтому comcntr.dll нужно регистрировать именно там. Пароль администратора кластера в тексте модуля не храните: читайте его из безопасного хранилища или запрашивайте у пользователя.
Типовые конфигурации на БСП уже содержат общий модуль администрирования кластера. Форма «Активные пользователи» работает через него, и в доработках лучше вызывать его, а не писать свой COM-код. Конкретные имена процедур модуля сверяйте по своей версии БСП в Конфигураторе.
Частые ошибки при завершении сеансов
- ❌ Удалили соединение вместо сеанса. Клиент переподключился, пользователь работает дальше. Удаляйте строку в узле
Сеансы. - ❌ Завершили сеанс Конфигуратора посреди обновления. Если в нём шла реструктуризация, база может остаться в неконсистентном состоянии. Сначала выясните, кто сидит в
Designerи зачем. - ❌ Убили фоновое задание обмена. Пакет обмена не дописался, номер сообщения разошёлся с узлом, следующий обмен сыплет ошибками. Фоновые задания и
COMConnectionзавершайте, только если они явно зависли. - ❌ Не закрыли вход после чистки. Пользователи зашли снова, монопольный режим опять недоступен. Включайте блокировку начала сеансов до завершения сеансов, а не после.
- ❌ Забыли снять блокировку. Утром никто не может войти в базу. После работ проверьте флажок в свойствах базы или форму блокировки.
- ❌ Консоль и сервер разных версий. Консоль подключается, но показывает ошибки. Регистрируйте
radmin.dllтой же версии, что и сервер.