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

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

Как принудительно отключить пользователя 1С

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

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

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

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

Когда и зачем отключать пользователя принудительно

Типичные ситуации: сеанс «повис» из-за обрыва сети, и пользователь не может войти повторно, потому что старый сеанс ещё числится активным; сеанс держит блокировку объекта, мешая другим сотрудникам проводить документы; нужно срочно освободить лицензию, которую занимает неактивный сеанс; требуется экстренно завершить работу перед обновлением конфигурации или регламентным обслуживанием базы.

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

Сеанс числится активным, но пользователь не работаетВероятно, «зависший» сеанс

Время последнего обращения в консоли кластера

Ошибка входа «сеанс уже используется»Старый сеанс не завершился

Список сеансов по имени пользователя

Не запускается обновление конфигурацииАктивные соединения мешают

Список соединений и сеансов в консоли

Документ не проводится у всехВозможна блокировка от чужого сеанса

Колонка блокировок в консоли кластера

Способ 1: завершение сеанса через консоль кластера 1С

Это основной и самый безопасный способ для клиент-серверного режима. Консоль администрирования серверов 1С устанавливается вместе с сервером 1С:Предприятия и доступна на сервере или на машине администратора при установке соответствующего компонента.

Порядок действий: откройте «Администрирование серверов 1С Предприятия», разверните нужный кластер, перейдите в раздел «Сеансы». Найдите сеанс нужного пользователя по имени, компьютеру или номеру сеанса. Выделите его и нажмите «Удалить» (или выберите соответствующий пункт контекстного меню). Сеанс завершится в течение нескольких секунд.

Обратите внимание на различие между «Сеансами» и «Соединениями». Сеанс — это логическая сессия пользователя, соединение — физическое подключение к рабочему процессу. Удалять нужно именно сеанс: удаление соединения без сеанса может не освободить лицензию и блокировки корректно.

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

Способ 2: отключение в файловом режиме работы

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

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

Крайний вариант для файловой базы — перезапуск общего доступа к каталогу базы на файловом сервере. Это оборвёт все соединения сразу, но применять его стоит только вне рабочего времени: у всех пользователей без предупреждения закроется программа, а несохранённые данные будут потеряны.

Способ 3: программное завершение сеансов

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

Типовой фрагмент кода на встроенном языке 1С выглядит так:

Коннектор = Новый COMОбъект("V83.COMConnector");

Агент = Коннектор.ConnectAgent("ИмяСервера");

Кластер = Агент.GetClusters()[0];

Агент.Authenticate(Кластер, "", "");

РабПроцессы = Агент.GetWorkingProcesses(Кластер);

// далее через рабочий процесс получаем ИБ и её сеансы

// для каждого сеанса: Агент.TerminateSession(Кластер, Сеанс);

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

Способ 4: завершение через СУБД и операционную систему

Если консоль кластера недоступна (например, служба агента сервера 1С не отвечает), сеанс можно оборвать на уровне СУБД. В Microsoft SQL Server активные подключения видны через Activity Monitor или запросом к sys.dm_exec_sessions; конкретный процесс завершается командой KILL с номером SPID. В PostgreSQL используют функцию pg_terminate_backend(pid).

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

sql
-- PostgreSQL: завершить подключение к базе по PID
SELECT pg_terminate_backend(pid)
FROM pg_stat_activity
WHERE datname = 'имя_базы' AND usename = 'имя_пользователя';

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

Сравнение способов и выбор подходящего

Сравнение вариантов

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

Основной способ для клиент-серверного режима. Точечно завершает сеанс, освобождает лицензию и блокировки. Требует прав администратора кластера.

Активные пользователи в базе

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

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

Используется перед обновлением и обслуживанием. Завершает сеансы по расписанию и запрещает новые входы.

KILL / pg_terminate_backend в СУБД

Аварийный вариант при недоступной консоли кластера. Обрывает соединение с БД, сеанс в кластере пропадает с задержкой.

Перезапуск службы сервера 1С

Крайняя мера: отключает всех пользователей всех баз кластера сразу. Только вне рабочего времени.

Маршрут решения

Как выбрать действие

Клиент-серверный режим, нужно отключить одного пользователяУдалите его сеанс в консоли кластера 1С
Файловая база, есть доступ администратора в режиме ПредприятияИспользуйте «Администрирование → Активные пользователи»
Нужно отключить всех перед обновлениемУстановите блокировку соединений с кодом разрешения
Консоль кластера недоступна, а сеанс держит блокировкиЗавершите соединение на стороне СУБД и проверьте список сеансов через несколько минут

Проверка результата и типичные ошибки

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

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

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

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

Сеанс пользователя отсутствует после обновления списка

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

Сеанс появляется снова — ищите источник переподключения

Вход пользователя в базу
Норма

Пользователь входит без ошибок

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

Ошибка «сеанс уже используется» — старый сеанс ещё жив

Блокировки объектов
Норма

Документы проводятся у других пользователей

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

Блокировка осталась — проверьте соединения и фоновые задания

Лицензии
Норма

Счётчик занятых лицензий уменьшился

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

Лицензия занята — сеанс завершён не полностью

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

Ограничения и профилактика зависших сеансов

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

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

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

Итог

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

Основной инструмент — консоль кластера 1С: сеанс выбирается и удаляется точечно. В файловом режиме используют «Активных пользователей» и блокировку соединений. Перед отключением проверяйте несохранённые данные и фоновые задания, после — факт исчезновения сеанса и освобождение лицензии. Перезапуск службы сервера и KILL в СУБД — только аварийные меры.

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

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

Да, если у вас есть права администратора в самой информационной базе типовой конфигурации: откройте «Администрирование» → «Активные пользователи» и завершите сеанс оттуда. Это работает и в файловом, и в клиент-серверном режиме, но действует мягко — команда сработает при следующем обращении клиента.

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

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

Потеряет ли пользователь несохранённые данные при принудительном отключении?

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

Как отключить сразу всех пользователей перед обновлением конфигурации?

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

Через какое время зависший сеанс завершится сам?

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

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

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