В процессе администрирования серверов 1С:Предприятие 8.2 многие системные администраторы сталкиваются с неприятной ситуацией: при попытке просмотреть список активных пользователей в ветке «Сеансы» консоль управления (MMC) внезапно сообщает об ошибке оснастки. После закрытия окна с ошибкой работа продолжается, но список пользователей оказывается неполным — например, вместо 70 реальных пользователей отображается всего 10–15. Разберем детально, почему это происходит и как восстановить нормальную работу инструментов управления сервером.
Для начала проанализируем разницу между разделами «Сеансы» и «Соединения» в консоли администрирования. Как показывает практика и обсуждения специалистов, раздел «Соединения» обычно работает стабильнее и показывает корректное количество записей даже тогда, когда «Сеансы» дают сбой. Это происходит потому, что при открытии списка сеансов консоль mmc.exe выполняет гораздо более сложные запросы к рабочим процессам сервера 1С.
В частности, для формирования списка сеансов серверу необходимо собрать информацию не только об идентификаторе пользователя и времени входа, но и данные о выданных лицензиях (программных или HASP). Если менеджер лицензий отвечает с задержкой или в сети наблюдаются микроразрывы при передаче данных через RPC, консоль может «захлебнуться» данными, что и приводит к ошибке оснастки и обрыву списка на том месте, где произошел сбой.
Выясним причину технического характера. В релизе 8.2.19.80, который часто упоминается в подобных обращениях, существовала известная проблема с утечкой памяти в процессе консоли при обработке больших списков данных. Когда количество сеансов приближается к определенному порогу (обычно более 50), структура данных в памяти mmc.exe повреждается.
Рассмотрим шаги по обновлению:
8.2.19.130.radmin.dll, так как старая версия в реестре может продолжать вызывать конфликты.Довольно часто ошибка «оснастка обнаружила ошибку» сохраняется даже после обновления платформы. Это связано с тем, что Windows сохраняет настройки и состояние окон консоли в профиле пользователя. Если эти файлы повреждены, визуальное отображение дерева объектов 1С будет некорректным.
Разберем, как очистить эти настройки:
%AppData%\Microsoft\MMC\.1cv8adm (или похожим, в зависимости от версии).Проанализируем ситуацию, когда сервер 1С работает на 64-битной версии Windows. Консоль администрирования для версии 8.2 является 32-битным приложением. Если регистрация основной библиотеки администрирования radmin.dll была выполнена стандартной командой без учета разрядности, это может привести к нестабильной передаче данных между 64-битным процессом ragent и 32-битной оснасткой.
Посмотрим на правильный способ регистрации через SysWOW64:
Откройте командную строку от имени администратора и выполните следующую последовательность действий:
cd C:\Windows\SysWOW64
regsvr32.exe "C:\Program Files (x86)\1cv82\8.2.19.130\bin\radmin.dll"
Важно: Указывайте путь именно к той папке с релизом, который у вас установлен как рабочий. Использование системного regsvr32 из папки System32 на 64-битных ОС для этой библиотеки часто становится причиной «невидимых» пользователей в списке.
Поскольку раздел «Сеансы» активно запрашивает данные о лицензиях, любая задержка в этом канале связи приводит к падению оснастки. Проанализируем настройки вашего nnhasp.ini и доступность ключей защиты.
Если в вашей инфраструктуре используется много программных лицензий, серверу требуется время на проверку каждой из них при формировании списка. Попробуйте временно отключить антивирусное ПО на сервере (особенно компоненты мониторинга сетевого трафика и RPC-фильтры) и проверьте, восстановится ли полный список пользователей. Если список стал полным — необходимо добавить процессы ragent.exe, rmngr.exe и rphost.exe в исключения сканирования.
Если штатная консоль продолжает вести себя странно, а информацию получить нужно срочно, мы можем воспользоваться встроенными механизмами платформы через COM-соединение. Это надежнее, так как исключает графическую оболочку MMC из цепочки передачи данных.
Рассмотрим пример кода на языке 1С, который можно запустить в любой внешней обработке, чтобы увидеть реальное количество сеансов:
Коннектор = Новый COMОбъект("V82.COMConnector");
СоединениеСАгентом = Коннектор.ConnectAgent("ИмяВашегоСервера");
Кластеры = СоединениеСАгентом.GetClusters();
Для Каждого Кластер Из Кластеры Цикл
СоединениеСАгентом.Authenticate(Кластер, "Администратор", "Пароль");
РабочиеПроцессы = СоединениеСАгентом.GetWorkingProcesses(Кластер);
Для Каждого Процесс Из РабочиеПроцессы Цикл
// Получаем список всех активных сеансов напрямую
Сеансы = СоединениеСАгентом.GetSessions(Кластер);
Сообщить("Всего сеансов в кластере: " + Сеансы.Количество());
Для Каждого Сеанс Из Сеансы Цикл
Сообщить("Пользователь: " + Сеанс.userName + " вошел в: " + Сеанс.AppID);
КонецЦикла;
Прервать; // Достаточно одного прохода по кластеру
КонецЦикла;
КонецЦикла;
Использование объекта V82.COMConnector позволяет получить данные в обход глючной оснастки. Если этот код возвращает правильное количество пользователей, значит, проблема стопроцентно кроется в самой консоли mmc.exe или регистрации radmin.dll, а не в ядре сервера 1С.
Подводя итог, можно сказать: если вы видите не всех пользователей в консоли 1С 8.2, первым делом проверьте вкладку «Соединения». Если там всё в порядке — займитесь «лечением» консоли: обновите платформу до 8.2.19.130, перерегистрируйте radmin.dll через SysWOW64 и обязательно очистите кэш в %AppData%. Эти действия в 95% случаев решают проблему странного поведения административной панели.