Ситуация, когда один из сотрудников зависает в базе данных, блокируя проведение документов или выполнение регламентных операций, является классической головной болью администратора 1С. Активные пользователи могут удерживать монопольные блокировки, препятствуя закрытию периода или обновлению конфигурации. В такие моменты возникает острая необходимость принудительно разорвать соединение без остановки всего сервера или перезагрузки всей инфраструктуры.
Существует несколько легитимных способов завершить сеанс, от штатных средств платформы до прямого вмешательства на уровне службы серверов. Важно понимать разницу между простым отключением клиента и полным снятием блокировок с объектов метаданных. Неправильные действия могут привести к повреждению временных таблиц или зависанию транзакций.
В этой статье мы подробно разберем алгоритмы действий для разных архитектур: файловый вариант, клиент-серверный режим и работу через консоль администрирования. Вы научитесь определять, кто именно держит базу, и безопасно «выкидывать» проблемных клиентов, минимизируя риски для целостности данных.
Идентификация проблемного сеанса
Прежде чем применять радикальные меры, необходимо точно определить, какой именно сеанс является источником проблем. Часто бывает так, что пользователь ушел на обед, оставив форму открытой, а система считает его активным. Для этого следует воспользоваться режимом Предприятие → Администрирование → Активные пользователи. Здесь отображается список всех подключений с детализацией по времени начала сеанса и имени компьютера.
Обратите внимание на колонку «Приложение». Если там указано 1С:Предприятие, это штатный клиент. Если же вы видите bgproc или rmngr, это могут быть фоновые задания или процессы кластера, которые трогать не стоит без крайней нужды. Зависший сеанс часто характеризуется аномально долгим временем бездействия при статусе «Активен».
В сложных случаях, когда интерфейс не отвечает, можно использовать внешние инструменты мониторинга. Например, утилита ras (Remote Administration Server) позволяет получить список сессий на уровне кластера серверов 1С. Это дает более глубокое понимание того, что происходит внутри процесса ragent.
⚠️ Внимание: Перед завершением сеанса убедитесь, что пользователь не проводит критически важный документ (например, закрытие месяца). Принудительный разрыв в момент записи может привести к появлению «битых» ссылок или незавершенных транзакций.
Штатное завершение через интерфейс конфигуратора
Самый безопасный и рекомендуемый метод — использование встроенного механизма платформы. Для этого вам потребуется доступ к базе в режиме Конфигуратор. Зайдите в меню Администрирование → Активные пользователи. Откроется список всех текущих подключений к данной информационной базе.
Выделите строку с проблемным пользователем. Нажмите правую кнопку мыши и выберите пункт Завершить сеанс. Система попытаться корректно закрыть соединение, освободив все захваченные блокировки. Если пользователь просто «завис» на клиенте, этот метод срабатывает в 90% случаев без последствий для данных.
Однако, если сеанс находится в состоянии глубокой блокировки или процесс клиента на рабочей станции завис намертво, штатное завершение может не пройти с первого раза. В окне подтверждения система может предупредить о том, что завершение сеанса может привести к откату транзакции. Это нормальное поведение механизма защиты целостности данных.
☑️ Проверка перед сбросом сеанса
Управление сеансами через консоль администрирования серверов
В клиент-серверном варианте работы (SQL) управление происходит на уровне кластера. Для этого используется утилита Консоль администрирования серверов 1С:Предприятия. Запустите её на сервере, где установлен компонент сервера 1С. Раскройте дерево кластера, найдите нужный информационный базис и перейдите в раздел Сеансы.
Здесь вы увидите более детальную информацию, включая идентификаторы процессов и используемые соединения с СУБД. Выделите нужный сеанс, нажмите правую кнопку мыши и выберите Завершить. Этот метод эффективнее, так как он воздействует непосредственно на процесс-работник (rphost), обслуживающий данное соединение.
Иногда процесс rphost может «залипнуть» и не реагировать на команду завершения. В таком случае можно завершить весь процесс-работник, обслуживающий данный сеанс. Это приведет к падению всех пользователей, сидящих на этом конкретном воркере, поэтому метод требует осторожности. Обычно система автоматически перезапустит упавший процесс.
radmin -s server_name:port -i infobase_id -c "terminate session session_id"
Использование утилиты командной строки radmin позволяет автоматизировать процесс или выполнить его удаленно, когда графический интерфейс недоступен. Ключ -c передает команду завершения конкретного сеанса по его ID.
Что такое rphost и зачем его трогать?
rphost (Remote Process Host) — это процесс-работник, который выполняет код 1С на сервере. Один rphost может обслуживать несколько пользователей одновременно. Его перезагрузка сбрасывает все сеансы на нем, но очищает память от утечек.
Принудительный сброс через остановку служб
Если ни один из мягких методов не помог, и база остается заблокированной, приходится прибегать к более жестким мерам. Остановка службы Агент сервера 1С:Предприятия (ragent) приведет к разрыву всех соединений со всеми базами на данном сервере. Это крайняя мера, которую следует использовать только в нерабочее время или при полном параличе системы.
Более точечный подход — остановка службы Сервер 1С:Предприятия. Это завершит все процессы rphost, но оставит агент запущенным. После остановки службы необходимо подождать 10-15 секунд до полного освобождения ресурсов и запустить службу снова. Пользователи смогут подключиться заново, а все «мертвые» сеансы исчезнут.
При работе с файловыми базами, расположенными на общем ресурсе, иногда помогает временное ограничение прав доступа к папке с базой или переименование файла блокировки 1Cv8.1CD.1CL (хотя современные версии платформы создают его динамически). Но самый надежный способ для файлового варианта — попросить всех пользователей выйти и удалить файл блокировки вручную.
⚠️ Внимание: Остановка служб сервера 1С влияет на все информационные базы, размещенные на этом кластере. Согласуйте эти действия с руководством и другими отделами, чтобы не остановить работу бухгалтерии или склада в разгар операции.
| Метод воздействия | Уровень риска | Влияние на других | Необходимые права |
|---|---|---|---|
| Интерфейс 1С | Низкий | Только целевой пользователь | Право "Администрирование" |
| Консоль серверов | Средний | Возможно падение воркера | Администратор ОС / 1С |
| Утилита radmin | Средний | Только целевой сеанс | Доступ к серверу |
| Перезапуск службы | Высокий | Все пользователи базы | Администратор ОС |
Если вы часто сталкиваетесь с зависаниями, настройте в параметрах сервера 1С автоматическое завершение неактивных сеансов. Это предотвратит накопление «зомби»-подключений после сбоев сети.
Диагностика на уровне СУБД (MS SQL / PostgreSQL)
В архитективе клиент-сервер блокировки часто удерживаются на уровне базы данных. Если 1С не может завершить сеанс, возможно, в SQL висит активная транзакция. Для диагностики подключитесь к СУБД через SQL Server Management Studio или pgAdmin.
Выполните запрос к системным представлениям, чтобы найти процессы, связанные с базой 1С. В MS SQL это таблица sysprocesses или динамическое представление sys.dm_exec_sessions. Найдите процесс с статусом sleeping или runnable, который держит блокировки долгое время.
Для принудительного завершения процесса в SQL используйте команду KILL с указанием ID процесса (SPID). Делайте это только если уверены, что процесс принадлежит зависшему пользователю 1С, а не системному заданию.
-- Пример для MS SQL: поиск блокировок
SELECT * FROM sys.dm_exec_requests WHERE blocking_session_id <> 0;
-- Принудительное завершение
KILL 54;
После выполнения команды KILL в СУБД, сервер 1С обнаружит разрыв соединения и очистит соответствующий сеанс в своем списке. Это «хирургическое» вмешательство, которое требует глубокого понимания работы транзакций.
Вмешательство на уровне СУБД оправдано только когда инструменты платформы 1С бессильны. Это последний рубеж обороны перед полной перезагрузкой сервера.
Профилактика зависаний и настройка таймаутов
Чтобы проблема «как выкинуть пользователя» возникала реже, необходимо настроить параметры кластера серверов. В свойствах кластера в консоли администрирования есть параметры, регулирующие время жизни неактивных сеансов и время ожидания блокировок.
Увеличьте параметр Сеанс неактивен (мин). Это позволит системе автоматически «убивать» подключения, где пользователь ушел, не закрыв 1С корректно. Также стоит проверить настройки MaxWorkingProcessMemory, так как нехватка памяти часто приводит к зависанию процессов-работников.
Регулярно проводите тестирование и исправление базы данных. Ошибки в ссылках или поврежденные индексы могут вызывать бесконечные циклы выборки, из-за которых интерфейс перестает отвечать, создавая иллюзию зависания пользователя.
⚠️ Внимание: Параметры кластера серверов могут различаться в зависимости от версии платформы 1С:Предприятие (8.3.10, 8.3.20 и т.д.). Всегда сверяйтесь с документацией к вашей конкретной версии перед изменением глобальных настроек.
Почему 1С висит при слабом интернете?
В тонком клиенте при разрыве связи с сервером попытка переподключения может занимать длительное время. В этот момент интерфейс блокируется. Настройка таймаута соединения в файле подключения помогает решить эту проблему.
Часто задаваемые вопросы (FAQ)
Можно ли завершить сеанс, если я не администратор базы?
Нет, право на завершение чужих сеансов («Администрирование») есть только у пользователей с соответствующими правами доступа. Обычный пользователь может завершить только свой собственный сеанс.
Что будет с данными, если я выкину пользователя во время проведения документа?
Механизм транзакций 1С гарантирует целостность. Если проведение не было зафиксировано (коммит), все изменения откатятся. Документ не проведется, но и не повредится. Однако возможна ситуация, когда документ останется в состоянии «Не проведен» с частично заполненными данными.
Почему после завершения сеанса пользователь сразу появляется снова?
Это означает, что на клиентской машине процесс 1С не был закрыт полностью, а только разорвано сетевое соединение. Клиент пытается автоматически переподключиться. Необходимо закрыть программу 1С на компьютере пользователя вручную.
Как найти пользователя по IP-адресу в списке сеансов?
В списке активных пользователей в конфигураторе или консоли серверов обычно отображается имя компьютера. Если нужно именно IP, потребуется смотреть логи сервера 1С (файлы логов в каталоге установки) или использовать сетевые утилиты мониторинга.
Безопасно ли удалять файл 1Cv8.1CD.1CL в файловой базе?
Да, если вы уверены, что в базе никого нет. Этот файл хранит информацию о блокировках. Его удаление сбрасывает все блокировки. Но если в этот момент кто-то работал, его данные могут повредиться. Делайте это только после проверки отсутствия активных процессов.