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

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

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

Как найти и завершить зависший сеанс 1С: консоль кластера, конфигуратор, диспетчер задач, SQL. Безопасные способы, риски и проверка результата.

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

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

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

Как отличить зависший сеанс от длительной операции

Не всякий «молчащий» сеанс завис. Признаки настоящего зависания: пользователь давно не работает за компьютером, но сеанс активен; программа не отвечает на действия (курсор «часики» более 15–30 минут при обычной операции); в списке сеансов виден нулевой или «замерший» объём вызовов СУБД при полной неактивности пользователя.

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

Сеанс активенВремя последнего вызова СУБД обновляется

Сеанс работает — не завершайте, дождитесь окончания операции

Сеанс мёртвАктивность нулевая, пользователь недоступен

Можно завершать через консоль кластера или диспетчер задач

Программа не отвечаетОкно 1С «белое», статус «Не отвечает»

Подождите 10–15 минут, затем проверьте активность сеанса на сервере

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

Это основной и самый безопасный способ для клиент-серверных баз. Откройте оснастку «Администрирование серверов 1С Предприятия» на сервере или на своём рабочем месте, если консоль установлена и кластер добавлен. Разверните дерево: кластер → информационные базы → нужная база → «Сеансы».

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

Если сеансов много, используйте сортировку по времени последнего вызова или по имени пользователя. Будьте внимательны: в списке могут быть несколько сеансов одного пользователя (например, толстый клиент и фоновое задание) — удаляйте именно зависший, а не все подряд.

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

Способ 2. Завершение процесса на компьютере пользователя (файловая база)

В файловом режиме сеанс — это процесс 1cv8.exe на рабочей машине пользователя. Если программа зависла, откройте диспетчер задач (Ctrl+Shift+Esc), найдите процесс «1C:Enterprise 8» или 1cv8.exe на вкладке «Подробности», выделите его и нажмите «Снять задачу». После этого файл 1Cv8.1CD будет освобождён, и другие пользователи смогут подключиться.

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

cmd
openfiles /disconnect /a имя_пользователя

На терминальном сервере действуйте через диспетчер задач на вкладке «Пользователи»: найдите сессию пользователя, разверните её и завершите зависший процесс 1cv8.exe. Завершать всю сессию пользователя целиком стоит только если отдельный процесс не завершается.

Способ 3. Завершение через конфигуратор и список активных пользователей

Если у вас есть доступ к конфигуратору, откройте меню «Администрирование» → «Активные пользователи». Список показывает подключённые сеансы с указанием пользователя, компьютера и времени начала. Выделите нужную строку и нажмите «Удалить» — в клиент-серверном режиме это равнозначно удалению сеанса в консоли кластера.

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

Когда сеанс не удаляется: блокировки на уровне СУБД

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

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

Профилактика: как не допустить накопления зависших сеансов

В свойствах информационной базы в консоли кластера задайте параметры «Интервал перезапуска» для рабочих процессов и, главное, «Допустимое время простоя» с принудительным завершением неактивных сеансов. Типовая практика — завершать спящие сеансы через 8–12 часов простоя, чтобы ночные «забытые» сеансы не съедали лицензии.

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

Частые ошибки при завершении сеансов

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

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

Проверка результата после завершения сеанса

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

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

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

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

Зависшего сеанса нет, счётчик сеансов уменьшился

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

Сеанс появился снова с тем же компьютера — ищите причину на стороне клиента

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

Вход выполняется штатно, лицензия выдаётся

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

Ошибка «нет свободных лицензий» — остались висящие сеансы или фоновые задания

Работа с документами
Норма

Документы открываются и проводятся без ошибок блокировки

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

Ошибки «конфликт блокировок» — блокировка осталась на уровне СУБД

Часто задаваемые вопросы

Можно ли завершить зависший сеанс без прав администратора?

Нет. Удаление сеансов в консоли кластера или конфигураторе требует прав администратора кластера или информационной базы. Обычный пользователь может только завершить свой собственный процесс 1cv8.exe на своём компьютере через диспетчер задач.

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

Данные, уже записанные в базу (проведённые документы, сохранённые объекты), не пострадают. Потеряется только то, что было открыто в формах, но не сохранено. Завершение сеанса через консоль кластера корректно откатывает незавершённые транзакции.

Сеанс удалил, но лицензия не освободилась. Что делать?

Проверьте, нет ли у того же пользователя второго сеанса или фонового задания — лицензии занимают и они. Также убедитесь, что не зависло соединение на уровне СУБД: в редких случаях «осиротевшую» сессию нужно завершить средствами SQL Server или PostgreSQL.

Как автоматически завершать сеансы, забытые на ночь?

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

Чем отличается «Удалить сеанс» от «Завершить сеанс» в консоли?

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

Зависает один и тот же пользователь регулярно — в чём причина?

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

Итог

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

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