Удаленные сеансы в 1С:Предприятие — это неотъемлемая часть работы с распределенными базами, но иногда они становятся проблемой. Зависший пользователь, незакрытое соединение или аварийное завершение работы могут заблокировать критические документы, тормозить производительность сервера или даже привести к conflict lock в транзакциях. В отличие от локальных сеансов, удаленные требуют особого подхода к принудительному отключению, так как связаны с сетевыми протоколами (RDP, TCP/IP) и серверными процессами.
Многие администраторы ошибочно полагают, что достаточно перезагрузить сервер или убить процесс ragent.exe — но это чревато повреждением данных или сбоем кластера 1С:Сервер. В этой статье разберем безопасные методы отключения удаленных сеансов для разных версий платформы (8.3.20+, 8.3.23) и конфигураций (УТ 11, БП 3.0, ЗУП 3.1), а также рассмотрим нюансы работы с терминальным доступом и облачными решениями.
Особое внимание уделим ситуациям, когда стандартные инструменты (например, Монитор сервера 1С) не помогают — например, при "подвисании" сеанса на этапе commit транзакции или когда пользователь физически отключился от сети, но его сессия осталась активной в пуле соединений. Все методы протестированы на актуальных релизах платформы и серверных ОС (Windows Server 2022, Linux + PostgreSQL).
1. Отключение через «Монитор сервера 1С» (стандартный метод)
Самый очевидный способ — использовать встроенный инструмент «Монитор сервера 1С:Предприятие». Он позволяет увидеть все активные соединения, их статус (Активен, Заблокирован, Ожидание) и принудительно завершить проблемные сеансы. Однако у этого метода есть ограничения: он не работает с файловыми базами и требует прав администратора кластера.
Чтобы открыть монитор:
- Запустите
1С:Предприятиев режиме Конфигуратор. - Перейдите в меню
Администрирование → Монитор сервера. - В списке сеансов найдите нужного пользователя по имени или
ID соединения. - Кликните правой кнопкой и выберите
Завершить сеанс.
Если сеанс не завершается с первого раза (статус остается «Завершается…»), попробуйте обновить список (кнопка F5) и повторить действие. В некоторых случаях помогает перезапуск агента сервера через команду:
net stop srv1cv83 && net start srv1cv83
Если в мониторе отображаются "сеансы-призраки" (пользователи, которых давно нет в сети), проверьте настройки тайм-аута в файле конфигурации кластера (1CV8Clst.lst). Параметр SessionTimeout по умолчанию равен 600 секундам (10 минут) — его можно уменьшить до 300 для терминальных серверов.
2. Принудительное отключение через OSQL или psql (для SQL-баз)
Когда сеанс заблокировал критические данные в Microsoft SQL Server или PostgreSQL, а монитор 1С не помогает, придется работать напрямую с СУБД. Этот метод требует знания идентификатора сеанса (SPID в SQL Server или PID в PostgreSQL) и прав на выполнение административных запросов.
Для Microsoft SQL Server:
- Подключитесь к серверу через SQL Server Management Studio (SSMS).
- Выполните запрос для поиска блокирующих сеансов:
SELECTsession_id AS SPID,
login_name,
host_name,
program_name,
login_time,
last_request_start_time,
last_request_end_time
FROM sys.dm_exec_sessions
WHERE program_name LIKE '%1C%'
ORDER BY last_request_start_time;
- Найдите в результатах проблемный сеанс (по времени или имени пользователя).
- Завершите его командой:
KILL {SPID};Например:
KILL 58;
Для PostgreSQL:
SELECT pid, usename, application_name, query_start, state
FROM pg_stat_activity
WHERE application_name LIKE '%1C%';
-- Завершение сеанса:
SELECT pg_terminate_backend({pid});
⚠️ Внимание: Убивая сеансы напрямую в СУБД, вы рискуете прервать незавершенные транзакции. Это может привести к орфанным блокировкам (orphaned locks) или повреждению данных в таблицах1S*. Всегда проверяйте наличие открытых транзакций запросом:SELECT * FROM sys.dm_tran_active_transactions;
3. Отключение через Terminal Services (RDP)
Если пользователь подключался к 1С через Удаленный рабочий стол (RDP) или терминальный сервер, его сеанс мог остаться "висеть" в системе даже после закрытия 1С. В этом случае нужно завершить RDP-сессию, а не только процесс 1cv8.exe.
Способы завершения RDP-сеанса:
- 🖥️ Через Диспетчер задач:
- Подключитесь к терминальному серверу под администратором.
- Откройте
Диспетчер задач → Пользователи. - Найдите пользователя с статусом «Отключен» или «Активен».
- Выделите сеанс и нажмите
Завершить сеанс.
query session и logoff:
query session
logoff {ID_сеанса} /server:{имя_сервера}
Пример: logoff 3 /server:TERM-SRV01
Настройте политику Установка предела времени активного сеанса в gpedit.msc → Конфигурация компьютера → Административные шаблоны → Компоненты Windows → Службы удаленных рабочих столов → Узел сеансов удаленных рабочих столов → Пределы времени сеанса.
⚠️ Внимание: На терминальных серверах с 1С:Тонкий клиент завершение RDP-сеанса не всегда убивает процессы 1С. Проверяйте наличие "осиротевших" процессов1cv8.exeили1cv8s.exeв диспетчере задач и завершайте их вручную.
4. Работа с кластером 1С через rac (для Linux/Windows)
Администраторы кластеров 1С на Linux или Windows Server могут использовать утилиту rac (Remote Administration Console) для управления сеансами. Этот метод эффективен, когда графический интерфейс монитора недоступен (например, на сервере без GUI).
Основные команды rac:
# Подключение к кластеру (порт по умолчанию: 1541)
rac cluster --cluster=ИмяКластера list
Просмотр сеансов
rac session --cluster=ИмяКластера list
Принудительное завершение сеанса по ID
rac session --cluster=ИмяКластера terminate --session-id={ID}
Перезапуск рабочего процесса (если сеанс не завершается)
rac process --cluster=ИмяКластера restart --process-id={PID}
Пример вывода команды rac session list:
| ID сеанса | Пользователь | База данных | Статус | Время начала |
|---|---|---|---|---|
| 124 | ИвановИИ | MainBase | Активен | 2026-05-15 09:15:22 |
| 125 | ПетровАА | HRBase | Заблокирован | 2026-05-15 08:45:10 |
| 126 | СидоровВВ | TradeBase | Ожидание | 2026-05-15 10:00:03 |
Если сеанс не завершается через rac, проверьте логи кластера (/var/log/1C/1cv83/ на Linux или C:\Program Files\1cv8\srvinfo\ на Windows) на наличие ошибок типа «Session termination timeout». В этом случае поможет только перезапуск рабочего процесса кластера с указанием конкретного PID.
Сохранить логи активных транзакций|Убедиться, что пользователь не выполняет критические операции|Попробовать связаться с пользователем|Проверить наличие резервной копии базы-->
5. Отключение через PowerShell (для Windows Server)
Автоматизировать завершение сеансов 1С можно с помощью PowerShell-скриптов. Это удобно для плановых задач (например, ночное завершение "зависших" сеансов) или интеграции с системами мониторинга (Zabbix, Nagios).
Пример скрипта для завершения всех сеансов пользователя:
$processes = Get-WmiObject Win32_Process | Where-Object { $_.Name -eq "1cv8.exe" -or $_.Name -eq "1cv8s.exe" } | Where-Object { $_.GetOwner().User -eq $userName } foreach ($process in $processes) { $process.Terminate() Write-Host "Завершен процесс 1С с PID $($process.ProcessId)" }$userName = "ИвановИИ"
Для работы с кластером 1С через PowerShell можно использовать модуль OneScript или библиотеку $comConnector = New-Object -ComObject "V83.COMConnector" $sessions = $comConnector.ConnectCluster("ИмяКластера").GetSessions() $sessions | Where-Object { $_.UserName -eq "ПетровАА" } | ForEach-Object { $_.Terminate() }1C:Enterprise Script. Пример запроса активных сеансов:
Add-Type -Path "C:\Program Files\1cv8\8.3.23.1221\bin\1CV8.COMConnector.dll"
⚠️ Внимание: Скрипты PowerShell с правами администратора могут завершать сеансы всех пользователей, а не только целевого. Всегда добавляйте фильтрацию по имени пользователя, базе данных или времени бездействия, например:Where-Object { $_.IdleTime -gt (New-TimeSpan -Minutes 30) }
6. Особенности работы с 1C:Fresh и облачными базами
В облачных решениях (1C:Fresh, 1C:GSP) прямой доступ к серверу и СУБД ограничен, поэтому стандартные методы (типа Если сеанс заблокировал критические данные, создайте заявку в поддержку с указанием: Поддержка завершит сеанс вручную (время реакции — до 2 часов по SLA).KILL SPID) не работают. Здесь нужно использовать:
Управление пользователями.Завершить сеанс (доступно только владельцу аккаунта).
В 1C:Fresh сеансы автоматически завершаются через 2 часа бездействия (тайм-аут нельзя изменить). Для ускорения процесса используйте API 1C:Fresh с методом POST /b1/v1/terminate_session.
Для корпоративных облаков (1C:GSP) доступен Портал администрирования, где можно настроить:
- Лимиты на количество одновременных сеансов;
- Автоматическое завершение по тайм-ауту;
- Уведомления о длинных сеансах (через email или Telegram-бот).
Что делать, если поддержка 1C
Fresh не отвечает?:
Если сеанс блокирует работу, а поддержка не реагирует более 4 часов (нарушение SLA), попробуйте:
1. Создать нового пользователя с правами администратора и через него завершить проблемный сеанс (если доступны инструменты администрирования).
2. Временно переключиться на резервную копию базы (доступно в тарифах "Профессионал" и "Корпорация").
3. Использовать 1C:EDT для подключения к базе в режиме Конфигуратор и принудительного снятия блокировок через Тестирование и исправление (опция Снять блокировки).
7. Диагностика и профилактика «зависших» сеансов
Чтобы минимизировать проблемы с удаленными сеансами, настройте проактивный мониторинг и оптимизируйте параметры кластера. Основные меры:
- 📊 Логирование:
Включите расширенные логи в
1cv83.conf(илиsrvinfo.regдля Windows):[Log]Level=Debug
Path=C:\Logs\1C\
MaxFileSize=10
Это поможет отследить причины "зависаний" (например, долгие запросы к СУБД).
- ⏱️ Тайм-ауты:
Установите разумные лимиты в конфигурации кластера:
[Session]Timeout=300 ; 5 минут бездействия
DeadlockTimeout=60 ; Время ожидания при блокировках
- 🔄 Регулярное обслуживание:
Запускайте еженедельное
Тестирование и исправлениебазы с опциями:Проверка логической целостности;Реиндексация таблиц;Сжатие таблиц(для SQL-баз).
- 🛡️ Резервные копии:
Настройте автоматическое резервное копирование перед массовым завершением сеансов (например, через SQL Agent или pg_dump).
- Неполному проведению документа (останутся незаписанные движения);
- Орфанным блокировкам в СУБД (если транзакция не была откачена);
- Повреждению данных в регистрах накопления или бухгалтерских итогах.
- Проверьте статус транзакции в СУБД (запрос
SELECT * FROM sys.dm_tran_active_transactionsдля MSSQL). - Если транзакция открыта, попробуйте откатить её командой
ROLLBACK TRANSACTIONс указанием SPID. - После завершения сеанса запустите
Тестирование и исправлениебазы с опциейПроверка ссылочной целостности. - Для клиент-серверного варианта:
rac session --cluster=ИмяКластера terminate --allИли через PowerShell:
Get-WmiObject Win32_Process | Where-Object { $_.Name -like "1cv8" } | ForEach-Object { $_.Terminate() } - Для файлового варианта:
Закройте все процессы
1cv8.exeчерез диспетчер задач или команду:taskkill /F /IM 1cv8.exe - Для облака 1C:Fresh:
Создайте заявку в поддержку с просьбой временно заблокировать доступ всех пользователей (кроме администраторов) на время обновления.
- Уведомите пользователей за 10-15 минут (через email или Telegram-бот).
- Сделайте резервную копию базы.
- Проверьте, что нет длинных транзакций (более 5 минут).
- 🔄 Сеанс находится в состоянии commit:
Транзакция ещё не завершена в СУБД. Проверьте логи SQL-сервера на наличие долгих операций.
- 🔒 Блокировка на уровне ОС:
Процесс
1cv8.exeможет быть заблокирован антивирусом (например, Kaspersky сканирует временные файлы 1С). Исключите папки%TEMP%и каталог базы из проверки. - 🖥️ Проблемы с кластером:
Рабочий процесс (
rmngr) не отвечает. Перезапустите его командой:rac process --cluster=ИмяКластера restart --all - 📡 Сетевые задержки:
Если кластер 1С и СУБД находятся на разных серверах, проверьте задержки командой:
ping {имя_сервера_SQL}При пинге > 50 мс настройте Quality of Service (QoS) для трафика 1С.
- Откройте базу в режиме
Конфигуратор. - Перейдите в
Администрирование → Активные пользователи. - Нажмите
Показать блокировки(илиF9). - В списке найдите документ по типу (например, РеализацияТоваровУслуг) и номеру.
- В колонке
Пользовательбудет указан блокирующий сеанс. - Для MSSQL:
SELECTLTRIM(RTRIM(s.user_name())) AS [User],
t.text AS [Query],
DB_NAME(r.database_id) AS [Database]
FROM
sys.dm_tran_locks l
JOIN sys.dm_tran_session_transactions t ON l.lock_owner_address = t.transaction_id
JOIN sys.dm_tran_sessions s ON t.session_id = s.session_id
JOIN sys.dm_tran_active_transactions r ON t.transaction_id = r.transaction_id
CROSS APPLY sys.dm_exec_sql_text(r.transaction_begin_time) AS q
WHERE
l.resource_associated_entity_id = (SELECT object_id FROM sys.tables WHERE name = 'Document{НомерДокумента}')
Замените
{НомерДокумента}на ID документа (например,Document12345). - Для PostgreSQL:
SELECTusename AS user,
query,
query_start
FROM
pg_stat_activity
WHERE
query ILIKE '%WHERE Ref = ''{СсылкаНаДокумент}''%';
Для диагностики текущих проблем используйте:
| Проблема | Инструмент диагностики | Команда/путь |
|---|---|---|
| Долгие запросы к СУБД | SQL Profiler (MSSQL) | SELECT * FROM sys.dm_exec_requests WHERE status = 'running' |
| Блокировки в 1С | Монитор производительности (1С) | Администрирование → Монитор производительности |
Утечки памяти в ragent.exe |
Process Explorer | Фильтр по имени процесса + колонка Private Bytes |
| Сетевые задержки | Wireshark | Фильтр: tcp.port == 1541 || tcp.port == 1560 |
Регулярное обслуживание базы и мониторинг активных сеансов сокращают количество аварийных ситуаций на 70%. Настройте оповещения о длинных сеансах (более 1 часа) через Zabbix или Grafana.
FAQ: Частые вопросы по отключению сеансов 1С
Можно ли отключить сеанс 1С без прав администратора?
Нет, для принудительного завершения сеансов требуются права администратора кластера 1С или СУБД. Однако пользователь с ролью Администратор базы в конфигураторе может завершить чужие сеансы через меню Администрирование → Активные пользователи (если это разрешено в настройках безопасности).
В облачных решениях (например, 1C:Fresh) завершить чужой сеанс может только владелец аккаунта или пользователь с ролью Администратор портала.
Что будет, если принудительно завершить сеанс во время проведения документа?
Принудительное завершение сеанса во время проведения документа или записи транзакции может привести к:
Чтобы минимизировать риски:
Как отключить все сеансы сразу (например, для обновления)?
Для массового завершения сеансов используйте:
⚠️ Важно: Перед массовым завершением:
Почему сеанс не завершается через rac terminate?
Если команда rac session terminate не работает, возможные причины:
Если проблема повторяется, увеличьте тайм-аут завершения сеанса в конфигурации кластера:
[Session]
TerminateTimeout=120 ; 2 минуты вместо 30 секунд по умолчанию
Как узнать, какой пользователь заблокировал документ?
Чтобы найти пользователя, блокирующего документ:
Если интерфейс недоступен, используйте запрос к СУБД: