Как восстановить пароль администратора кластера серверов 1С 8.3 и завершить зависшие COM-сеансы

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

При переходе с платформы 1С:Предприятие 8.2 на версию 8.3 многие системные администраторы и разработчики сталкиваются с изменением структуры хранения данных сервера приложений. Старые методы и файлы, такие как srvribrg.lst, уходят в прошлое, а на их место приходят новые механизмы управления кластером. В данной статье мы подробно разберем, как восстановить доступ к консоли администрирования, если пароль утерян, где искать конфигурационные файлы в современных версиях платформы и как бороться с «фантомными» пользователями, создающими COM-соединения.

Определяем местоположение файлов реестра кластера

Первым делом нам необходимо выяснить, где именно сервер 1С хранит свои настройки. В версии 8.3 информация о кластерах, базах и администраторах больше не хранится в одном файле srvribrg.lst. Теперь за это отвечают файлы с расширением .lst, расположенные в каталоге описания кластера.

Разберем алгоритм поиска каталога srvinfo по шагам:

  1. Откроем оснастку «Службы» (services.msc) на сервере, где запущен агент сервера 1С.
  2. Найдем службу 1C:Enterprise 8.3 Server Agent.
  3. Перейдем в «Свойства» службы и проанализируем строку «Исполняемый файл».

Нас интересует параметр -d. Именно он указывает путь к каталогу с данными сервера. Рассмотрим пример строки запуска:

"C:\Program Files\1cv8\8.3.x.xxxx\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d "D:\1c-srvinfo"

В данном случае все настройки находятся в папке D:\1c-srvinfo. Если параметр -d отсутствует, то по умолчанию данные хранятся в %ProgramData%\1C\1cv8\srvinfo.

Различие между администратором сервера и администратором кластера

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

Процедура сброса пароля через редактирование файлов

Рассмотрим ситуацию, когда нам необходимо сбросить пароль администратора кластера. Проанализируем структуру файла 1CV8Clst.lst. Это текстовый файл во внутреннем формате 1С, который можно редактировать обычным блокнотом, но делать это нужно крайне осторожно.

Важное правило: любые изменения в файлы .lst можно вносить только при полностью остановленной службе 1C:Enterprise 8.3 Server Agent. В противном случае служба перезапишет ваши изменения при остановке или проигнорирует их при чтении.

Алгоритм действий следующий:

  1. Останавливаем службу агента сервера 1С.
  2. Переходим в каталог кластера (например, D:\1c-srvinfo\reg_1541).
  3. Находим файл 1CV8Clst.lst и создаем его резервную копию (это обязательный шаг!).
  4. Открываем файл текстовым редактором.
  5. Ищем секцию, описывающую администраторов. Обычно она начинается сразу после идентификатора кластера и его имени. В пустом кластере без администраторов эта секция выглядит как {0}.
  6. Если администраторы созданы, там будет список их имен и зашифрованных хешей паролей. Чтобы полностью убрать запрос пароля, нам нужно заменить всю секцию со списком администраторов на {0}.
  7. Сохраняем файл и запускаем службу.

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

Борьба с «зависшими» COM-соединениями

Часто необходимость зайти в консоль возникает из-за того, что в базе «подвисает» служебный пользователь, например, выполняющий COM-обмен между базами. Такие сеансы могут не закрываться автоматически и мешать обновлению конфигурации или выполнению регламентных операций.

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

Проанализируем пример кода для корректного отключения:


Попытка
    // Здесь выполняется работа с COM-соединением
    Если ТипЗнч(КомСоединение) <> Тип("Неопределено") Тогда
        КомСоединение.Terminate(Ложь); // Метод принудительного завершения
    КонецЕсли;
Исключение
    ЗаписьЖурналаРегистрации("COM-обмен", УровеньЖурналаРегистрации.Ошибка, , , "Ошибка при закрытии соединения: " + ОписаниеОшибки());
КонецПопытки;

Также в некоторых случаях, в зависимости от используемой библиотеки (ComConnector или иные), могут применяться методы .Disconnect() или .Close(). Выясним причину, по которой соединение может остаться активным: если в коде 1С объект, содержащий соединение, просто очищается (КомСоединение = Неопределено), это не гарантирует моментального закрытия физического сеанса на стороне сервера. Вызов Terminate() является более надежным способом.

Если программные методы не помогают, рассмотрим системный подход:

В самых тяжелых случаях, когда сеанс не удаляется даже через консоль, поможет только принудительное завершение процесса dllhost.exe на сервере приложений, который обслуживает данный COM-объект, или перезапуск службы ragent (что является крайней мерой, так как прервет работу всех пользователей).

Дополнительные рекомендации по безопасности

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

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

← На главную