В практике системного администрирования и поддержки систем на базе 1С:Предприятие нередко возникают ситуации, когда стандартная оснастка «Администрирование серверов 1С:Предприятия» (MMC) перестает открываться или выдает ошибки при попытке регистрации. Если при этом в системе «повисла» сессия пользователя, которая блокирует работу базы или потребляет избыточные ресурсы, проблему приходится решать альтернативными методами. В данной статье мы подробно разберем, как принудительно завершить работу пользователя и как восстановить работоспособность штатных инструментов администрирования.
Прежде всего, проанализируем причины возникновения подобных сбоев. Зависание сессии в 1С может произойти из-за разрыва сетевого соединения, длительного выполнения тяжелого запроса на стороне СУБД или критической ошибки в коде конфигурации. Оснастка же часто выходит из строя после обновления платформы 1С, когда новые библиотеки не регистрируются в системе должным образом, или возникает конфликт версий.
Рассмотрим пошагово все способы решения — от самых простых (средствами операционной системы) до продвинутых (командная строка и скрипты).
Если консоль 1С недоступна, самым быстрым способом будет использование стандартного функционала операционной системы. Это особенно актуально, если пользователи работают в терминальном режиме (RDP).
Разберем последовательность действий:
Ctrl + Alt + End, чтобы вызвать меню управления удаленным сервером.Важный нюанс: этот метод завершает терминальный сеанс целиком, закрывая все запущенные пользователем приложения, включая клиент 1С. Это гарантированно разрывает связь с сервером приложений 1С.
Если при попытке открыть «Администрирование серверов 1С» вы получаете ошибку о том, что оснастка не зарегистрирована, нам потребуется перерегистрировать динамическую библиотеку radmndwm.dll. Эта библиотека отвечает за интеграцию консоли 1С в общую оболочку управления Microsoft (MMC).
Проанализируем правильный алгоритм регистрации:
bin той версии платформы, которая установлена на сервере. Обычно путь выглядит так: C:\Program Files\1cv8\8.3.X.XXXX\bin\.radmndwm.dll.reg_1c.bat, и впишем в него команду регистрации.Рассмотрим пример содержимого bat-файла для типичной установки:
regsvr32 "C:\Program Files\1cv8\8.3.22.1709\bin\radmndwm.dll"
pause
Критически важно: запуск bat-файла необходимо выполнять строго от имени администратора. После выполнения команды должно появиться системное сообщение об успешной регистрации модуля в DllRegisterServer.
Выясним, как управлять сессиями, если графический интерфейс (MMC) принципиально не подходит или недоступен. Для этого в составе сервера 1С поставляется утилита RAC (Remote Administration Client).
Для ее работы должен быть запущен сервис RAS (Remote Administration Service). Обычно он запускается командой ras cluster --daemon.
Посмотрим на примеры команд для управления сессиями:
rac session --cluster=<ID_вашего_кластера> list
session-id зависшего пользователя.
rac session --cluster=<ID_вашего_кластера> terminate --session=<ID_сессии>
Рассмотрим ситуацию, когда нам нужно автоматизировать процесс или сбросить сессии программно. Для этого можно использовать объект V83.ComConnector. Этот метод позволяет подключиться к агенту сервера и перебрать все активные соединения.
Проанализируем пример кода на языке 1С, который можно запустить во внешней обработке:
Коннектор = Новый COMОбъект("V83.COMConnector");
Агент = Коннектор.ConnectAgent("ИмяСервера");
Кластеры = Агент.GetClusters();
// Выбираем нужный кластер (обычно первый)
Кластер = Кластеры.GetValue(0);
Агент.Authenticate(Кластер, "", "");
// Получаем список сессий
Сессии = Агент.GetSessions(Кластер);
Для Каждого Сессия Из Сессии Цикл
Если Сессия.userName = "НужныйПользователь" Тогда
Агент.TerminateSession(Кластер, Сессия);
Сообщить("Сессия пользователя завершена успешно");
КонецЕсли;
КонецЦикла;
В некоторых случаях сессия 1С может «зависнуть» на уровне SQL-сервера, удерживая блокировки в базе данных даже после закрытия клиентского приложения. В такой ситуации мы можем принудительно разорвать соединение со стороны СУБД.
sp_who2, чтобы увидеть активные процессы и заблокированные SPID.KILL.Например, для процесса с номером 54:
KILL 54;
Обратите внимание: это действие разорвет физическое соединение с базой, но в консоли 1С сессия может оставаться видимой еще некоторое время, пока сервер приложений не выполнит проверку активности (тайм-аут).
Иногда возникают аномальные ситуации: вы перезагрузили службу 1C:Enterprise 8.3 Server Agent, а «призрачные» сессии все равно видны в консоли. Это происходит из-за кеширования данных в файлах кластера.
Выясним причину и устраним ее:
C:\Program Files\1cv8\srvinfo).reg_1541) и далее в подпапку snccntx.Использование этих методов в совокупности позволяет гибко управлять сервером 1С даже в условиях сбоя стандартных инструментов администрирования. Мы рекомендуем всегда иметь под рукой готовый bat-файл для перерегистрации компонентов, так как это самая частая причина проблем с MMC-оснасткой после плановых обновлений системы.