Работа с 1С:Предприятие в многопользовательском режиме часто сталкивается с проблемой «зависших» сеансов. Пользователь вышел из системы некорректно, закрыл программу через диспетчер задач или потерял соединение с сервером — а его сеанс так и остался активным в базе. Это блокирует данные, мешает другим сотрудникам работать с документами и может привести к ошибкам при записи. В таких случаях администратору или опытному пользователю приходится принудительно завершать сеанс.
Но как сделать это правильно, чтобы не повредить базу и не потерять несохранённые данные? В этой статье разберём 5 проверенных способов сброса сеансов — от стандартных инструментов платформы до административных команд. Также выясним, какие риски несут те или иные методы, и когда лучше не вмешиваться в работу системы.
Предупреждение: некоторые действия требуют прав администратора сервера 1С или Windows — без них сбросить чужой сеанс не получится. Если вы не уверены в своих навыках, лучше обратиться к специалисту.
1. Сброс сеанса через «Монитор сервера 1С»
Самый безопасный и визуально понятный способ — использовать встроенный инструмент «Монитор сервера 1С». Он показывает все активные соединения, их статус и позволяет завершить сеанс в несколько кликов. Этот метод подходит для файловых и клиент-серверных баз, если у вас есть доступ к серверу приложений.
Чтобы открыть монитор:
- 🖥️ Запустите
1С:Предприятиев режимеКонфигуратор. - 🔧 Перейдите в меню
Администрирование → Монитор сервера(для клиент-серверного варианта) илиАдминистрирование → Активные пользователи(для файлового). - 👁️ В списке найдите нужного пользователя — его сеанс будет отмечен как
АктивенилиЗаблокирован. - ❌ Выделите строку и нажмите
Завершить сеанс(или правой кнопкой →Завершить).
Если кнопка Завершить сеанс неактивна, это может означать:
- 🔒 У вас недостаточно прав (нужна роль
АдминистраторилиПолные права). - 🔄 Сеанс уже завершается (подождите 10–20 секунд и обновите список).
- 🚫 Сеанс заблокирован на уровне СУБД (потребуется сброс через SQL или перезапуск службы).
Убедитесь, что у пользователя нет несохранённых данных|Проверьте, не выполняются ли фоновые задачи (регламентные операции)|Сделайте резервную копию базы (для критичных систем)|Предупредите пользователя о принудительном завершении (если возможно)-->
⚠️ Внимание: Если в мониторе отображается несколько сеансов одного пользователя (например, из-за некорректного выхода), завершайте их по очереди, начиная с самого старого. Одновременный сброс всех сеансов может привести к блокировке объектов базы.
2. Командная строка: rac и ras
Для администраторов, работающих с клиент-серверным вариантом 1С, утилиты rac (Remote Administration Console) и ras (Remote Administration Service) становятся незаменимыми. Они позволяют управлять сеансами прямо из командной строки Windows или Linux, не открывая конфигуратор.
Основные команды:
# Просмотр всех активных сеансов
rac session list --cluster=ИмяКластера
Принудительное завершение сеанса по ID
rac session terminate --cluster=ИмяКластера --session-id=123
Перезапуск службы агентов сервера (если сеансы не сбрасываются)
ras cluster --cluster=ИмяКластера restart
Где взять ИмяКластера?
- 📋 Посмотрите в файле конфигурации сервера (обычно
C:\Program Files\1cv8\conf\cluster.conf). - 🔍 Или выполните команду
rac cluster list— она покажет все доступные кластеры.
⚠️ Внимание: Команда ras cluster restart перезапускает все службы 1С на сервере, что приведёт к обрыву соединений всех пользователей. Используйте её только в крайнем случае!
Через Монитор сервера 1С|Команды rac/ras|Прямой запрос к СУБД|Перезапуск службы|Другой способ-->
3. Прямое удаление сеансов в СУБД (SQL-запрос)
Если сеанс «завис» на уровне базы данных (Microsoft SQL Server, PostgreSQL), его можно удалить прямо через SQL-запрос. Этот метод требует знаний в администрировании СУБД и прав на выполнение команд.
Для MS 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
KILL 55; -- где 55 — ID сеанса из предыдущего запроса
Для PostgreSQL:
-- Просмотр активных соединений
SELECT pid, usename, application_name, state
FROM pg_stat_activity
WHERE application_name LIKE '%1cv8%';
-- Завершение процесса
SELECT pg_terminate_backend(1234); -- где 1234 — PID процесса
⚠️ Внимание: Не завершайте сеансы с статусом ROLLBACK или RECOVERY — это может привести к повреждению данных. Также избегайте команды KILL для системных процессов СУБД (их IDs обычно меньше 50).
Что будет, если убить сеанс во время транзакции?
Если сеанс был в процессе записи данных (транзакция не завершена), СУБД автоматически откатит изменения. Однако в 1С это может привести к потере несохранённых документов или разрыву связей между объектами. В редких случаях потребуется тестирование и исправление базы (chdbfl.exe).
4. Сброс через «Управление компьютером» (Windows)
Если сеанс 1С «завис» на уровне операционной системы (например, процесс 1cv8.exe или ragent.exe не отвечает), можно завершить его через стандартные инструменты Windows:
- 🖱️ Нажмите
Win + R, введитеcompmgmt.mscи нажмитеEnter. - 📂 Перейдите в раздел
Служебные программы → Просмотр событий → Журналы Windows → Приложение. - 🔍 Найдите ошибки, связанные с
1Cилиragent(они помогут идентифицировать проблемный процесс). - 🚫 Откройте
Диспетчер задач(Ctrl+Shift+Esc), найдите процесс1cv8.exeилиrphost.exeи завершите его.
⚠️ Внимание: Если завершить процесс rphost.exe (рабочий процесс сервера 1С), это приведёт к обрыву всех сеансов, подключённых через этот хост. Пользователи потеряют несохранённые данные!
| Процесс | Описание | Риск при завершении |
|---|---|---|
1cv8.exe |
Клиентское приложение 1С | Потеря несохранённых данных текущего пользователя |
rphost.exe |
Рабочий процесс сервера 1С | Обрыв всех сеансов на этом хосте |
ragent.exe |
Агент сервера 1С | Падение кластера (требует перезапуска службы) |
rmngr.exe |
Менеджер кластера 1С | Остановка всех серверов 1С на машине |
5. Перезапуск службы сервера 1С
Крайнюю меру — перезапуск службы 1С:Предприятия — применяют, когда другие методы не помогают. Это гарантированно сбросит все сеансы, но также приведёт к простоям для всех пользователей.
Как перезапустить службу:
- 🔧 Откройте
services.msc(нажмитеWin + Rи введите команду). - 🔄 Найдите службу
Агент сервера 1С:Предприятия 8.3(или аналогичную для вашей версии). - 🛑 Нажмите
Остановить, подождите 10–15 секунд, затемЗапустить.
⚠️ Внимание: Если на сервере работает несколько кластеров 1С, перезапуск службы затронет их все. Перед этой операцией:
- 📢 Предупредите пользователей о простое (например, через групповой чат).
- ⏳ Выберите время с минимальной нагрузкой (например, ночью).
- 💾 Убедитесь, что автосохранение в 1С включено (настройка
Автосохранение данныхв конфигураторе).
Если после перезапуска службы сеансы продолжают «зависать», проверьте лицензии 1С — истёкшие или некорректные ключи часто вызывают подобные проблемы.
6. Автоматизация: скрипты для сброса сеансов
Для регулярного мониторинга и сброса «зависших» сеансов можно использовать скрипты на PowerShell или Bash. Например, следующий скрипт для Windows проверяет и завершает сеансы старше 1 часа:
# PowerShell-скрипт для сброса старых сеансов 1С
$ClusterName = "ВашКластер1С"
$MaxSessionAgeMinutes = 60
Получаем список сеансов
$sessions = rac session list --cluster=$ClusterName | Select-String "SessionID:\s+(\d+)"
foreach ($session in $sessions) {
$sessionId = $session.Matches.Groups[1].Value
$sessionInfo = rac session info --cluster=$ClusterName --session-id=$sessionId
# Проверяем время начала сеанса
if ($sessionInfo -match "StartTime:\s+(.+)") {
$startTime = [DateTime]::Parse($matches[1])
$age = (Get-Date) - $startTime
if ($age.TotalMinutes -gt $MaxSessionAgeMinutes) {
Write-Host "Завершаем сеанс $sessionId (возраст: $($age.TotalMinutes) минут)"
rac session terminate --cluster=$ClusterName --session-id=$sessionId
}
}
}
Для автоматизации:
- 📅 Сохраните скрипт как
.ps1и настройте его выполнение по расписанию через Планировщик задач Windows. - 🔒 Запускайте от имени администратора.
- 📊 Ведите лог выполнения (добавьте в скрипт запись в файл с датой и действиями).
⚠️ Внимание: Автоматический сброс сеансов может привести к потере данных, если пользователи забывают сохранять документы. Настройте уведомления в 1С (например, через ПоказатьПредупреждение()) о скором завершении неактивных сеансов.
Частые ошибки и их решения
При сбросе сеансов администраторы сталкиваются с типичными проблемами. Разберём самые распространённые:
| Ошибка | Причина | Решение |
|---|---|---|
Ошибка блокировки при записи документа |
Сеанс не завершился корректно, объект остался заблокированным | Используйте Тестирование и исправление в конфигураторе или запрос SELECT * FROM v8locks в СУБД |
Недостаточно прав для завершения сеанса |
У пользователя нет роли Администратор в 1С или прав на rac |
Запустите консоль от имени администратора или запросите права у системного администратора |
| Сеанс появляется снова после сброса | Автоматическое подключение пользователя (например, через Планировщик) |
Проверьте регламентные задачи в 1С и настройки автозапуска на клиентской машине |
Кластер не отвечает при выполнении rac |
Служба ragent остановилась или «зависла» |
Перезапустите службу Агент сервера 1С или весь сервер |
Если после сброса сеанса пользователь не может подключиться к базе, проверьте лицензии и сетевые настройки — часто проблема кроется не в сеансе, а в обрыве соединения.
FAQ: Частые вопросы по сбросу сеансов
Можно ли сбросить сеанс пользователя, не прерывая его работу?
Нет, принудительное завершение сеанса всегда приводит к обрыву соединения. Однако вы можете:
- 📢 Предупредить пользователя заранее (например, через сообщение в 1С:
ПоказатьПредупреждение("Ваш сеанс будет завершён через 5 минут!");). - 🔄 Использовать «мягкий» сброс: дождаться, пока пользователь сам сохранит данные, а затем завершить сеанс.
Почему после сброса сеанса документ остаётся заблокированным?
Это означает, что транзакция не была корректно завершена, и блокировка осталась в базе. Решения:
- 🔧 Выполните
Тестирование и исправлениебазы в конфигураторе (менюАдминистрирование → Тестирование и исправление). - 🗝️ Для MS SQL выполните запрос:
KILL {SPID}(найдите SPID черезsp_who2). - 🔄 Перезапустите службу
SQL Server Agent(если блокировка на уровне СУБД).
Как узнать, какой сеанс принадлежит конкретному пользователю?
В Мониторе сервера 1С или через rac session list отображаются:
- 🆔 ID сеанса (уникальный номер).
- 👤 Имя пользователя (логин в 1С).
- 🖥️ Компьютер (имя машины, с которой подключились).
- ⏳ Время начала (помогает идентифицировать «зависшие» сеансы).
Если данных недостаточно, используйте запрос к СУБД (см. раздел 3).
Можно ли сбросить все сеансы сразу?
Да, но это крайняя мера. Способы:
- 🔄 Перезапуск службы
Агент сервера 1С(сбросит все сеансы на этом сервере). - 💻 Команды для MS SQL:
DECLARE @sql NVARCHAR(MAX) = '';SELECT @sql = @sql + 'KILL ' + CAST(session_id AS VARCHAR(10)) + ';'
FROM sys.dm_exec_sessions
WHERE program_name LIKE '%1cv8%';
EXEC sp_executesql @sql;
⚠️ Предупреждение: это приведёт к потере несохранённых данных всех пользователей!
Что делать, если после сброса сеанса 1С перестала открываться?
Возможные причины и решения:
- 🔌 Обрыв соединения с сервером: проверьте сеть и доступность портов (обычно
1540–1541для 1С). - 🔑 Проблемы с лицензией: перезапустите службу
Hasp License Manager. - 🗃️ Повреждение базы: выполните
chdbfl.exeдля файловой базы илиТестирование и исправлениедля SQL. - 🖥️ Падение службы: перезапустите
ragentили весь сервер.