Как сбросить зависшую сессию 1С и восстановить работу консоли администрирования серверов?

Системный администратор 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

В практике системного администрирования и поддержки систем на базе 1С:Предприятие нередко возникают ситуации, когда стандартная оснастка «Администрирование серверов 1С:Предприятия» (MMC) перестает открываться или выдает ошибки при попытке регистрации. Если при этом в системе «повисла» сессия пользователя, которая блокирует работу базы или потребляет избыточные ресурсы, проблему приходится решать альтернативными методами. В данной статье мы подробно разберем, как принудительно завершить работу пользователя и как восстановить работоспособность штатных инструментов администрирования.

Анализ ситуации: почему зависают сессии и ломается оснастка

Прежде всего, проанализируем причины возникновения подобных сбоев. Зависание сессии в 1С может произойти из-за разрыва сетевого соединения, длительного выполнения тяжелого запроса на стороне СУБД или критической ошибки в коде конфигурации. Оснастка же часто выходит из строя после обновления платформы 1С, когда новые библиотеки не регистрируются в системе должным образом, или возникает конфликт версий.

Рассмотрим пошагово все способы решения — от самых простых (средствами операционной системы) до продвинутых (командная строка и скрипты).

Способ 1. Завершение сессии через Диспетчер задач Windows

Если консоль 1С недоступна, самым быстрым способом будет использование стандартного функционала операционной системы. Это особенно актуально, если пользователи работают в терминальном режиме (RDP).

Разберем последовательность действий:

  1. Запустим Диспетчер задач. Если вы работаете внутри RDP-сессии, используйте комбинацию клавиш Ctrl + Alt + End, чтобы вызвать меню управления удаленным сервером.
  2. Перейдем на закладку Пользователи (Users). Здесь отображается список всех активных и отключенных сеансов.
  3. Найдем нужного пользователя, чья сессия зависла. Нажмем правой кнопкой мыши и выберем пункт Выход (Sign off) или Завершить сеанс.

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

Способ 2. Восстановление регистрации оснастки (MMC)

Если при попытке открыть «Администрирование серверов 1С» вы получаете ошибку о том, что оснастка не зарегистрирована, нам потребуется перерегистрировать динамическую библиотеку radmndwm.dll. Эта библиотека отвечает за интеграцию консоли 1С в общую оболочку управления Microsoft (MMC).

Проанализируем правильный алгоритм регистрации:

  1. Необходимо найти папку bin той версии платформы, которая установлена на сервере. Обычно путь выглядит так: C:\Program Files\1cv8\8.3.X.XXXX\bin\.
  2. В этой папке найдем файл radmndwm.dll.
  3. Создадим текстовый файл, например, reg_1c.bat, и впишем в него команду регистрации.

Рассмотрим пример содержимого bat-файла для типичной установки:


regsvr32 "C:\Program Files\1cv8\8.3.22.1709\bin\radmndwm.dll"
pause

Критически важно: запуск bat-файла необходимо выполнять строго от имени администратора. После выполнения команды должно появиться системное сообщение об успешной регистрации модуля в DllRegisterServer.

Способ 3. Использование утилиты командной строки RAC

Выясним, как управлять сессиями, если графический интерфейс (MMC) принципиально не подходит или недоступен. Для этого в составе сервера 1С поставляется утилита RAC (Remote Administration Client).

Для ее работы должен быть запущен сервис RAS (Remote Administration Service). Обычно он запускается командой ras cluster --daemon.

Посмотрим на примеры команд для управления сессиями:

  1. Получим список всех сессий в кластере: rac session --cluster=<ID_вашего_кластера> list
  2. В полученном списке найдем session-id зависшего пользователя.
  3. Принудительно завершим эту сессию: rac session --cluster=<ID_вашего_кластера> terminate --session=<ID_сессии>

Способ 4. Программный сброс сессий через COM-соединение

Рассмотрим ситуацию, когда нам нужно автоматизировать процесс или сбросить сессии программно. Для этого можно использовать объект V83.ComConnector. Этот метод позволяет подключиться к агенту сервера и перебрать все активные соединения.

Проанализируем пример кода на языке 1С, который можно запустить во внешней обработке:


Коннектор = Новый COMОбъект("V83.COMConnector");
Агент = Коннектор.ConnectAgent("ИмяСервера");
Кластеры = Агент.GetClusters();

// Выбираем нужный кластер (обычно первый)
Кластер = Кластеры.GetValue(0);
Агент.Authenticate(Кластер, "", "");

// Получаем список сессий
Сессии = Агент.GetSessions(Кластер);

Для Каждого Сессия Из Сессии Цикл
    Если Сессия.userName = "НужныйПользователь" Тогда
        Агент.TerminateSession(Кластер, Сессия);
        Сообщить("Сессия пользователя завершена успешно");
    КонецЕсли;
КонецЦикла;

Способ 5. Работа на уровне СУБД (MS SQL Server)

В некоторых случаях сессия 1С может «зависнуть» на уровне SQL-сервера, удерживая блокировки в базе данных даже после закрытия клиентского приложения. В такой ситуации мы можем принудительно разорвать соединение со стороны СУБД.

  1. Откроем SQL Server Management Studio (SSMS).
  2. Выполним стандартную процедуру sp_who2, чтобы увидеть активные процессы и заблокированные SPID.
  3. Если мы определили номер процесса, который блокирует работу, используем команду KILL.

Например, для процесса с номером 54:

KILL 54;

Обратите внимание: это действие разорвет физическое соединение с базой, но в консоли 1С сессия может оставаться видимой еще некоторое время, пока сервер приложений не выполнит проверку активности (тайм-аут).

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

Иногда возникают аномальные ситуации: вы перезагрузили службу 1C:Enterprise 8.3 Server Agent, а «призрачные» сессии все равно видны в консоли. Это происходит из-за кеширования данных в файлах кластера.

Выясним причину и устраним ее:

  1. Остановим службу 1С.
  2. Перейдем в каталог данных сервера (по умолчанию это C:\Program Files\1cv8\srvinfo).
  3. Зайдем в папку вашего кластера (например, reg_1541) и далее в подпапку snccntx.
  4. Очистим содержимое этой папки. В ней хранятся данные сеансов. Внимание: это приведет к сбросу всех текущих подключений.
  5. Запустим службу заново.

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

← На главную