Работа с сеансами пользователей в 1С — одна из самых частых административных задач. Незакрытые соединения блокируют обновления конфигурации, тормозят резервное копирование и могут приводить к конфликтам при работе с базой. Особенно актуальна проблема в многопользовательских системах, где сотрудники забывают корректно завершать работу или теряют связь с сервером из-за сетевых сбоев.
В этой статье разберем все возможные способы принудительного отключения сеансов — от стандартных инструментов конфигуратора 1С до командной строки и серверных утилит. Вы узнаете, как безопасно завершить работу пользователей без потери данных, какие ошибки могут возникнуть при неправильных действиях, и как автоматизировать процесс для крупных баз. Особое внимание уделим скрытым сеансам системных пользователей (например, USR1CV8), которые часто остаются незамеченными, но блокируют критические операции.
Почему сеансы пользователей нужно отключать правильно
Неконтролируемое завершение сеансов может привести к серьезным последствиям:
- 🔄 Потеря несохраненных данных — если пользователь ввел документ, но не провел его, принудительное отключение аннулирует изменения.
- 🛑 Блокировка объектов базы — некоторые транзакции могут остаться "подвешенными", что потребует перезапуска сервера 1С.
- 🔧 Повреждение индексов — резкое отключение в момент записи в базу способно испортить структуру данных (актуально для файлового варианта 1С).
- ⚠️ Нарушение лицензионных ограничений — при использовании аппаратных ключей защиты (HASP) некорректное отключение может сбить счетчик лицензий.
По статистике 1С:Технологии автоматизации, до 30% обращений в поддержку связаны с последствиями неправильного завершения сеансов. Чаще всего проблемы возникают в:
- 🏢 Крупных распределенных базах (более 50 пользователей)
- 🖥️ Файловых вариантах 1С при работе по сети
- 🌐 Облачных решениях с нестабильным интернет-соединением
⚠️ Внимание: Если в вашей базе используются регламентные задания (например, автоматическое проведение документов), их сеансы могут маскироваться под пользовательские. Прерывание таких процессов приведет к невыполнению критически важных операций.
Способ 1: Отключение сеансов через конфигуратор 1С
Самый простой и безопасный метод — использование встроенных инструментов конфигуратора. Он подходит для большинства версий платформы (8.3.10 и выше) и не требует прав администратора сервера.
Инструкция по шагам:
- Закройте все клиентские приложения 1С.
- Запустите конфигуратор от имени администратора (правый клик по ярлыку →
Запуск от имени администратора). - В меню выберите
Администрирование → Активные пользователи. - В открывшемся окне вы увидите таблицу со всеми подключенными сеансами. Столбцы содержат:
- 👤 Пользователь — имя учетной записи
- 🖥️ Компьютер — имя рабочей станции
- ⏱️ Время начала — когда был установлен сеанс
- 📄 Действие — текущая операция (например, "Просмотр документа")
- Выделите нужные строки (можно использовать
Ctrl+Aдля выбора всех) и нажмите кнопкуЗавершить сеанс. - 🔒 У вас недостаточно прав (требуется роль "Администратор" или "Полные права").
- 🔄 Сеанс находится в состоянии
Блокировка(например, при длительной транзакции). - 🖥️ Вы работаете с файловой базой в монопольном режиме.
Если кнопка Завершить сеанс неактивна:
Закрыть все клиентские приложения 1С|Запустить конфигуратор от имени администратора|Проверить список активных пользователей|Выделить только проблемные сеансы (не прерывать системные)|Подтвердить завершение с указанием причины (если требуется)
-->
Для платформы 1С:Предприятие 8.3.20+ появилась возможность принудительного завершения даже заблокированных сеансов. Для этого:
- Зажмите клавишу
Shift. - Кнопка
Завершить сеанссменится наПринудительно завершить. - Подтвердите действие — это разблокирует транзакцию, но может привести к потере данных в текущей операции пользователя.
⚠️ Внимание: В клиент-серверном варианте 1С при принудительном завершении сеанса через конфигуратор не гарантируется освобождение лицензий HASP. Для полного сброса может потребоваться перезапуск службы 1C:Enterprise 8 Server Agent.
Способ 2: Использование утилиты ras.exe (для клиент-серверного варианта)
Если конфигуратор недоступен или сеансы "зависших" пользователей не отображаются в стандартном интерфейсе, на помощь приходит консольная утилита ras.exe. Она входит в комплект поставки 1С:Предприятия и позволяет управлять кластером серверов.
Утилита расположена по пути:
C:\Program Files\1cv8\<версия_платформы>\bin\ras.exe
Где <версия_платформы> — это папка с номером вашей версии (например, 8.3.20.1549).
Основные команды для работы с сеансами:
| Команда | Описание | Пример |
|---|---|---|
ras cluster |
Показать список кластеров | ras cluster --cluster=ИмяКластера list |
ras session |
Управление сеансами | ras session --cluster=ИмяКластера list |
ras session terminate |
Принудительное завершение | ras session --cluster=ИмяКластера terminate --id=123 |
ras session block |
Блокировка новых подключений | ras session --cluster=ИмяКластера block --user=Иванов |
Пошаговая инструкция по отключению сеанса:
- Откройте командную строку от имени администратора (
Win + X → Командная строка (администратор)). - Перейдите в папку с утилитой:
cd "C:\Program Files\1cv8\8.3.20.1549\bin" - Получите список активных сеансов:
ras session --cluster=ВашКластер listГде
ВашКластер— имя вашего кластера серверов 1С (можно узнать в конфигураторе или черезras cluster list). - Найдите в выводе
IDпроблемного сеанса (столбецSID). - Завершите сеанс по ID:
ras session --cluster=ВашКластер terminate --id=123
Если нужно отключить все сеансы конкретного пользователя, используйте фильтрацию:
ras session --cluster=ВашКластер list | find "Иванов"
ras session --cluster=ВашКластер terminate --user=Иванов
Перед массовым отключением сеансов через ras.exe сделайте резервную копию базы. Утилита не проверяет наличие незавершенных транзакций и может прервать критические операции.
Для автоматизации процесса можно создать .bat-файл с набором команд. Например, скрипт для отключения всех сеансов кроме администратора:
@echo off
cd "C:\Program Files\1cv8\8.3.20.1549\bin"
for /f "tokens=1" %%i in ('ras session --cluster=MainCluster list ^| find /v "Администратор" ^| find "SID"') do (
ras session --cluster=MainCluster terminate --id=%%i
)
pause
⚠️ Внимание: В Linux-версиях сервера 1С утилитаrasимеет другой синтаксис. Например, для завершения сеанса используется команда:rac session terminate --cluster=ИмяКластера --id=123Путь к утилите:
/opt/1C/v8.3/<версия>/bin/rac.
Способ 3: Отключение через "Диспетчер задач" Windows (для файлового варианта)
Если вы работаете с файловой базой 1С (не клиент-сервер), сеансы пользователей представляют собой процессы 1cv8.exe или 1cv8c.exe (для толстого клиента). Их можно завершить через стандартный Диспетчер задач Windows, но этот метод требует осторожности.
Алгоритм действий:
- Откройте Диспетчер задач (
Ctrl + Shift + Esc). - Перейдите на вкладку
Подробности. - В столбце
Имянайдите процессы:1cv8.exe— толстый клиент1cv8c.exe— тонкий клиент или веб-клиентrmngr.exe— менеджер соединений (для файлового варианта)
- Отсортируйте процессы по столбцу
Имя пользователя, чтобы идентифицировать сеансы конкретных сотрудников. - Выделите нужный процесс и нажмите
Снять задачу. - ✅ Быстро и не требует специальных знаний.
- ❌ Не гарантирует корректное завершение транзакций — возможна потеря данных.
- ❌ Не подходит для клиент-серверного варианта (процессы
ragent.exeиrmngr.exeуправлять так нельзя). - ❌ Может привести к повреждению файловой базы, если процесс был в момент записи.
Особенности метода:
Для файловой базы 1С 8.3 существует более безопасный аналог — утилита chdbfl.exe, которая проверяет целостность базы после аварийного завершения. Запустите ее с ключом:
chdbfl.exe ПутьКБазе /Execute
Что делать, если после снятия задачи база не открывается?
Если после принудительного завершения процесса 1cv8.exe база перестала открываться, выполните следующие действия:
1. Сделайте резервную копию файла 1Cv8.1CD.
2. Запустите тестирование и исправление через конфигуратор: Администрирование → Тестирование и исправление.
3. Отметьте галочки: "Проверять логическую целостность", "Проверять ссылочную целостность", "Реиндексировать таблицы".
4. Если ошибки не исправлены, воспользуйтесь утилитой chdbfl.exe с ключом /IBFix.
Способ 4: Управление сеансами через SQL-запросы (для опытных администраторов)
Для клиент-серверных баз 1С на Microsoft SQL Server или PostgreSQL можно использовать прямые запросы к системным таблицам. Этот метод требует знания SQL и прав на администрирование СУБД, но позволяет гибко управлять сеансами.
Для MS SQL Server:
- Подключитесь к серверу через SQL Server Management Studio.
- Выполните запрос для просмотра активных сеансов 1С:
SELECTs.session_id,
s.login_name,
s.host_name,
s.program_name,
s.login_time,
s.last_request_start_time,
t.text AS [Query]
FROM sys.dm_exec_sessions s
LEFT JOIN sys.dm_exec_requests r ON s.session_id = r.session_id
CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) t
WHERE s.program_name LIKE '%1cv8%'
- Для завершения сеанса используйте:
KILL <session_id>Где
<session_id>— идентификатор сеанса из первого запроса.
Для PostgreSQL:
- Подключитесь через
psqlили pgAdmin. - Получите список активных соединений:
SELECT pid, usename, application_name, client_addr, query_start, state, queryFROM pg_stat_activity
WHERE application_name LIKE '%1C%';
- Завершите сеанс по
pid:SELECT pg_terminate_backend(<pid>);
Преимущества метода:
- 🎯 Точное управление — можно отключать сеансы по IP, имени пользователя или времени бездействия.
- 📊 Возможность анализа длительных транзакций (столбец
last_request_start_time). - 🔄 Автоматизация через SQL Agent (например, ночное отключение "зависших" сеансов).
Пример скрипта для автоматического отключения сеансов, простаивающих более 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%'
AND DATEDIFF(HOUR, last_request_start_time, GETDATE()) > 1
AND status = 'sleeping';
EXEC sp_executesql @sql;
⚠️ Внимание: Не завершайте сеансы со статусомrunningилиactive— это может привести к повреждению данных. Также избегайте отключения сеансов системных пользователей (например,USR1CV8), если не уверены в их назначении.
Способ 5: Перезапуск служб сервера 1С (крайняя мера)
Если сеансы не удается завершить стандартными методами (например, из-за зависания кластера), остается перезапуск служб 1С. Этот способ гарантированно сбросит все соединения, но требует планирования, так как приводит к простою системы.
Инструкция для Windows:
- Откройте Службы (
Win + R → services.msc). - Найдите службы с именами:
1C:Enterprise 8 Server Agent(основная служба кластера)1C:Enterprise 8 Working Process(рабочие процессы)
- Остановите их поочередно (правый клик →
Остановить). - Подождите 1-2 минуты (для завершения фоновых процессов).
- Запустите службы в обратном порядке.
- ✅ Гарантированное отключение всех сеансов, включая системные.
- ❌ Простой системы на 2-5 минут (зависит от размера базы).
- ❌ Возможная потеря несохраненных данных пользователей.
- ❌ Требует прав администратора сервера.
- 📁 Права доступа к папке кластера (например,
C:\Program Files\1cv8\srvinfo). - 📄 Логи ошибок в
C:\Program Files\1cv8\<версия>\logs. - 🔌 Порты, используемые 1С (по умолчанию
1540-1541,1560-1591). - 👻 Системные пользователи (например,
USR1CV8для регламентных задач). - 🔄 Зависшие транзакции после аварийного завершения 1С.
- 🌐 Веб-сеансы (если используется 1С:Предприятие для веб-браузеров).
Для Linux используйте команды:
sudo systemctl stop srv1cv83 # Остановка кластера
sudo systemctl start srv1cv83 # Запуск кластера
Последствия перезапуска:
Чтобы минимизировать риски, выполните перед перезапуском:
Уведомить пользователей о плановом простое|Проверить, что нет критичных фоновых задач (регламентные операции)|Сделать резервную копию базы|Запустить тестирование базы после перезапуска|Проверьте логи сервера на ошибки (C:\Program Files\1cv8\srvinfo\reg_<имя_кластера>\)
-->
Если после перезапуска службы не запускаются, проверьте:
Типичные ошибки и как их избежать
Даже опытные администраторы сталкиваются с проблемами при работе с сеансами. Рассмотрим самые распространенные ошибки и способы их предотвращения.
| Ошибка | Причина | Решение |
|---|---|---|
| "Сеанс не завершается" в конфигураторе | Сеанс заблокирован длительной транзакцией или системным процессом | Используйте ras.exe с ключом --force или дождитесь завершения операции |
| После отключения база не открывается | Повреждение файловой базы из-за прерванной записи | Запустите chdbfl.exe или восстановите базу из резервной копии |
| Сеансы появляются снова через несколько минут | Автоматическое подключение через регламентные задания или фоновые процессы | Проверьте настройки кластера и отключите автозапуск задач |
| Ошибка "Недостаточно лицензий" после отключения | Лицензии HASP не освободились корректно | Перезапустите службу Hasp License Manager или сервер лицензий |
Одна из самых коварных ошибок — "невидимые" сеансы, которые не отображаются в конфигураторе, но блокируют базу. Чаще всего это:
Для их обнаружения:
- Используйте
ras.exeс ключом--all:ras session --cluster=ИмяКластера list --all - Проверьте системные таблицы SQL (запрос приведен в Способе 4).
- Изучите логи сервера (
C:\Program Files\1cv8\<версия>\logs\srvas.log).
Если сеанс принадлежит регламентному заданию, его нельзя завершать принудительно. Вместо этого:
- Откройте конфигуратор.
- Перейдите в
Администрирование → Регламентные задания. - Найдите задание и нажмите
Остановить.
Перед массовым отключением сеансов всегда проверяйте, нет ли среди них системных процессов (например, обновления конфигурации или резервного копирования). Их прерывание может привести к неработоспособности базы.
Автоматизация отключения сеансов
Ручное управление сеансами отнимает время, особенно в крупных компаниях. Рассмотрим способы автоматизации:
1. Скрипты на PowerShell
Пример скрипта для отключения сеансов старше 24 часов (для клиент-серверного варианта):
$clusterName = "MainCluster"
$cutoffTime = (Get-Date).AddHours(-24)
$rasPath = "C:\Program Files\1cv8\8.3.20.1549\bin\ras.exe"
$sessions = & $rasPath session --cluster=$clusterName list --format=json | ConvertFrom-Json
foreach ($session in $sessions) {
$sessionTime = [DateTime]::Parse($session.StartTime)
if ($sessionTime -lt $cutoffTime -and $session.UserName -ne "Администратор") {
& $rasPath session --cluster=$clusterName terminate --id=$session.ID
Write-Host "Завершен сеанс пользователя $($session.UserName) (ID: $($session.ID))"
}
}
2. Задания в SQL Agent
Для MS SQL Server можно создать задачу, которая будет запускаться по расписанию (например, ночью) и отключать "зависшие" сеансы:
-- Создание задачи
USE msdb;
GO
EXEC dbo.sp_add_job
@job_name = N'Cleanup 1C Sessions' ;
GO
-- Добавление шага (T-SQL скрипт из Способа 4)
EXEC sp_add_jobstep
@job_name = N'Cleanup 1C Sessions',
@step_name = N'Terminate old sessions',
@subsystem = N'TSQL',
@command = N'DECLARE @sql NVARCHAR(MAX) = '''';
SELECT @sql = @sql +
''KILL '' + CAST(session_id AS VARCHAR(10)) + '';''
FROM sys.dm_exec_sessions
WHERE program_name LIKE ''%1cv8%''
AND DATEDIFF(HOUR, last_request_start_time, GETDATE()) > 24
AND status = ''sleeping'';
EXEC sp_executesql @sql;',
@database_name = N'master' ;
GO
-- Настройка расписания (ежедневно в 3:00)
EXEC dbo.sp_add_schedule
@schedule_name = N'NightlyCleanup',
@freq_type = 4, -- Ежедневно
@freq_interval = 1,
@active_start_time = 030000 ;
GO
EXEC sp_attach_schedule
@job_name = N'Cleanup 1C Sessions',
@schedule_name = N'NightlyCleanup' ;
GO
EXEC dbo.sp_add_jobserver
@job_name = N'Cleanup 1C Sessions' ;
GO
3. Использование 1С:Диспетчер серверов
В комплекте с 1С:Предприятием поставляется утилита 1cv8adm.exe, которая позволяет настраивать автоматическое отключение неактивных сеансов:
- Запустите
1cv8adm.exe(расположена в папкеbinплатформы). - Выберите кластер и перейдите в
Настройки → Сеансы. - Установите параметры:
- Таймаут неактивности (например, 30 минут).
- Максимальное время сеанса (например, 8 часов).
- Сохраните настройки и перезапустите кластер.
- 🕒 Простаивают дольше заданного таймаута.
- ⏳ Превышают максимальное время работы.
Эти параметры будут автоматически завершать сеансы, которые:
⚠️ Внимание: Настройки таймаутов в 1cv8adm.exe применяются ко всем базам данных в кластере. Если у вас есть базы с длительными операциями (например, обработка больших отчетов), это может привести к нежелательным разрывам соединений.
FAQ: Частые вопросы по отключению сеансов в 1С
Можно ли отключить сеанс пользователя, не прерывая его работу?
Нет, любое принудительное завершение сеанса приводит к разрыву соединения. Однако можно уведомить пользователя перед отключением. Для этого:
- В конфигураторе откройте
Администрирование → Активные пользователи. - Выделите пользователя и нажмите
Сообщение. - Введите текст уведомления (например, "Через 5 минут будет обновление, сохраните данные").
Также можно использовать регламентные задания для отправки уведомлений заранее.
Почему после отключения сеанса пользователь сразу подключается снова?
Это происходит из-за:
- 🔄 Автоматического переподключения в настройках клиента 1С (параметр
Автосоединение). - 📅 Регламентных заданий, запущенных от имени пользователя.
- 🌐 Веб-расширений