Зависшие пользователи в 1С:Предприятие — одна из самых распространённых проблем, с которой сталкиваются администраторы и бухгалтеры. Сессии остаются активными после аварийного завершения работы, потери связи с сервером или ошибок в коде, блокируя доступ к базе данных. В результате другие сотрудники не могут войти в систему, а критические операции (например, проведение документов или закрытие месяца) становятся невозможными.
В этой статье мы разберём 7 проверенных способов удаления зависших пользователей — от простых методов для рядовых пользователей до сложных администраторских команд. Вы узнаете, как определить виновника блокировки, принудительно завершить сессию через консоль или интерфейс 1С, а также как предотвратить повторное возникновение проблемы. Все инструкции актуальны для 1С:Предприятие 8.3 (включая последние релизы) и работают как для файлового, так и для клиент-серверного вариантов.
Особое внимание уделим скрытым блокировкам, которые не отображаются в стандартном списке активных пользователей, но мешают работе базы. Эти случаи часто остаются незамеченными, пока система не начинает выдавать ошибки при попытке изменения данных.
1. Как определить, что в базе есть зависшие пользователи
Прежде чем удалять сессии, нужно подтвердить их наличие. Зависшие пользователи проявляются следующими симптомами:
- 🔴 Ошибка при входе: сообщение «База данных используется другим пользователем» или «Сессия уже существует».
- 🔄 Замедление работы: база тормозит при открытии форм или проведении документов, хотя нагрузка на сервер минимальна.
- 🔒 Блокировка объектов: невозможно изменить справочник, документ или регистр, так как он «используется другим пользователем».
- ⚠️ Ложные уведомления: в списке активных пользователей (
Администрирование → Активные пользователи) отображаются сессии с датой входа несколько дней назад.
Чтобы увидеть полный список активных соединений:
- Откройте 1С:Предприятие в режиме Конфигуратор (запуск с удержанием
Shift). - Перейдите в меню
Администрирование → Активные пользователи. - Обратите внимание на столбцы «Время начала сеанса» и «Активность». Сессии старше 24 часов с нулевой активностью — явный признак зависания.
Если в списке активных пользователей нет подозрительных сессий, но база всё равно блокируется, проверьте невидимые транзакции через журнал регистрации или SQL-запрос (см. раздел 5).
В клиент-серверном варианте (1С + MS SQL/PostgreSQL) зависшие соединения можно выявить через SQL Management Studio или pgAdmin, выполнив запрос к системным таблицам базы данных. Например, для MS SQL:
SELECT
ses.session_id,
ses.login_name,
ses.host_name,
ses.program_name,
ses.last_request_start_time,
ses.status
FROM
sys.dm_exec_sessions ses
WHERE
ses.is_user_process = 1
AND ses.program_name LIKE '%1C%';
2. Удаление зависших пользователей через интерфейс 1С
Самый простой способ — использовать встроенные инструменты 1С:Предприятия. Он подходит для пользователей с правами администратора, но не требует доступа к серверу или базам данных.
Инструкция:
- Запустите 1С в режиме Конфигуратор (удерживайте
Shiftпри запуске). - Перейдите в
Администрирование → Активные пользователи. - В списке найдите зависшую сессию (ориентируйтесь на время начала сеанса и отсутствие активности).
- Выделите строку и нажмите кнопку «Завершить работу» (или
Shift+Del). - Подтвердите действие в диалоговом окне.
Открыть 1С в режиме Конфигуратор|Проверить права доступа (нужны права администратора)|Сделать резервную копию базы (рекомендуется)|Убедиться, что зависший пользователь действительно не работает
-->
Если кнопка «Завершить работу» неактивна:
- 🔹 У пользователя недостаточно прав. Попросите администратора базы выполнить действие.
- 🔹 Сессия заблокирована на уровне СУБД (требуется удаление через SQL, см. раздел 4).
- 🔹 В клиент-серверном варианте может помочь перезапуск службы 1С:Предприятия (раздел 6).
⚠️ Внимание: Принудительное завершение сессии может привести к потере несохранённых данных у пользователя. Всегда предупреждайте коллег перед удалением их сессий!
3. Использование утилиты rac для управления кластером серверов 1С
Если зависшие пользователи появляются регулярно, а интерфейс 1С не помогает, используйте утилиту rac (Remote Administration Console). Она входит в комплект поставки 1С:Предприятия и позволяет управлять кластером серверов из командной строки.
Основные команды для работы с сессиями:
| Команда | Описание | Пример |
|---|---|---|
rac session list |
Показать список активных сессий | rac session list --cluster=ИмяКластера |
rac session terminate |
Принудительно завершить сессию | rac session terminate --cluster=ИмяКластера --session-id=123 |
rac cluster list |
Показать список кластеров | rac cluster list |
rac infobase list |
Показать список информационных баз | rac infobase list --cluster=ИмяКластера |
Пошаговая инструкция:
- Откройте командную строку от имени администратора.
- Перейдите в папку с утилитой
rac(обычноC:\Program Files\1cv8\8.3.x.xxx\bin\). - Выполните команду для просмотра кластеров:
rac cluster list - Получите список сессий для нужного кластера:
rac session list --cluster=ИмяВашегоКластера - Найдите ID зависшей сессии и завершите её:
rac session terminate --cluster=ИмяВашегоКластера --session-id=123
⚠️ Внимание: Утилита rac требует прав администратора на сервере. Если вы работаете с облачной версией 1С (например, 1С:Fresh), этот метод недоступен — используйте веб-интерфейс или обратитесь в поддержку.
Через интерфейс 1С|Утилита rac|SQL-запросы|Перезапуск службы|Другой способ-->
4. Удаление зависших сессий через SQL-запросы
В клиент-серверном варианте 1С (с MS SQL или PostgreSQL) зависшие соединения могут блокировать таблицы базы данных. В этом случае их нужно удалять напрямую через СУБД.
Для Microsoft SQL Server:
- Откройте SQL Server Management Studio и подключитесь к серверу.
- Выполните запрос для поиска зависших сессий:
SELECTsession_id,
login_name,
host_name,
program_name,
login_time,
last_request_start_time,
status
FROM
sys.dm_exec_sessions
WHERE
is_user_process = 1
AND program_name LIKE '%1C%';
- Найдите подозрительные сессии (например, с
status = 'sleeping'и давним временем последнего запроса). - Завершите сессию командой:
KILL {session_id};
Для PostgreSQL:
-- Просмотр активных соединений
SELECT
pid,
usename,
application_name,
client_addr,
state,
query_start
FROM
pg_stat_activity
WHERE
application_name LIKE '%1C%';
-- Завершение сессии
SELECT pg_terminate_backend({pid});
Если после удаления сессий база всё равно блокируется, проверьте блокирующие транзакции:
-- Для MS SQL
SELECT
t1.resource_type,
t1.resource_database_id,
t1.request_mode,
t1.request_session_id,
t2.blocking_session_id
FROM
sys.dm_tran_locks t1
JOIN
sys.dm_os_waiting_tasks t2 ON t1.lock_owner_address = t2.resource_address;
Что делать, если SQL-запрос не помогает?
Если после выполнения KILL сессия не завершается, это может означать:
1. Блокировку на уровне ОС — проверьте процессы через Диспетчер задач (1cv8.exe или ragent.exe).
2. Зависший кластер 1С — перезапустите службу 1С:Предприятия (раздел 6).
3. Повреждение базы данных — выполните тестирование и исправление через Конфигуратор (Администрирование → Тестирование и исправление).
5. Поиск и удаление невидимых блокировок
Иногда сессии не отображаются в стандартном списке активных пользователей, но блокируют объекты базы. Это происходит из-за:
- 🔹 Незавершённых транзакций (например, после аварийного отключения электричества).
- 🔹 Зависших фоновых задач (регламентные операции, обмен данными).
- 🔹 Ошибок в коде, оставляющих «мусорные» блокировки.
Чтобы найти такие блокировки:
- В Конфигураторе откройте
Администрирование → Журнал регистрации. - Отфильтруйте записи по событиям «Блокировка» или «Транзакция».
- Обратите внимание на объекты, которые часто упоминаются в ошибках (например,
Документ.РеализацияТоваровУслуг).
Для удаления невидимых блокировок:
- Выполните тестирование и исправление базы (
Администрирование → Тестирование и исправление) с галочками:- 🔹 «Проверять логическую целостность»
- 🔹 «Проверять ссылочную целостность»
- 🔹 «Реиндексировать таблицы»
-- В Конфигураторе:
Администрирование → Монопольный режим → Установить
Затем попробуйте повторно завершить сессию.
⚠️ Внимание: Монопольный режим блокирует доступ всех пользователей к базе. Используйте его только в нерабочее время или после согласования с руководством.
6. Перезапуск службы 1С:Предприятия
Если ни один из методов не помог, остаётся радикальное решение — перезапуск службы 1С:Предприятия. Это гарантированно удалит все активные сессии, но также прервёт работу всех пользователей.
Инструкция для Windows:
- Откройте Диспетчер задач (
Ctrl+Shift+Esc). - Перейдите на вкладку «Службы».
- Найдите службу
1C:Enterprise 8.3 Server Agent(или аналогичную для вашей версии). - Нажмите правой кнопкой и выберите «Перезапустить».
- 🔹 Все пользователи будут отключены.
- 🔹 Возможна потеря несохранённых данных.
- 🔹 Рекомендуется предупредить сотрудников заранее.
- 🔹 Настройте тайм-ауты:
В файле
srvinfo(для клиент-серверного варианта) или в настройках базы укажите параметры:SessionTimeout = 3600 -- время простоя сессии в секундах (1 час)DeadlockTimeout = 30 -- тайм-аут для обнаружения взаимоблокировок
- 🔹 Обновляйте платформу:
В новых релизах 1С:Предприятия 8.3 улучшена обработка аварийных ситуаций. Регулярно устанавливайте обновления.
- 🔹 Используйте резервное копирование:
Автоматизируйте создание бэкапов перед массовыми операциями (закрытие месяца, обновление конфигурации).
- 🔹 Обучите пользователей:
Объясните сотрудникам, как правильно завершать работу с 1С (не закрывать программу через Диспетчер задач, не выключать компьютер без выхода).
- 📊 Встроенные отчёты (
Администрирование → Активные пользователис автообновлением). - 📊 Сторонние утилиты, такие как 1С:Администратор сервера или SQL Monitor.
- 📊 Скрипты на PowerShell/Python, которые отправляют уведомления при обнаружении долгих сессий.
Для Linux:
sudo systemctl restart srv1cv83
После перезапуска:
Перезапуск службы — крайняя мера. Используйте её только если другие методы не сработали, так как это влияет на всех пользователей системы.
7. Профилактика зависших пользователей
Чтобы минимизировать риск появления зависших сессий, следуйте этим рекомендациям:
Для мониторинга активных сессий в реальном времени можно использовать:
⚠️ Внимание: Параметры тайм-аутов в конфигурационных файлах могут отличаться в зависимости от версии 1С и типа СУБД. Перед изменением сделайте резервную копию файлов!
FAQ: Частые вопросы по зависшим пользователям в 1С
Могу ли я удалить зависшего пользователя, если у меня нет прав администратора?
Нет, для принудительного завершения сессий требуются права администратора базы. Обратитесь к IT-отделу или человеку, который отвечает за 1С в вашей компании. В крайнем случае можно попробовать перезапустить свой компьютер — иногда это помогает, если блокировка связана с вашей локальной сессией.
После удаления зависшего пользователя база стала работать медленнее. Что делать?
Это может быть связано с:
- 🔹 Повреждением индексов — выполните реиндексацию таблиц через Конфигуратор.
- 🔹 Остаточными блокировками — проверьте журнал регистрации на наличие ошибок.
- 🔹 Нехваткой ресурсов сервера — убедитесь, что после перезапуска службы 1С не возникло утечки памяти.
Если проблема сохраняется, выполните тестирование и исправление базы с галочкой «Проверять производительность».
Как удалить зависшего пользователя в облачной версии 1С (например, 1С:Fresh)?
В облачных решениях (1С:Fresh, 1С:Линк) нет прямого доступа к серверу. Варианты действий:
- Используйте веб-интерфейс администрирования (если он предусмотрен тарифом).
- Обратитесь в техническую поддержку провайдера с указанием:
- 🔹 Названия базы.
- 🔹 Времени начала блокировки.
- 🔹 Логина зависшего пользователя (если известен).
- Если блокировка критическая, попробуйте создать новую базу из резервной копии (в 1С:Fresh это можно сделать самостоятельно через личный кабинет).
Можно ли автоматизировать удаление зависших пользователей?
Да, для этого можно:
- 🔹 Написать скрипт на PowerShell, который будет проверять время простоя сессий через
racи завершать их при превышении лимита. - 🔹 Использовать регламентное задание в 1С, которое раз в час будет отправлять уведомление администратору о долгих сессиях.
- 🔹 Настроить триггеры в SQL, которые будут автоматически убивать сессии старше определённого времени (требует глубоких знаний СУБД).
Пример простого скрипта для rac:
@echo off
cd "C:\Program Files\1cv8\8.3.x.xxx\bin"
rac session list --cluster=ИмяКластера | findstr "sleeping" > sessions.txt
for /f "tokens=2" %%i in ('findstr "ID:" sessions.txt') do (
rac session terminate --cluster=ИмяКластера --session-id=%%i
)
Что делать, если после удаления зависшего пользователя база повреждена?
Следуйте этому алгоритму:
- Создайте резервную копию текущей базы (даже если она повреждена).
- Запустите тестирование и исправление в Конфигураторе с галочками:
- 🔹 «Проверять логическую целостность»
- 🔹 «Проверять ссылочную целостность»
- 🔹 «Реиндексировать таблицы»
- 🔹 «Проверять сервисные данные»
- Если ошибки остались, восстановите базу из последнего рабочего бэкапа.
- В крайнем случае обратитесь в 1С:Техническую поддержку с логами ошибок.
Если база критически важна, рассмотрите вариант временного перехода на резервную копию, пока основная база восстанавливается.