В процессе администрирования платформы 1С:Предприятие 8 часто возникают ситуации, когда необходимо срочно освободить базу данных от активных подключений. Это может потребоваться перед проведением регламентных работ, обновлением конфигурации или устранением критических ошибок блокировки. Понимание того, как корректно и безопасно принудительно завершить сеансы, является ключевым навыком для любого системного администратора.

Некорректное завершение работы пользователей может привести к повреждению данных или зависанию фоновых заданий, поэтому подходить к этой процедуре следует осознанно. В данной статье мы рассмотрим различные методы, начиная от штатных средств интерфейса администрирования и заканчивая прямыми запросами к серверу через консоль или SQL.

Важно отметить, что выбор метода зависит от вашей конфигурации сервера и уровня прав доступа. Некоторые способы требуют остановки службы, другие позволяют работать "на горячую".

Использование штатного интерфейса администрирования

Самый безопасный и рекомендуемый способ принудительного отключения пользователей — это использование встроенного инструмента "Администрирование серверов 1С Предприятия". Этот метод позволяет увидеть список всех активных соединений в реальном времени и выборочно завершить их.

Для запуска утилиты вам потребуется доступ к серверу с правами администратора. Запустите программу через меню "Пуск" или выполните команду ras в командной строке с соответствующими параметрами. Интерфейс покажет дерево кластеров, где вы сможете развернуть нужный узел и увидеть список информационных баз.

После выбора конкретной базы в списке отобразятся все текущие сеансы. Вы можете отсортировать их по имени пользователя, времени начала или компьютеру. Для принудительного разрыва соединения достаточно выделить нужный сеанс, нажать правую кнопку мыши и выбрать пункт "Удалить" или "Завершить".

  • 🔍 Позволяет видеть детальную информацию о каждом подключении (IP-адрес, начальный сеанс).
  • 🛡️ Минимизирует риск повреждения данных по сравнению с прямым убийством процессов.
  • ⚡ Действует мгновенно без необходимости перезапуска служб.
  • 👥 Можно отключать как одного конкретного пользователя, так и всех сразу.

Однако стоит помнить, что если пользователь в этот момент проводил запись данных, транзакция может быть откатана системой. Обычно платформа обрабатывает такие ситуации корректно, но в редких случаях могут потребоваться дополнительные проверки целостности базы.

⚠️ Внимание: Если вы работаете в тонком клиенте, изменения в списке сеансов могут отображаться с небольшой задержкой. Обновите список вручную, если не видите изменений сразу после удаления.

📊 Как вы обычно завершаете сеансы пользователей?
Через консоль администрирования
Перезапуском службы 1С
Через диспетчер задач
Через SQL-запрос

Принудительное завершение через Диспетчер задач

В экстренных случаях, когда интерфейс администрирования не отвечает или недоступен, можно прибегнуть к более грубому методу — завершению процессов на уровне операционной системы. Этот способ требует осторожности, так как вы работаете напрямую с процессами rphost или rmngr.

Откройте Диспетчер задач Windows на сервере 1С. Перейдите на вкладку "Подробности". Здесь вам нужно найти процессы, соответствующие рабочим серверам 1С. Обычно они имеют имена вида rphost.exe. Каждый такой процесс может обслуживать несколько пользовательских сеансов.

Чтобы не убить лишнее, обратите внимание на столбец "Имя пользователя" или используйте утилиту командной строки для идентификации. Завершение процесса rphost приведет к разрыву всех соединений, которые он обрабатывал в данный момент. Сервер 1С автоматически перезапустит упавший процесс, но пользователи будут выброшены из базы.

taskkill /F /IM rphost.exe

Использование командной строки часто бывает быстрее, особенно если нужно убить все процессы сразу. Команда выше принудительно завершит все экземпляры рабочих процессов. Будьте готовы к тому, что в логах сервера появятся записи об аварийном завершении сеансов.

☑️ Проверка перед убийством процессов

Выполнено: 0 / 4

Управление сеансами через консоль управления (ras)

Для профессионального администрирования кластера 1С предпочтительнее использовать консольную утилиту ras. Она позволяет управлять сервером 1С удаленно и скриптовать процесс очистки базы от пользователей. Это особенно удобно при автоматизации обновлений.

Синтаксис команды для получения списка сеансов выглядит следующим образом. Вам нужно указать адрес кластера, порт реестра (по умолчанию 1541) и имя информационной базы.

ras cluster list sessions --cluster=server_name:1541 --ib=base_name

Получив идентификатор сеанса (Session ID), вы можете отправить команду на его завершение. Это более точный инструмент, чем диспетчер задач, так как он работает на уровне протокола взаимодействия с сервером 1С, а не на уровне ОС.

Преимуществом данного метода является возможность интеграции в пакетные файлы (.bat или .cmd). Вы можете написать скрипт, который сначала пытается корректно завершить сеансы, ждет определенное время, и только потом применяет жесткие меры.

Параметр команды Описание Пример значения
--cluster Адрес и порт центрального сервера srv1c:1541
--ib Имя информационной базы в кластере Accounting_DB
--session Уникальный идентификатор сеанса 15
--user Пользователь для авторизации в кластере Administrator

Стоит учитывать, что для выполнения этих команд у вашей учетной записи должны быть соответствующие права в кластере серверов 1С. Обычно это роль администратора кластера.

💡

Если вы часто используете консоль ras, создайте файл-батник с готовыми командами для быстрого доступа к спискам сеансов разных баз.

Аварийное отключение через остановку службы

Иногда ситуация становится критической: сервер завис, интерфейсы не работают, а пользователей нужно выкинуть немедленно. В таких случаях единственным рабочим вариантом остается полная остановка службы сервера 1С Предприятия.

Для этого откройте оснастку services.msc или используйте командную строку с правами администратора. Найдите службу с именем "Агент сервера 1С Предприятия" (или 1C:Enterprise 8.3 Server Agent). Остановка этой службы приведет к разрыву абсолютно всех соединений с кластером.

После остановки рекомендуется выждать несколько секунд и запустить службу снова. Это гарантированно очистит память сервера от "мусорных" сеансов и сбросит все блокировки. Однако этот метод является самым агрессивным и влияет на все базы данных, размещенные на данном сервере.

⚠️ Внимание: Перед остановкой службы убедитесь, что на сервере не выполняются критические фоновые задания (обмен данными, закрытие периода), которые могут повредиться при резком обрыве.

Если у вас настроен кластер из нескольких серверов, остановка агента на одном из них может привести к перераспределению нагрузки на остальные узлы, если настроена отказоустойчивость. В противном случае базы, привязанные к этому рабочему серверу, станут недоступны.

Прямое воздействие на СУБД (SQL Server / PostgreSQL)

В редких случаях, когда средства самой платформы 1С не помогают (например, при зависании на уровне драйверов СУБД), администратор может пойти на прямой контакт с системой управления базами данных. Этот метод требует глубоких знаний конкретной СУБД.

Для MS SQL Server можно использовать системную хранимую процедуру sp_who2 для поиска активных процессов, связанных с базой данных 1С. Найдя идентификатор процесса (SPID), его можно завершить командой KILL.

KILL 54; -- где 54 это ID процесса

Для PostgreSQL аналогом будет запрос к представлению pg_stat_activity. Вы можете найти процессы по имени базы данных и пользователю, а затем завершить их функцией pg_terminate_backend.

Использование этого метода несет высокие риски. Прямое убийство процессов СУБД может оставить транзакции в состоянии неопределенности, что потребует последующего восстановления базы из резервной копии или длительной процедуры отката логов.

Риски работы через SQL

Прямое завершение процессов СУБД может привести к необходимости запуска проверки целостности базы (DBCC CHECKDB для SQL Server или VACUUM для PostgreSQL) при следующем старте. Это может занять от нескольких минут до нескольких часов в зависимости от размера базы.

Профилактика и блокировка новых подключений

Просто выкинуть пользователей недостаточно, если нужно провести длительные технические работы. Необходимо предотвратить их повторное подключение до завершения обслуживания. Для этого в 1С существует режим блокировки новой работы с базой.

Вы можете установить флаг "Только администраторы" или полностью закрыть доступ через настройки информационной базы в консоли администрирования. Также удобно использовать механизм "Регламентных работ", который автоматически блокирует пользователей на время выполнения скрипта обновления.

Если вы планируете регулярные работы, настройте расписание так, чтобы пользователи получали уведомление о закрытии базы за 5-10 минут до начала. Это снизит количество экстренных ситуаций и необходимость применять жесткие методы отключения.

  • 🔒 Установите режим "Только администраторы" перед началом работ.
  • 📢 Используйте рассылку или чат для предупреждения сотрудников.
  • ⏱️ Планируйте работы на нерабочее время, чтобы минимизировать влияние.

Помните, что вежливое предупреждение часто эффективнее принудительного разрыва. Пользователь, который сам сохранился и вышел, не создаст лишних записей в журнале регистрации об ошибках.

💡

Комплексный подход: сначала блокировка новых входов, затем ожидание завершения активных сеансов, и только в конце — принудительный разрыв зависших подключений.

Можно ли выкинуть пользователя, который работает в файловом варианте базы?

Да, но методы отличаются. Для файловой базы нет центрального сервера процессов. Вам придется либо закрыть файл базы через сетевое управление (если он открыт как ресурс), либо завершить процесс 1cv8.exe на компьютере пользователя удаленно, либо просто подождать, пока пользователь сам закроет программу. Принудительно разорвать соединение со стороны сервера в чистом файловом варианте невозможно, так как соединение устанавливается напрямую к файлу.

Что делать, если после выкидывания пользователя база помечена как "используется"?

Иногда флаг использования базы не сбрасывается сразу. Попробуйте перезапустить службу агента сервера 1С. Если это не помогло, проверьте наличие заблокированных файлов в каталоге базы (для файлового варианта) или выполните проверку целостности базы данных в режиме предприятия под пользователем с полными правами.

Влияет ли завершение сеанса на проведение документов?

Если документ уже был проведен и зафиксирован в базе до момента разрыва, данные сохранятся. Если разрыв произошел в момент записи (транзакции), СУБД откатит незавершенную транзакцию. Документ не проведется, а пользователь при следующем входе увидит сообщение об ошибке записи или просто не найдет изменений.

Как узнать, кто именно мешает обновлению базы?

Используйте консоль администрирования (ras) или монитор пользователей внутри самой 1С (если есть доступ). Там отображается имя пользователя, сеанс и компьютер. Также можно посмотреть журнал регистрации 1С, отфильтровав события по типу "Сеанс" и времени возникновения блокировок.