Завершаем чужую сессию в 1С 8.3: консоль кластера, rac, блокировка и код

· 10 мин

Содержание

Прекратить сеанс пользователя в клиент-серверной 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. Запустите «Администрирование серверов 1С Предприятия» из меню «Пуск».
  2. Если сервера в дереве нет: правой кнопкой по Central 1C:Enterprise 8.3 servers → Создать → Центральный сервер 1С:Предприятия 8.3, укажите имя сервера и порт 1540.
  3. Раскройте сервер → Кластеры → нужный кластер. Если кластер защищён, консоль спросит логин и пароль администратора кластера.
  4. Откройте Информационные базы → вашу базу → Сеансы. Чтобы увидеть сеансы всех баз сразу, откройте узел Сеансы прямо под кластером.
  5. Найдите строку пользователя, щёлкните правой кнопкой → Удалить.
  6. Подтвердите удаление.

Через пару секунд у пользователя появится сообщение о том, что сеанс завершён администратором, и программа закроется. Лицензия, которую занимал сеанс, освободится сразу.

Можно выделить несколько строк с 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 на компьютерах пользователей. Варианты:

  1. Попросить пользователей выйти. Самый безопасный путь.
  2. Включить блокировку работы пользователей в режиме Предприятия (см. следующий раздел). Она работает и в файловом варианте: клиенты сами получают предупреждение и завершаются.
  3. На терминальном сервере — завершить процесс 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 той же версии, что и сервер.
Диагностика: выберите симптом

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

Увидит ли пользователь, что его сеанс завершили?
Да. Платформа покажет сообщение о том, что сеанс завершён администратором, и закроет клиент. Несохранённые изменения пропадут.
Можно ли завершить сеанс, не будучи администратором кластера?
Если у кластера задан администратор — нет. Без его логина и пароля консоль, rac и форма «Активные пользователи» не дадут удалить сеанс. Если администратор кластера не задан, достаточно доступа к серверу.
Освобождается ли лицензия сразу после завершения сеанса?
Да, программная или аппаратная лицензия освобождается при завершении сеанса. Если номер не освободился, у пользователя остался ещё один сеанс.
Можно ли завершать сеансы автоматически по ночам?
Да. Удобнее всего — скрипт с командами rac в планировщике заданий Windows или cron в Linux. Перед ним включите блокировку начала сеансов, после регламента снимите её.
Чем завершение сеанса отличается от перезапуска рабочего процесса?
Завершение сеанса затрагивает одного пользователя. Перезапуск рабочего процесса обрывает работу всех, кто к нему подключён, поэтому его делают только вне рабочего времени.