Администрирование · 13 мин
Как принудительно отключить пользователя 1С
Как принудительно отключить пользователя 1С: через консоль кластера, консоль СУБД, конфигуратор и код. Пошаговые инструкции, риски и проверка результата.
Принудительное отключение пользователя требуется, когда сеанс «завис», блокирует проведение документов или обмен данными, а сам сотрудник недоступен. Правильный способ зависит от режима работы базы: файловый или клиент-серверный. В клиент-серверном варианте сеанс завершают через консоль кластера 1С, в файловом — через список активных пользователей, а в особых случаях применяют штатные средства СУБД или программные методы.
Главный риск при принудительном завершении — потеря несохранённых данных и обрыв длительных транзакций. Если у пользователя открыт непроведённый документ или выполняется обмен, принудительное отключение приведёт к откату текущей операции. Поэтому перед завершением сеанса стоит убедиться, что пользователь действительно недоступен, а его сеанс не выполняет важную фоновую задачу.
Ниже разобраны все рабочие способы: от штатной консоли кластера до программного завершения сеансов, а также проверка результата, типичные ошибки и ограничения каждого метода.
Когда и зачем отключать пользователя принудительно
Типичные ситуации: сеанс «повис» из-за обрыва сети, и пользователь не может войти повторно, потому что старый сеанс ещё числится активным; сеанс держит блокировку объекта, мешая другим сотрудникам проводить документы; нужно срочно освободить лицензию, которую занимает неактивный сеанс; требуется экстренно завершить работу перед обновлением конфигурации или регламентным обслуживанием базы.
Понять, что сеанс завис, можно по косвенным признакам: в списке сеансов время последнего обращения давно не меняется, пользователь сообщает об ошибке «сеанс уже используется» или о невозможности войти, либо монопольные операции (обновление, тестирование и исправление) не запускаются из-за активных соединений.
Время последнего обращения в консоли кластера
Список сеансов по имени пользователя
Список соединений и сеансов в консоли
Колонка блокировок в консоли кластера
Способ 1: завершение сеанса через консоль кластера 1С
Это основной и самый безопасный способ для клиент-серверного режима. Консоль администрирования серверов 1С устанавливается вместе с сервером 1С:Предприятия и доступна на сервере или на машине администратора при установке соответствующего компонента.
Порядок действий: откройте «Администрирование серверов 1С Предприятия», разверните нужный кластер, перейдите в раздел «Сеансы». Найдите сеанс нужного пользователя по имени, компьютеру или номеру сеанса. Выделите его и нажмите «Удалить» (или выберите соответствующий пункт контекстного меню). Сеанс завершится в течение нескольких секунд.
Обратите внимание на различие между «Сеансами» и «Соединениями». Сеанс — это логическая сессия пользователя, соединение — физическое подключение к рабочему процессу. Удалять нужно именно сеанс: удаление соединения без сеанса может не освободить лицензию и блокировки корректно.
- 1Откройте оснастку «Администрирование серверов 1С Предприятия»
- 2Разверните нужный кластер и откройте ветку «Сеансы»
- 3Найдите пользователя по имени, компьютеру или времени начала сеанса
- 4Проверьте время последнего обращения и активные фоновые задания сеанса
- 5Выделите сеанс и нажмите «Удалить»
- 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С может ещё некоторое время числиться активным, пока не сработает таймаут. Кроме того, завершение процесса СУБД посреди транзакции приводит к её откату, что при массовых операциях может занять заметное время.
-- PostgreSQL: завершить подключение к базе по PID
SELECT pg_terminate_backend(pid)
FROM pg_stat_activity
WHERE datname = 'имя_базы' AND usename = 'имя_пользователя';На уровне операционной системы можно перезапустить службу агента сервера 1С — это завершит все сеансы кластера разом. Такой вариант допустим только как аварийный, когда по-другому восстановить работоспособность не получается, и только вне рабочего времени пользователей.
Сравнение способов и выбор подходящего
Сравнение вариантов
Основной способ для клиент-серверного режима. Точечно завершает сеанс, освобождает лицензию и блокировки. Требует прав администратора кластера.
Подходит для файлового режима и типовых конфигураций. Работает мягко, но не помогает против полностью зависшего клиента.
Используется перед обновлением и обслуживанием. Завершает сеансы по расписанию и запрещает новые входы.
Аварийный вариант при недоступной консоли кластера. Обрывает соединение с БД, сеанс в кластере пропадает с задержкой.
Крайняя мера: отключает всех пользователей всех баз кластера сразу. Только вне рабочего времени.
Как выбрать действие
Проверка результата и типичные ошибки
После завершения сеанса убедитесь, что он исчез из списка сеансов в консоли кластера (обновите список), лицензия освободилась, а пользователь может войти в базу заново. Если сеанс появляется снова сразу после удаления — вероятно, на компьютере пользователя работает автоматическое переподключение или запущено фоновое задание, которое создаёт новый сеанс. Тогда сначала остановите источник переподключения.
Как проверить результат
Сеанс пользователя отсутствует после обновления списка
Сеанс появляется снова — ищите источник переподключения
Пользователь входит без ошибок
Ошибка «сеанс уже используется» — старый сеанс ещё жив
Документы проводятся у других пользователей
Блокировка осталась — проверьте соединения и фоновые задания
Счётчик занятых лицензий уменьшился
Лицензия занята — сеанс завершён не полностью
Ограничения и профилактика зависших сеансов
Полностью исключить зависшие сеансы нельзя, но их количество снижают настройками кластера: таймаут завершения спящих сеансов и параметры разрыва соединений при неактивности. В свойствах рабочего процесса и кластера задаются интервалы, по истечении которых неактивные сеансы завершаются автоматически, освобождая лицензии без участия администратора.
Дополнительные меры: регламент выхода пользователей из программы в конце дня, автоматическое завершение сеансов перед ночным резервным копированием через планировщик и скрипт администрирования, а также мониторинг длительных транзакций на стороне СУБД. Это снимает большую часть ручной работы по «чистке» сеансов.
Помните про права: завершать сеансы в консоли кластера может только администратор кластера или агент сервера, а блокировку соединений в базе — пользователь с правами администратора информационной базы. Раздавайте эти права ограниченному кругу сотрудников и фиксируйте в журнале регистрации, кто и когда завершал чужие сеансы.
Что важно запомнить
Основной инструмент — консоль кластера 1С: сеанс выбирается и удаляется точечно. В файловом режиме используют «Активных пользователей» и блокировку соединений. Перед отключением проверяйте несохранённые данные и фоновые задания, после — факт исчезновения сеанса и освобождение лицензии. Перезапуск службы сервера и KILL в СУБД — только аварийные меры.
Частые вопросы
Можно ли отключить пользователя, не имея доступа к серверу 1С?
Да, если у вас есть права администратора в самой информационной базе типовой конфигурации: откройте «Администрирование» → «Активные пользователи» и завершите сеанс оттуда. Это работает и в файловом, и в клиент-серверном режиме, но действует мягко — команда сработает при следующем обращении клиента.
Почему сеанс появляется снова сразу после удаления?
На компьютере пользователя работает процесс, который автоматически переподключается: открытый клиент с автовходом, регламентное задание на отдельном сеансе или внешняя программа через COM-соединение. Найдите источник по имени компьютера и приложению в свойствах сеанса и остановите его, затем удалите сеанс повторно.
Потеряет ли пользователь несохранённые данные при принудительном отключении?
Да. Все незаписанные документы, открытые формы с изменениями и незавершённые транзакции будут потеряны, а текущая транзакция откатится. Поэтому перед завершением сеанса стоит связаться с пользователем или отправить ему сообщение через список активных пользователей.
Как отключить сразу всех пользователей перед обновлением конфигурации?
Используйте блокировку установки соединений: в конфигураторе «Администрирование» → «Блокировка установки соединений с информационной базой». Укажите время начала блокировки и код разрешения — активные сеансы завершатся по расписанию, новые не создадутся, а администратор сможет войти по коду. В клиент-серверном режиме альтернатива — удалить все сеансы в консоли кластера.
Через какое время зависший сеанс завершится сам?
Это зависит от настроек кластера: параметры таймаута неактивных сеансов задаются в свойствах кластера и рабочих процессов. Если таймауты не настроены, сеанс может числиться активным очень долго. Рекомендуется задать разумные интервалы автоматического завершения, чтобы не отключать зависшие сеансы вручную.
Можно ли узнать, кто принудительно завершил сеанс пользователя?
Да, события администрирования фиксируются в журнале регистрации информационной базы и в технологическом журнале сервера 1С при его настройке. По журналу регистрации можно определить, какой администратор и когда выполнял действия с сеансами и блокировками соединений.