К статье
Практический материал

Администрирование · 12 мин

Как завершить сеанс на сервере 1С

Как завершить сеанс на сервере 1С: через консоль кластера, администрирование СУБД, командную строку и конфигуратор. Пошаговые инструкции, риски и проверка результата.

Завершить сеанс на сервере 1С требуется, когда пользователь «завис», база заблокирована для обновления, лицензии исчерпаны или нужно экстренно выгнать всех из информационной базы. В клиент-серверном варианте работы сеанс — это соединение между клиентским приложением и рабочим процессом кластера, и разорвать его можно несколькими способами: через консоль кластера серверов, через средства СУБД, программно или через командную строку.

Выбор способа зависит от ситуации: точечное отключение одного пользователя удобнее делать в консоли кластера, массовое завершение перед регламентными работами — через установку блокировки сеансов, а «зависшие» соединения иногда приходится снимать на уровне СУБД. Неправильное завершение может привести к потере несохранённых данных пользователя, поэтому перед принудительным разрывом стоит предупредить людей и убедиться, что сеанс действительно неактивен или мешает работе.

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

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

Один сеанс может существовать без активного соединения — например, когда пользователь свернул клиент, но не вышел из программы. Именно поэтому «зависшие» сеансы продолжают занимать лицензии и удерживать блокировки, даже если человек давно отошёл от компьютера. Завершение сеанса освобождает лицензию и снимает связанные с ним блокировки данных.

Завершение сеанса через консоль кластера серверов

Консоль кластера — стандартный инструмент администратора сервера 1С. В Windows она называется «Серверы 1С:Предприятия» и устанавливается вместе с компонентами сервера. Откройте консоль, разверните нужный сервер, затем кластер, и перейдите в ветку «Сеансы». Вы увидите список всех активных сеансов с указанием пользователя, приложения, времени начала и последней активности.

Чтобы завершить конкретный сеанс, выделите его в списке, нажмите правую кнопку мыши и выберите «Удалить». Сервер немедленно разорвёт сеанс: у пользователя закроется клиент с сообщением о разрыве соединения, а несохранённые данные будут потеряны. Лицензия, которую занимал сеанс, освобождается и становится доступной другим пользователям.

Для массового завершения можно выделить несколько сеансов с зажатой клавишей Ctrl или Shift и удалить их одной командой. Учтите, что в списке присутствуют и системные сеансы — фоновые задания, сеансы синхронизации, COM-соединения. Их завершение тоже возможно, но может прервать обмен данными или регламентные операции.

Порядок действий в консоли кластера
  1. 1
    Откройте консоль «Серверы 1С:Предприятия» и раскройте нужный кластер
  2. 2
    Перейдите в ветку «Сеансы» и найдите сеанс по имени пользователя или приложению
  3. 3
    Проверьте время последней активности, чтобы не отключить работающего человека
  4. 4
    Нажмите правую кнопку мыши и выберите «Удалить»
  5. 5
    Проверьте, что сеанс исчез из списка, а лицензия освободилась

Блокировка сеансов и массовое отключение пользователей

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

В консоли кластера откройте свойства информационной базы и установите флажок «Блокировка начала сеансов включена». Укажите время начала и окончания блокировки, а также сообщение, которое увидят пользователи при попытке входа. Можно задать код разрешения — тогда те, кто запустит клиент с параметром /UC<код>, смогут войти несмотря на блокировку. Это удобно, чтобы самому администратору сохранить доступ.

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

Завершение сеанса из конфигуратора и типовых механизмов

Во многих типовых конфигурациях на базе Библиотеки стандартных подсистем есть встроенный механизм завершения работы пользователей. В разделе администрирования обычно доступна обработка «Активные пользователи» или «Блокировка работы пользователей»: она показывает список сеансов и позволяет установить блокировку с рассылкой предупреждений пользователям прямо в их клиенты.

Преимущество этого способа — пользователи получают сообщение «Работа программы будет завершена через N минут» и успевают сохранить данные. После наступления времени блокировки сеансы завершаются автоматически. Это самый корректный вариант планового отключения, и для типовых конфигураций его стоит предпочитать ручному удалению сеансов в консоли.

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

Сравнение способов завершения сеансов

Консоль кластера

Подходит для точечного и аварийного отключения; требует прав администратора кластера, завершает сеанс мгновенно без предупреждения пользователя

Блокировка сеансов в консоли

Подходит для плановых работ на всей базе; не даёт новым пользователям войти, но существующих нужно завершать отдельно

Типовая обработка «Блокировка работы пользователей»

Лучший вариант для планового отключения: пользователи получают предупреждение и успевают сохранить данные, но работает только в конфигурациях с БСП

Завершение на уровне СУБД

Крайняя мера для зависших соединений, которые консоль кластера не снимает; рискованно и требует понимания работы СУБД

Завершение зависших сеансов через СУБД и службы

Иногда сеанс «зависает» так, что консоль кластера показывает его, но удалить не получается, либо сеанс держит блокировку на уровне СУБД после аварийного завершения клиента. В таких случаях приходится работать на уровне базы данных. В MS SQL Server откройте Activity Monitor или выполните запрос к sys.dm_exec_sessions, найдите нужный процесс по имени пользователя или базе и завершите его командой KILL с номером SPID.

sql
KILL 57; -- где 57 — SPID зависшего процесса из sys.dm_exec_sessions

Более грубый, но надёжный способ — перезапуск службы агента сервера 1С или конкретного рабочего процесса rphost. В консоли кластера можно посмотреть, какой рабочий процесс обслуживает проблемный сеанс, и перезапустить его через свойства процесса. Учтите: перезапуск rphost разорвёт все сеансы, которые он обслуживает, а не только зависший.

Перезапуск службы «Агент сервера 1С:Предприятия» — крайняя мера: она обрывает все сеансы всех баз кластера. Применяйте её только когда другие способы не помогли, и обязательно вне рабочего времени или после предупреждения всех пользователей.

Программное завершение сеансов и командная строка

Для автоматизации — например, ночного отключения всех перед резервным копированием — сеансы можно завершать программно. Через COM-объект V83.COMConnector или административный интерфейс RAS (сервер администрирования кластера) доступны методы получения списка сеансов и их завершения. RAS позволяет управлять кластером удалённо, в том числе из скриптов и внешних систем мониторинга.

Также встроенный язык 1С предоставляет методы работы с сеансами внутри самой информационной базы: можно получить список сеансов через ПолучитьСеансыИнформационнойБазы() и завершить чужой сеанс, если у текущего пользователя есть административные права. Это используется в регламентных заданиях для автоматического отключения «забытых» сеансов по таймауту неактивности.

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

Типичные ошибки
01
Удаление сеанса без проверки активности: пользователь теряет несохранённые данные, а документ остаётся в незавершённом состоянии
02
Завершение системных сеансов и фоновых заданий: прерывается обмен данными или регламентная операция, что приводит к рассинхронизации
03
Установка блокировки без кода разрешения: администратор сам не может войти в базу для обслуживания
04
Забытая блокировка после регламентных работ: на следующий день пользователи не могут войти и поднимают аварийную заявку
05
Перезапуск всей службы агента вместо одного рабочего процесса: страдают пользователи всех баз кластера, а не только проблемной

Проверка результата и контроль лицензий

После завершения сеанса убедитесь, что он действительно исчез: обновите список сеансов в консоли кластера (F5) и проверьте, что нужного пользователя там нет. Если сеанс появился снова через несколько секунд — у пользователя, скорее всего, работает автореконнект или запущено фоновое задание, которое пересоздаёт сеанс. В этом случае поможет только блокировка сеансов или остановка соответствующего задания.

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

Контрольные точки

Как проверить результат

Список сеансов в консоли кластера
Норма

Завершённый сеанс отсутствует после обновления списка

Тревожный признак

Сеанс появляется снова — работает автореконнект или фоновое задание

Счётчик занятых лицензий
Норма

Количество занятых лицензий уменьшилось после завершения сеанса

Тревожный признак

Лицензия не освободилась — остался фантомный сеанс, нужен перезапуск rphost

Доступность базы после блокировки
Норма

Вход без кода разрешения отклоняется, с кодом — выполняется

Тревожный признак

Блокировка не действует или, наоборот, не снимается после работ

Журнал регистрации
Норма

Есть запись о завершении сеанса без ошибок транзакций

Тревожный признак

Массовые ошибки отката транзакций после принудительного разрыва

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

Можно ли завершить сеанс, не имея доступа к консоли кластера?

Да, если конфигурация построена на Библиотеке стандартных подсистем: используйте обработку «Активные пользователи» и функцию блокировки работы пользователей в разделе администрирования. Потребуются права администратора в самой информационной базе. Без административных прав ни в консоли, ни в базе завершить чужой сеанс нельзя.

Почему сеанс появляется снова сразу после удаления?

Чаще всего у пользователя включён автоматический перезапуск клиента после разрыва соединения, либо сеанс пересоздаёт фоновое задание, планировщик обмена или внешнее приложение, подключающееся через COM или веб-сервис. Установите блокировку начала сеансов — тогда переподключение будет отклоняться.

Потеряет ли пользователь данные при принудительном завершении сеанса?

Да, все несохранённые данные (открытые незаписанные документы, непроведённые изменения) будут потеряны. Записанные в базу данные не пострадают: незавершённые транзакции СУБД откатит автоматически. Поэтому при плановых отключениях всегда предупреждайте пользователей заранее.

Как отключить только «зависшие» сеансы, не трогая активных?

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

Чем завершение сеанса отличается от завершения соединения?

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

Опасно ли перезапускать службу агента сервера 1С?

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

Итог

Что важно запомнить

Точечное завершение сеанса делайте через консоль кластера, массовое — через блокировку сеансов с последующим удалением активных, а плановое отключение пользователей — через типовую обработку с предупреждением. Зависшие соединения снимайте на уровне СУБД или перезапуском рабочего процесса, и всегда проверяйте результат: исчезновение сеанса из списка и освобождение лицензии.