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

В этой статье мы разберём все актуальные способы завершения сеансов в разных версиях платформы 1С (8.3, 8.3.20+), включая ручные методы через консоль администрирования, скрипты на языке , а также инструменты операционной системы. Особое внимание уделим рискам потери данных при принудительном отключении и тому, как их минимизировать. Если вы админ, бухгалтер с правами доступа или разработчик — сохраните эту инструкцию в закладки: она пригодится при первых признаках «зависания» базы.

1. Отключение сеанса через Консоль администрирования 1С

Самый очевидный и безопасный способ — использовать встроенную Консоль администрирования серверов 1С (ras.exe). Она доступна на сервере, где установлен 1С:Предприятие, или на рабочей станции с полными правами администрирования. Интерфейс консоли интуитивно понятен, но есть нюансы, о которых многие не знают.

Чтобы завершить сеанс:

  • 🖥️ Запустите Консоль администрирования серверов 1С (путь: C:\Program Files (x86)\1cv8\common\ras.exe).
  • 📋 В дереве кластеров выберите нужный сервер → Активные сеансы.
  • 🔍 Найдите в списке пользователя по имени, компьютеру или идентификатору сеанса.
  • ❌ Кликните правой кнопкой по сеансу и выберите Завершить сеанс.

Если сеанс не завершается с первого раза (статус остаётся Активен), попробуйте обновить список (F5) и повторить действие. В некоторых случаях помогает перезапуск агента сервера 1С через ту же консоль (Правка → Перезапустить).

💡

Перед принудительным отключением проверьте, не выполняет ли пользователь критические операции (например, проведение документа или закрытие месяца). В консоли отображается текущая активность сеанса в колонке "Действие".

2. Команды для завершения сеансов через rac

Для автоматизации или удалённого управления сеансами удобно использовать утилиту командной строки rac.exe (Remote Administration Console). Она входит в комплект поставки 1С и позволяет управлять кластерами без графического интерфейса. Этот метод особенно полезен для скриптового администрирования или работы через RDP.

Основные команды:

# Просмотр всех активных сеансов на сервере

rac session list --cluster=ИмяКластера

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

rac session terminate --cluster=ИмяКластера --session-id=12345

Завершение всех сеансов пользователя

rac session terminate --cluster=ИмяКластера --user=ИвановИИ

Чтобы узнать имя кластера, используйте команду rac cluster list. Если у вас несколько кластеров, уточните нужный через параметр --cluster. Для работы с rac требуются права администратора на сервере 1С.

Что делать, если rac не находит сеанс?

Иногда сеансы не отображаются в rac из-за кэширования данных. Попробуйте добавить ключ --force-refresh или перезапустите службу агента сервера 1С (ragent).

3. Завершение сеансов через SQL-запрос (для опытных)

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

Для Microsoft SQL Server выполните запрос:

-- Найти активные сеансы 1С

SELECT

s.session_id,

s.login_name,

s.host_name,

s.program_name,

s.status,

s.last_request_start_time

FROM sys.dm_exec_sessions s

WHERE s.program_name LIKE '%1cv8%'

-- Убить сеанс по ID (замените 55 на реальный ID)

KILL 55

Для PostgreSQL:

-- Найти сеансы

SELECT pid, usename, application_name, state

FROM pg_stat_activity

WHERE application_name LIKE '%1cv8%';

-- Завершить сеанс

SELECT pg_terminate_backend(1234);

⚠️ Внимание: Прерывание SQL-сеанса может оставить незафиксированные транзакции. После этого обязательно выполните тестирование и исправление базы через chdbfl.exe или 1CV8 /TestAndRepairDb.

4. Отключение через "Диспетчер задач" Windows (если 1С работает локально)

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

  • 🔄 Не сработает для сеансов на сервере 1С.
  • 💾 Может привести к потере несохранённых данных.
  • 🔒 Требует прав администратора на ПК пользователя.

Инструкция:

  1. Нажмите Ctrl+Shift+Esc для вызова диспетчера.
  2. Найдите процессы 1cv8.exe, 1cv8s.exe или rmngr.exe.
  3. Выделите процесс пользователя и нажмите Завершить задачу.

Если процесс не завершается, используйте утилиту Process Explorer от Microsoft (она показывает дерево процессов и позволяет убивать их принудительно). Скачать её можно с официального сайта Microsoft Sysinternals.

📊 Какой способ отключения сеансов вы используете чаще?
Через Консоль администрирования 1С
Команды rac.exe
SQL-запросы
Диспетчер задач Windows
Другой

5. Автоматизация отключения "зависших" сеансов

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

  • 🕒 Автоматически завершает сеансы, простаивающие дольше N минут.
  • 📅 Очищает сеансы по расписанию (например, ночью).
  • 🚨 Оповещает администратора о "подозрительных" сеансах (например, с длительными транзакциями).

Пример кода для завершения сеансов через встроенный язык:

// Получаем список активных сеансов

Сеансы = АдминистрированиеСерверов1С.СеансыПользователей();

// Завершаем сеансы старше 1 часа

Для Каждого Сеанс Из Сеансы Цикл

Если (ТекущаяДата() - Сеанс.ВремяНачала) > 3600 Тогда

Попытка

Сеансы.ЗавершитьСеанс(Сеанс.Идентификатор);

Исключение

ЗаписатьЖурналРегистрации(НСтр("ru = 'Ошибка завершения сеанса: '") + ОписаниеОшибки());

КонецПопытки;

КонецЕсли;

КонецЦикла;

Для запуска такого скрипта по расписанию используйте регламентные задания в 1С или внешний планировщик (Windows Task Scheduler). Готовые обработки для автоматического управления сеансами можно найти на Инфостарте или 1С:ИТС.

Создать резервную копию базы|Протестировать скрипт на тестовом сервере|Настроить уведомления об ошибках|Определить "безопасное" время простоя (например, 30+ минут)-->

6. Частые ошибки и их решения

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

Ошибка Причина Решение
Сеанс не завершается через консоль Зависание процесса rphost Перезапустить службу агента сервера 1С или убить процесс rphost.exe через диспетчер задач
Ошибка "Сеанс заблокирован другим сеансом" Транзакция не завершена (например, при проведении документа) Использовать chdbfl.exe для исправления базы или восстановить данные из резервной копии
После отключения пользователь не может войти в базу Повреждение файла блокировок (.lck) Удалить файлы *.lck в каталоге базы (только для файлового режима!)
SQL-запрос KILL не срабатывает Сеанс находится в состоянии ROLLBACK Дождаться завершения отката или перезапустить SQL-сервер

Если после отключения сеанса база стала работать нестабильно (например, выдаёт ошибки при открытии документов), выполните тестирование и исправление через chdbfl.exe:

chdbfl.exe /F "C:\Базы1С\ИмяБазы" /TestAndRepair
⚠️ Внимание: Интерфейсы администрирования 1С и SQL-серверов периодически обновляются. Если вы работаете с облачной версией 1С (например, 1С:Fresh), некоторые методы (например, прямые SQL-запросы) могут быть недоступны. Уточняйте актуальные ограничения в документации вашего тарифа.

FAQ: Ответы на частые вопросы

Можно ли отключить сеанс пользователя, не прерывая его работу?

Нет, принудительное завершение сеанса всегда приводит к разрыву соединения. Однако пользователь может потерять несохранённые данные только если в момент отключения вёл активные операции (например, редактировал документ). Если сеанс простаивал (например, пользователь отошёл от компьютера), потерь данных не будет.

Что делать, если после отключения сеанса база перестала открываться?

Скорее всего, произошла ошибка при завершении транзакции. Попробуйте:

  1. Запустить тестирование и исправление базы через chdbfl.exe.
  2. Восстановить данные из последней резервной копии.
  3. Обратиться в поддержку 1С с логами ошибок (они находятся в каталоге %APPDATA%\1C\1Cv8\logs).
Как узнать, какой сеанс блокирует работу?

В Консоли администрирования обратите внимание на колонки:

  • Блокировки — показывает, какие объекты заблокированы.
  • Действие — отображает текущую операцию (например, "Проведение документа").
  • Время начала — помогает идентифицировать "зависшие" сеансы.

В SQL Server для анализа блокировок используйте запрос:

EXEC sp_who2;
Можно ли отключить все сеансы сразу?

Да, но это крайняя мера. В rac.exe используйте команду:

rac session terminate --cluster=ИмяКластера --all

В Консоли администрирования можно выделить несколько сеансов и завершить их группой. Предупреждение: это приведёт к разрыву всех активных соединений и возможной потере данных!

Как запретить пользователям оставлять сеансы открытыми?

Настройте автоматическое завершение неактивных сеансов на сервере 1С:

  1. Откройте Консоль администрирования → выберите кластер.
  2. Перейдите в Настройки → Сеансы.
  3. Установите параметр Автоматически завершать простаивающие сеансы через (мин) (рекомендуемое значение: 30–60 минут).

Также можно ограничить время сеанса через групповую политику Windows или скрипты logout.

💡

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