Принудительное завершение сеансов пользователей в 1С 8.3

· 9 мин

Содержание

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

Быстрый ответ: открыть консоль Администрирование серверов 1С Предприятия, найти базу → Сеансы, щёлкнуть по нужному сеансу правой кнопкой и выбрать Удалить. Если консоли нет — те же действия делает утилита rac из командной строки. Ниже — когда какой способ применять, как посмотреть список сеансов, завершить один по идентификатору и что делать, если сеанс не удаляется.

Любое принудительное завершение обрывает работу пользователя: несохранённые данные в открытых формах и незаписанные документы теряются. По возможности сначала попросите человека выйти штатно.

Чем отличается сеанс от соединения

В клиент-серверной 1С работают два разных объекта.

  • 🧑‍💻 Сеанс — активный пользователь, который вошёл в базу: за ним закреплены имя, компьютер, приложение (тонкий клиент, Конфигуратор, фоновое задание).
  • 🔌 Соединение — низкоуровневый канал между клиентом и рабочим процессом сервера. У одного сеанса бывает несколько соединений.

Для задачи «выгнать пользователя из базы » завершают именно сеанс. Соединения трогают реже — когда сеанс уже удалён, а канал почему-то остался.

Завершение требуется в типичных случаях:

  1. Нужен монопольный доступ для обновления конфигурации, загрузки .dt или тестирования и исправления базы.
  2. Сеанс завис после обрыва сети или аварийного закрытия клиента и держит блокировки.
  3. Пользователь занял документ или объект, а его нет на месте.

Сеансом считается не только человек за клиентом. Фоновые и регламентные задания, веб-клиент опубликованной базы, внешние подключения через COM — всё это тоже сеансы в кластере. Поэтому «лишний» сеанс, мешающий монопольному доступу, иногда оказывается не пользователем, а зависшим фоновым заданием. Завершают его теми же средствами.

Завершение сеанса в консоли администрирования серверов

Это штатный способ для клиент-серверной базы. Нужна установленная компонента «Администрирование сервера 1С:Предприятия» и права администратора кластера.

  1. Запустите оснастку: Пуск → 1С Предприятие 8.3 → Дополнительно → Администрирование серверов 1С Предприятия (на 64-разрядной платформе — вариант x86-64).
  2. Разверните дерево: <центральный сервер> → <кластер> → Информационные базы → <ваша база> → Сеансы.
  3. В правой части появится список сеансов: номер, пользователь, приложение, компьютер, время начала и последней активности.
  4. Выделите нужную строку (или несколько с Ctrl), щёлкните правой кнопкой и выберите Удалить.

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

Чтобы во время обновления никто не зашёл заново, в свойствах информационной базы включите Блокировка начала сеансов и задайте код разрешения. Новые входы прекратятся, а вы спокойно завершите оставшиеся.

Если кластер защищён паролем администратора, консоль попросит его при подключении к серверу. Пароль администратора кластера нигде не восстанавливается — если он утерян, остаётся остановить службу агента и восстановить рабочий файл кластера 1CV8Clst.lst из резервной копии либо обратиться к администратору сервера. Пересоздавать кластер с нуля не нужно.

Отключение сеансов через утилиту rac из командной строки

Когда графической консоли нет (часто на Linux-серверах) или действия нужно выполнить скриптом, используют клиент администрирования rac. Он лежит в каталоге bin платформы, например C:\Program Files\1cv8\<версия>\bin\rac.exe или /opt/1cv8/x86_64/<версия>/rac.

Для работы rac рядом должен быть запущен сервер администрирования ras (как служба или вручную). Клиент обращается к ras, а тот — к агенту кластера.

Порядок действий:

  1. Узнайте идентификатор кластера:
    rac cluster list
    
    В выводе скопируйте значение cluster (длинный UUID).
  2. Посмотрите активные сеансы:
    rac session list --cluster=<uuid-кластера>
    
    У каждого сеанса будет свой session (тоже UUID), имя пользователя и приложение.
  3. Завершите нужный сеанс по его идентификатору:
    rac session terminate --cluster=<uuid-кластера> --session=<uuid-сеанса>
    

Соединения смотрят и разрывают командами rac connection list и rac connection disconnect с теми же параметрами кластера.

Точный набор параметров зависит от версии платформы. Если сомневаетесь в ключе — выполните rac help или rac session help: справка покажет доступные команды для вашего релиза. Подкоманды наугад не подбирайте.

Как найти сеанс, который держит базу

Прежде чем кого-то завершать, стоит убедиться, что мешает именно он. Иначе легко выгнать не того и прервать чужую работу зря.

Ориентиры в консоли Администрирование серверов 1С:

  • в списке Сеансы отсортируйте строки по колонке последней активности — зависший сеанс обычно давно не подавал признаков жизни, хотя формально «жив»;
  • в узле Блокировки видно управляемые блокировки с привязкой к сеансу: так находят того, кто занял конкретный объект или документ;
  • колонки с именем компьютера и приложением подскажут, это рабочий сеанс или фоновое задание.

По утилите rac расширенные сведения о сеансах выводит команда с ключом лицензий:

rac session list --licenses --cluster=<uuid-кластера>

Признаки проблемного сеанса, по которым принимают решение:

  1. ⏱ давняя последняя активность при формально активном сеансе;
  2. 🔒 блокировка на объекте, который вы не можете записать или провести;
  3. 💻 имя пользователя или компьютера, которого точно нет на месте.

Если нужно восстановить картину «что происходило», помогает журнал регистрации базы — он покажет последние действия сеанса перед зависанием. Это же место стоит проверить, если зависания повторяются: по журналу видно, на какой операции сеанс обрывается.

Как штатно выгнать всех пользователей перед обновлением

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

В типовых конфигурациях (БП 3.0, ЗУП 3.1, УТ 11) откройте Администрирование → Обслуживание → Блокировка работы пользователей (в некоторых релизах пункт называется близко по смыслу). Задайте время начала блокировки и текст сообщения — программа предупредит работающих и в назначенный момент завершит их сеансы штатно, с сохранением.

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

Посмотреть, кто сейчас в базе, можно и без серверной консоли: главное меню (значок в левом верхнем углу) → Все функции → Стандартные → Активные пользователи. Если пункта Все функции нет, включите его: Сервис и настройки → Настройки → Параметры → Отображать команду "Все функции". Список показывает пользователей и приложения, но завершить сеанс отсюда нельзя — только посмотреть.

Каким способом завершить сеанс в вашем случае?

Если сеанс не завершается: рабочие процессы и служба

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

  • 🔁 Рабочий процесс (rphost). Все сеансы обслуживаются рабочими процессами сервера. В консоли, в узле Рабочие процессы, видно их загрузку. Прямой кнопки «убить процесс» в типовой консоли нет; в отказоустойчивом кластере процессы перезапускаются автоматически по настройкам рабочего сервера.
  • 🛑 Служба агента (ragent). Самый радикальный приём — перезапуск службы Агент сервера 1С:Предприятия 8.3 в оснастке Службы Windows. После рестарта агент поднимает кластер заново, и зависшие соединения исчезают.

Перезапуск службы агента обрывает ВСЕ сеансы во ВСЕХ базах этого сервера, а не только проблемный. Делайте это только когда пользователей нет или они предупреждены, и никогда — в разгар рабочего дня.

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

Завершение сеанса на терминальном сервере

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

Снять только процесс 1С:

  1. На сервере откройте Диспетчер задач → Подробности.
  2. Найдите процесс клиента: 1cv8c.exe — тонкий клиент, 1cv8.exe — толстый клиент или Конфигуратор.
  3. Выберите нужный по имени пользователя в колонке и нажмите Снять задачу.

Завершить весь RDP-сеанс пользователя:

  • в Диспетчере задач → Пользователи щёлкните по пользователю правой кнопкой → Выход;
  • либо в командной строке с правами администратора: quser покажет список сеансов с их ID, а logoff <ID> завершит нужный.

В PowerShell процессы клиента снимают командой вида Stop-Process -Name 1cv8c — но она закроет 1С у всех пользователей сразу, поэтому точнее работать по конкретному ID сеанса.

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

Эти приёмы рассчитаны на Windows Server 2016 и новее.

Сеансы в облачных базах и 1С:Fresh

Если база арендована у провайдера или работает в модели 1С:Fresh, доступа к консоли кластера у вас обычно нет — сервер администрирует поставщик сервиса.

  • ☁️ 1С:Fresh. Активными пользователями приложения управляют через личный кабинет сервиса (менеджер сервиса провайдера). Там же задают регламент работы и блокировку. Внутри самого приложения список покажет Активные пользователи, но принудительно завершить чужой сеанс оттуда нельзя.
  • 🏢 Аренда 1С у хостинга. Завершение сеансов, перезапуск служб и получение монопольного доступа выполняет техподдержка провайдера по вашей заявке. Самостоятельно до службы агента вы не доберётесь.

Если сеанс «завис» в облаке и мешает, чаще всего помогает подождать: по тайм-ауту неактивности сервис сам закрывает брошенные сеансы. Срочную разблокировку запрашивайте у поддержки — в заявке укажите имя базы, пользователя и время, когда сеанс перестал отвечать, это ускорит разбор.

То же касается баз, опубликованных на веб-сервере: завершить сеанс веб-клиента со стороны пользователя нельзя, но на сервере он виден в консоли и rac как обычный сеанс и закрывается штатными средствами.

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

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