Завершение сеанса пользователя в 1С: от штатного выхода до принудительного сброса

· 9 мин

Содержание

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

Разберём, как корректно завершить сеанс и как снять зависший, когда обычный выход не сработал. Способ зависит от того, какая у вас база — файловая или клиент-серверная — и от того, есть ли доступ к серверу 1С и к консоли администрирования.

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

Короткая карта способов, чтобы сразу выбрать свой:

СпособКакая базаКогда применять
Блокировка работы пользователейлюбая типоваяплановое обновление, техобслуживание
Консоль администрированияклиент-сервернаязавис один сеанс, есть доступ к серверу
Команда racклиент-сервернаянет консоли, есть командная строка/SSH
Удаление 1Cv8.1CLфайловаявсе вышли, а база пишет «занята»
Снятие процесса по RDPтерминальный серверзавис 1cv8.exe на удалёнке
KILL в SQL ServerSQL-базакрайняя мера, сервер 1С не отвечает

Почему сеансы остаются открытыми и чем это грозит

Сеанс не закрывается мгновенно по нескольким причинам:

  • 🔌 Обрыв связи. Пропал Wi-Fi, уснул ноутбук, оборвался RDP — клиент «умер», но сервер ещё какое-то время считает сеанс живым и ждёт, пока сработает таймаут.
  • 🧊 Зависшее окно. 1С не отвечает, процесс 1cv8.exe висит в памяти. Выхода не было — значит, и сеанс сервер не закрыл.
  • 🔒 Открытая транзакция. Пользователь проводил документ или выполнялась длительная операция, и соединение прервалось в середине.
  • 🧮 Фоновые задания. Регламентные и фоновые задания — это тоже сеансы. Они живут своей жизнью и завершаются по своему расписанию.

Чем это мешает:

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

Штатный способ: завершить работу пользователей из самой программы

Самый безопасный вариант — не «убивать» сеансы снаружи, а попросить платформу закрыть их изнутри. В типовых конфигурациях на базе Библиотеки стандартных подсистем (БП 3.0, ЗУП 3.1, УТ 11 и другие) для этого есть режим блокировки работы.

  1. Зайдите под пользователем с правами администратора.
  2. Откройте Администрирование → Обслуживание → Блокировка работы пользователей (в части конфигураций пункт называется «Завершение работы пользователей»; расположение может немного отличаться по релизам).
  3. Задайте время, после которого сеансы будут закрыты, и при необходимости текст предупреждения.
  4. Включите блокировку.

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

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

Если пункт «Все функции» не отображается, включите его: главное меню → Сервис → Параметры → Отображать команду «Все функции».

Клиент-серверная база: консоль администрирования и команда rac

В клиент-серверном варианте сеансы живут на сервере 1С, и управляет ими администратор кластера.

Через консоль администрирования (оснастка «Администрирование серверов 1С Предприятия»):

  1. Откройте консоль, разверните Central server → Кластер → ваша информационная база.
  2. Выберите ветку Сеансы.
  3. Найдите нужную строку по имени пользователя и компьютеру, нажмите правой кнопкой → Удалить.

Сеанс закроется принудительно. Если консоль не видит кластер или оснастка не открывается, часто помогает перерегистрация библиотеки администрирования: от имени администратора выполнить regsvr32 radmin.dll из каталога bin установленной платформы (версия библиотеки должна совпадать с версией сервера).

Через утилиту rac — когда консоли под рукой нет, а есть доступ к серверу по SSH или в командной строке. Утилита лежит в каталоге bin платформы.

rem 1. узнаём идентификатор кластера
rac cluster list

rem 2. смотрим список сеансов по базе
rac session list --cluster=<идентификатор-кластера>

rem 3. завершаем конкретный сеанс по его идентификатору
rac session terminate --cluster=<идентификатор-кластера> --session=<идентификатор-сеанса>

Идентификаторы (длинные строки вида 12345678-90ab-...) берутся из вывода предыдущих команд. Если на кластере включена аутентификация администратора, добавьте параметры --cluster-user и --cluster-pwd. Полный список параметров — в справке: rac help и rac session help. Не используйте подкоманды, в которых не уверены.

Команда rac session terminate обрывает сеанс немедленно. Несохранённые данные пользователя пропадут, открытая транзакция откатится. Применяйте к сеансам, которые реально зависли.

Файловая база: снимаем блокировку через служебные файлы

У файловой базы нет сервера 1С, и список сеансов хранится прямо в каталоге базы. Если все пользователи вышли, а 1С всё равно пишет, что база занята, причина — в служебных файлах блокировки.

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

  1. Убедитесь, что никто не работает с базой: обойдите рабочие места или проверьте, что процессы 1cv8.exe ни у кого не запущены.
  2. Сделайте копию каталога базы целиком (это и есть ваша страховка).
  3. В каталоге информационной базы (там, где лежит 1Cv8.1CD) найдите и удалите файл блокировки сеансов 1Cv8.1CL.
  4. Если в каталоге есть служебная папка 1Cv8.cdn (управляемые блокировки) и база по-прежнему занята — её содержимое тоже можно очистить при полностью свободной базе.

После удаления этих файлов платформа создаст их заново при следующем запуске.

Удалять 1Cv8.1CL можно только тогда, когда с базой точно никто не работает. Если удалить файл при активных пользователях, можно повредить данные. Сам файл 1Cv8.1CD (это и есть база) не трогайте никогда.

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

Отключение зависшего сеанса по RDP и терминальному серверу

Когда пользователи работают через удалённый рабочий стол, зависший 1cv8.exe удобно снять прямо на терминальном сервере.

  1. На сервере откройте Диспетчер задач (комбинация Ctrl + Shift + Esc).
  2. Перейдите на вкладку Пользователи — вы увидите все RDP-сеансы.
  3. Разверните нужного пользователя, найдите процесс 1cv8.exe, завершите его.

Если зависло так, что процесс не снимается, можно отключить (Отключить) или завершить (Выйти) весь сеанс пользователя. Но это закроет ему все программы в сеансе, не только 1С.

Снятие процесса 1cv8.exe для клиент-серверной базы не удаляет сеанс на сервере 1С — он ещё повисит до таймаута. Чтобы убрать его сразу, дополнительно завершите сеанс через консоль администрирования или rac.

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

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

SQL как крайняя мера и почему ей лучше не пользоваться

Иногда советуют закрыть сеанс через SQL — найти соединение в базе SQL Server и снять его командой KILL. Технически это возможно, но это худший из способов, и прибегать к нему стоит в последнюю очередь.

Почему:

  • 🧩 SQL-соединение и сеанс 1С — не одно и то же. Снятие соединения на уровне СУБД не гарантирует корректного закрытия сеанса на сервере 1С — он может «подвиснуть» ещё сильнее.
  • 🔄 Откат незавершённой транзакции средствами СУБД может растянуться надолго и нагрузить сервер.
  • 🔒 Можно оборвать служебное соединение и получить проблемы со всей базой.

Если вы всё же диагностируете нагрузку на уровне SQL Server (например, видите долгую блокировку через sp_who2), сначала попробуйте закрыть сеанс штатно — через rac или консоль. SQL-инструменты оставьте для случая, когда сервер 1С уже не отвечает вовсе, и действуйте вместе с администратором СУБД.

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

Если сеанс не закрывается ни одним способом

Диагностика: выберите симптом

Крайняя мера для серверной базы — перезапуск службы сервера 1С (1C:Enterprise 8.x Server Agent). Он гарантированно закроет все сеансы, но остановит работу всех пользователей этой базы разом и оборвёт их транзакции. Делайте это только в технологическое окно и предупредив людей.

Профилактика: настройки, которые убирают зависшие сеансы

Чтобы не ловить зависшие сеансы вручную, настройте автоматическое завершение.

Что настроить против зависших сеансов
Выполнено: 0 / 6

Ключевая настройка — время пассивного и простоя сеанса в свойствах информационной базы (задаётся в консоли администрирования или командой rac infobase update). После неё разорванные и забытые сеансы закрываются автоматически через заданный интервал, и ручной сброс требуется гораздо реже.

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

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

Чем «Завершить работу пользователей» отличается от удаления сеанса в консоли?
Режим блокировки в самой программе предупреждает людей и даёт им сохранить данные, закрывая сеансы корректно. Удаление в консоли или командой rac обрывает сеанс немедленно, без предупреждения. Первое — для планового обновления, второе — для зависшего сеанса.
Закрыл окно 1С, а сеанс всё равно висит в списке — это нормально?
Для клиент-серверной базы — да, сервер держит сеанс ещё некоторое время до таймаута. Если настроено время засыпания сеанса, он закроется сам. Если висит часами — значит, клиент завис и его стоит снять.
Можно ли удалить файл `1Cv8.1CL` при работающих пользователях?
Нет. Удалять его можно только тогда, когда с базой гарантированно никто не работает, и предварительно сделав копию каталога. Иначе есть риск повредить данные.
Фоновое задание держит сеанс — как быть?
Разовое фоновое задание завершится само. Если «висит» регламентное — проверьте его расписание и настройки; при необходимости отключите регламентное задание, а не снимайте сеанс каждый раз вручную.
Снял процесс 1С на терминальном сервере, а в консоли сеанс остался. Почему?
Процесс на клиенте и сеанс на сервере 1С — разные вещи. После снятия 1cv8.exe сеанс закроется по таймауту либо удалите его дополнительно через консоль или rac.