Работа с многопользовательскими базами 1С:Предприятие рано или поздно сталкивает администраторов с необходимостью принудительно завершить сеанс пользователя. Это может потребоваться при зависании клиентского приложения, блокировке объектов, обновлении конфигурации или плановом техническом обслуживании. Однако не все знают, что неправильное завершение сеанса чревато потерей несохранённых данных, повреждением транзакций или даже падением сервера 1С.
В этой статье мы разберём все актуальные способы вывода пользователей — от стандартных инструментов конфигуратора до скриптов на языке 1С и внешних утилит. Особое внимание уделим нюансам работы с файловыми и клиент-серверными базами, а также типичным ошибкам, которые допускают администраторы при принудительном разрыве соединений. Если вы ищете универсальное решение для 1С 8.3 (включая последние релизы 2026 года) — вы по адресу.
1. Стандартные методы завершения сеанса через конфигуратор
Самый очевидный и безопасный способ — использование встроенных инструментов конфигуратора. Он подходит для большинства случаев, когда пользователь не отвечает, но его сеанс виден в списке активных соединений.
Чтобы вывести пользователя через конфигуратор:
- Откройте 1С:Предприятие в режиме конфигуратора (запуск с ключом
/Configили выбор пункта при старте). - Перейдите в меню
Администрирование → Активные пользователи. - В списке найдите нужного пользователя (можно отсортировать по времени бездействия или имени).
- Выделите строку и нажмите кнопку
Завершить работуилиОтключить(в зависимости от версии платформы).
⚠️ Внимание: Если пользователь в данный момент выполняет запись документа или транзакцию, принудительное завершение может привести к неполным данным в базе. В клиент-серверном варианте перед отключением проверьте статус транзакции в журнале регистрации.
Нет активных транзакций в журнале регистрации|
Пользователь не блокирует критические объекты (справочники, документы)|
Сеанс неактивен более 10 минут|
Сделан бэкап базы (для файлового варианта)
-->
В файловом варианте 1С после отключения пользователя может потребоваться перезапуск сервера 1С:Предприятия, если сеанс был заблокирован на уровне SMB-протокола (typical для Windows-серверов). В клиент-серверном варианте (например, PostgreSQL или MS SQL) достаточно просто завершить соединение.
2. Использование языка запросов 1С для управления сеансами
Для автоматизации или массового отключения пользователей можно использовать встроенный язык 1С. Этот метод полезен, если нужно вывести нескольких пользователей по определённому критерию (например, всех кроме администраторов).
Пример скрипта для завершения сеансов неактивных пользователей (более 30 минут бездействия):
Процедура ЗавершитьНеактивныеСеансы()
Сеансы = ПолучаемСписокСеансов();
Для Каждого Сеанс Из Сеансы Цикл
Если Сеанс.ВремяПоследнегоДействия < ТекущаяДата() - 30*60 Тогда
Попытка
ЗавершитьСеанс(Сеанс.Идентификатор);
Сообщить("Сеанс " + Сеанс.Пользователь + " завершён");
Исключение
Сообщить("Ошибка при завершении сеанса: " + ОписаниеОшибки());
КонецПопытки;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Для выполнения этого кода:
- Откройте конфигуратор в режиме
1С:Enterprise. - Перейдите в
Файл → Новый → Внешняя обработка. - Вставьте код в модуль обработки и выполните его (кнопка
ВыполнитьилиF5).
⚠️ Внимание: В клиент-серверных базах этот метод работает только при наличии прав "Администрирование сервера". В файловом варианте скрипт выполнится, но может не корректно завершить сеансы из-за блокировок на уровне ОС.
Что делать, если скрипт не завершает сеансы?
Если скрипт выполняется без ошибок, но пользователи остаются в списке активных, проверьте:
1. Права доступа — у учётной записи должно быть разрешение на администрирование.
2. Тип базы — в файловом варианте иногда требуется перезагрузка сервера 1С или даже компьютера.
3. Блокировки на уровне СУБД — в MS SQL или PostgreSQL может потребоваться ручное завершение сессии через pg_terminate_backend() или KILL SESSION.
3. Управление сеансами через журнал регистрации
Журнал регистрации 1С — это не только инструмент аудита, но и способ контроля активных соединений. Через него можно увидеть, какие пользователи выполняют длительные операции, и при необходимости завершить их сеансы.
Как использовать журнал регистрации для вывода пользователей:
- Откройте конфигуратор и перейдите в
Администрирование → Журнал регистрации. - Установите фильтр по дате/времени и имени пользователя.
- Проверьте последние действия пользователя — если видите длительную транзакцию (например,
Запись документадлительностью 20+ минут), лучше дождаться её завершения. - Если транзакция зависла, завершите сеанс через контекстное меню (правая кнопка мыши на строке журнала →
Завершить сеанс).
В клиент-серверных базах журнал регистрации может показывать не только пользовательские сеансы, но и фоновые задания (например, регламентные операции). Их завершение требует осторожности — прерывание фонового задания может привести к неконсистентности данных.
Через конфигуратор (Активные пользователи)|
Скриптом на языке 1С|
Через журнал регистрации|
Внешними утилитами (ras, osql и т.д.)|Не знаю, никогда не выводил
-->
| Метод завершения сеанса | Файловый вариант | Клиент-сервер (MS SQL) | Клиент-сервер (PostgreSQL) | Риски |
|---|---|---|---|---|
| Конфигуратор → Активные пользователи | Да | Да | Да | Минимальные (если нет активных транзакций) |
| Скрипт на языке 1С | Частично | Да | Да | Средние (может не сработать при блокировках ОС) |
| Журнал регистрации → Завершить сеанс | Да | Да | Да | Низкие (видно состояние транзакций) |
| Внешние утилиты (ras, osql) | Нет | Да | Да | Высокие (риск повреждения данных при неправильном использовании) |
| Перезагрузка сервера 1С | Да | Да | Да | Критические (потеря несохранённых данных всех пользователей) |
4. Принудительное завершение сеансов на уровне СУБД
Если стандартные методы 1С не сработали (например, сеанс завис на уровне базы данных), можно завершить соединение непосредственно в MS SQL Server или PostgreSQL. Этот способ требует знания SQL и прав доступа к СУБД.
Для MS SQL Server:
-- Посмотреть активные сеансы 1С
SELECT
session_id,
login_name,
host_name,
program_name,
login_time,
last_request_start_time,
status
FROM sys.dm_exec_sessions
WHERE program_name LIKE '%1C%'
-- Завершить сеанс по ID
KILL 55; -- вместо 55 укажите нужный session_id
Для PostgreSQL:
-- Посмотреть активные соединения
SELECT pid, usename, application_name, client_addr, state, query_start
FROM pg_stat_activity
WHERE application_name LIKE '%1C%';
-- Завершить соединение по PID
SELECT pg_terminate_backend(1234); -- вместо 1234 укажите PID
⚠️ Внимание: Принудительное завершение на уровне СУБД может привести к незафиксированным транзакциям и повреждению данных. Всегда проверяйте состояние транзакций перед выполнением KILL или pg_terminate_backend:
-- Для MS SQL: проверка открытых транзакций
DBCC OPENTRAN;
Если транзакция висит в состоянии rollback, дождитесь её завершения или используйте KILL WITH STATUSONLY для отслеживания прогресса отката.
Перед завершением сеанса на уровне СУБД сделайте дамп транзакционного журнала (для MS SQL) или резервную копию базы. Это поможет восстановить данные в случае сбоя.
5. Внешние утилиты для управления сеансами (ras, osql, psql)
Для опытных администраторов существуют внешние инструменты, позволяющие управлять сеансами 1С без открытия конфигуратора. Эти методы полезны для автоматизации или удалённого управления.
Способы через командную строку:
- 🔹
ras.exe— утилита для управления кластером серверов 1С. Пример команды для завершения сеанса:ras session --cluster=SRV1C\cluster1 terminate --session-id=123 - 🔹
osql(для MS SQL) илиpsql(для PostgreSQL) — если нужно завершить сеанс на уровне СУБД (см. предыдущий раздел). - 🔹
1cv8с ключом/Execute— для выполнения скриптов 1С из командной строки:1cv8.exe DESIGNER /S "File=C:\bases\trade" /N "Администратор" /P "password" /Execute "ЗавершитьСеансы.epf"
Для работы с ras.exe требуется:
- Установить 1С:Предприятие на компьютере с правами администратора кластера.
- Подключиться к кластеру (например,
ras cluster --connect=SRV1C\cluster1). - Получить список сеансов (
ras session list) и завершить нужный.
⚠️ Внимание: Утилита ras.exe работает только с клиент-серверными базами и требует прав на администрирование кластера. В файловом варианте она бесполезна.
Внешние утилиты удобны для автоматизации, но требуют глубокого понимания архитектуры 1С. Начинающим администраторам лучше использовать стандартные методы через конфигуратор.
6. Типичные ошибки и как их избежать
Даже опытные администраторы иногда допускают ошибки при завершении сеансов, что приводит к сбоям в работе базы. Разберём самые распространённые:
- 🚨 Завершение сеанса во время транзакции.
Если пользователь в данный момент записывает документ или выполняет проводку, принудительное отключение может оставить данные в неконсистентном состоянии. Всегда проверяйте журнал регистрации на наличие активных операций.
- 🚨 Игнорирование блокировок на уровне СУБД.
В клиент-серверных базах сеанс может быть заблокирован не только в 1С, но и на уровне MS SQL или PostgreSQL. Используйте
sp_who2(для SQL) илиpg_locks(для PostgreSQL), чтобы увидеть все блокировки. - 🚨 Массовое отключение без фильтрации.
Скрипты, которые завершают все сеансы без исключений, могут вывести и фоновые задания (например, регламентные операции обмена данными). Это чревато остановкой критически важных процессов.
- 🚨 Отсутствие резервной копии перед принудительным завершением.
В файловом варианте 1С всегда делайте бэкап перед массовым отключением пользователей. В клиент-серверном — как минимум проверьте, что последняя резервная копия актуальна.
Ещё одна распространённая ошибка — попытка завершить сеанс системного пользователя (например, USR1CV8 в PostgreSQL). Это может привести к падению сервера 1С. Всегда исключайте служебные учётные записи из скриптов массового отключения.
Как восстановить данные после некорректного завершения сеанса?
Если после принудительного отключения пользователя обнаружены повреждённые данные:
1. Для файлового варианта — восстановите базу из последнего бэкапа и выполните Тестирование и исправление через конфигуратор.
2. Для клиент-серверного варианта — проверьте целостность транзакций через DBCC CHECKDB (для MS SQL) или VACUUM FULL (для PostgreSQL).
3. Если повреждены конкретные документы, попробуйте восстановить их через Журнал документов или Архив 1С (если ведётся).
7. Автоматизация вывода пользователей: регламентные задания и скрипты
Если в вашей компании есть потребность регулярно завершать неактивные сеансы (например, ночью для обслуживания базы), можно настроить автоматизацию. Для этого подходят:
- 📅 Регламентные задания 1С.
Создайте обработку, которая будет проверять время бездействия пользователей и завершать сеансы старше заданного лимита (например, 1 час). Запускайте её по расписанию через
Администрирование → Регламентные задания. - 🖥️ Планировщик задач Windows (Task Scheduler).
Настройте задачу, которая будет запускать скрипт на языке 1С или
ras.exeв нужное время. Пример команды дляTask Scheduler:"C:\Program Files\1cv8\8.3.x.x\bin\1cv8.exe" DESIGNER /S "SRV1C\base" /N "Admin" /P "pass" /Execute "C:\scripts\КонецРабочегоДня.epf" - 🤖 Внешние системы мониторинга (Zabbix, Nagios).
Можно настроить триггеры, которые будут отслеживать количество активных сеансов и автоматически завершать их при превышении порога (например, более 50 одновременно).
Пример скрипта для регламентного задания (завершает сеансы неактивных пользователей в нерабочее время):
Процедура ЗавершитьНочныеСеансы()
ТекущееВремя = Время(ТекущаяДата());
Если ТекущееВремя > Время(22,0,0) И ТекущееВремя < Время(6,0,0) Тогда
Сеансы = ПолучаемСписокСеансов();
Для Каждого Сеанс Из Сеансы Цикл
Если Сеанс.Пользователь <> "Администратор" И Сеанс.ВремяПоследнегоДействия < ТекущаяДата() - 3600 Тогда
ЗавершитьСеанс(Сеанс.Идентификатор);
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
⚠️ Внимание: Автоматические скрипты должны учитывать рабочие часы компании. Например, если у вас круглосуточная смена, завершение сеансов ночью может прервать работу пользователей.
8. Особенности работы с разными версиями 1С
Методы завершения сеансов могут отличаться в зависимости от версии платформы 1С:Предприятие и типа базы данных. Рассмотрим ключевые нюансы:
| Версия платформы | Тип базы | Особенности завершения сеансов | Рекомендуемый метод |
|---|---|---|---|
| 8.2 | Файловый | Нет встроенного механизма завершения сеансов. Требуется перезагрузка сервера или компьютера. | Перезапуск ragent.exe или ПК |
| 8.3 (до 8.3.10) | Файловый | Появилась возможность завершать сеансы через конфигуратор, но иногда требуется перезагрузка. | Конфигуратор → Активные пользователи |
| 8.3.10 и выше | Файловый | Стабильная работа механизма завершения сеансов. Поддерживаются скрипты на языке 1С. | Конфигуратор или скрипт |
| 8.3 (любая) | Клиент-сервер (MS SQL) | Поддерживаются все методы, включая ras.exe и SQL-команды. Возможны блокировки на уровне СУБД. |
ras.exe или журнал регистрации |
| 8.3.14+ | Клиент-сервер (PostgreSQL) | Полная поддержка ras.exe. Для PostgreSQL требуется отдельное завершение сеансов через pg_terminate_backend. |
Комбинация ras + psql |
В версиях 1С 8.2 и ранних 8.3 (до 8.3.8) при работе с файловыми базами часто возникала проблема "призрачных" сеансов — когда пользователь в списке активных, но его уже нет в системе. В таких случаях помогала только перезагрузка сервера 1С или компьютера.
В последних версиях (8.3.20+) появилась улучшенная диагностика сеансов, включая информацию о блокировках и состоянии транзакций. Это упрощает поиск "зависших" пользователей.
Для стабильной работы всегда обновляйте платформу 1С до последней версии. В новых релизах исправлены многие ошибки, связанные с управлением сеансами.
FAQ: Частые вопросы о завершении сеансов в 1С
Можно ли завершить сеанс пользователя, не прерывая его работу?
Нет, принудительное завершение сеанса всегда разрывает соединение. Однако можно уведомить пользователя перед отключением. Для этого используйте метод ПослатьСообщениеПользователю() в скрипте:
ПослатьСообщениеПользователю(Сеанс.Идентификатор, "Ваш сеанс будет завершён через 5 минут. Сохраните данные!");
Далее добавьте задержку и только потом завершайте сеанс.
Почему после завершения сеанса пользователь снова появляется в списке активных?
Это типичная ситуация для файловых баз, когда:
- Пользователь сразу переподключается (например, через сохранённый пароль в конфигураторе).
- Сеанс не был корректно завершён на уровне ОС (завис процесс
1cv8.exe). - Версия платформы старше 8.3.10 и не поддерживает корректное завершение сеансов.
Решение: обновите платформу, проверьте процессы в Диспетчере задач или перезагрузите сервер.
Как завершить сеанс, если конфигуратор не открывается из-за блокировки?
Если база заблокирована на уровне файловой системы (typical для файлового варианта), попробуйте:
- Закройте все процессы
1cv8.exeиragent.exeчерезДиспетчер задач. - Используйте утилиту
chklock.exeиз комплекта 1С для снятия блокировок:chklock.exe "C:\bases\trade\1Cv8.1CD" - Если не помогает — перезагрузите сервер.
Для клиент-серверных баз попробуйте завершить сеансы на уровне СУБД (см. раздел 4).
Можно ли завершить сеанс пользователя, который работает через веб-клиент или тонкий клиент?
Да, методы завершения сеансов не зависят от типа клиента (толстый, тонкий, веб или мобильный). Все сеансы отображаются в списке активных пользователей и могут быть завершены стандартными способами.
Исключение: если пользователь подключён через 1С:Fresh (облачный сервис), завершить его сеанс можно только через личный кабинет 1С или техническую поддержку.
Как узнать, какой пользователь блокирует объект в базе?
Для этого используйте:
- Журнал регистрации (фильтр по событию
Блокировка). - Запрос к системе (для клиент-серверных баз):
ВЫБРАТЬСеансы.Пользователь КАК Пользователь,
Сеансы.Хост КАК Компьютер,
Блокировки.Объект КАК БлокируемыйОбъект
ИЗ
ВТСеансы КАК Сеансы
ЛЕВОЕ СОЕДИНЕНИЕ ВТБлокировкиДанных КАК Блокировки
ПО Сеансы.ИдентификаторСеанса = Блокировки.ИдентификаторСеанса
- Внешние утилиты для СУБД (например,
sp_who2в MS SQL).