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

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

Разберем типичную ситуацию, с которой сталкиваются системные администраторы: на одном физическом сервере установлены две разные версии сервера 1С:Предприятие (например, 8.3 и 8.5). Для второго сервера изменен стандартный порт на 1640. Утилиты администрирования установлены, но при попытке зарегистрировать центральный сервер новой версии в MMC-консоли возникает ошибка: «невозможно соединиться с сервером». Проанализируем причины такого поведения и рассмотрим рабочие способы решения этой проблемы.

Почему возникает конфликт консолей администрирования?

Выясним причину такого поведения. Дело в архитектурных ограничениях операционной системы Windows и самой платформы 1С:

  1. Ограничение регистрации COM-компонент: Классическая MMC-оснастка для управления серверами 1С использует библиотеку radmin.dll. Особенность системного реестра Windows такова, что в операционной системе в конкретный момент времени может быть зарегистрирована (через утилиту regsvr32) только одна версия этой компоненты. Если вы открываете консоль версии 8.5, а в системе зарегистрирована radmin.dll от версии 8.3, произойдет ошибка несовпадения версий. Утилита администрирования для каждой платформы строго своя.
  2. Неполная настройка портов: При установке второго сервера недостаточно изменить только основной порт (с 1540 на 1640). Если не смещены порты менеджера кластера и диапазон портов рабочих процессов, службы разных серверов будут конфликтовать за сетевые ресурсы.
  3. Конфликт каталога данных: Каждая служба сервера 1С должна иметь собственный уникальный каталог для хранения настроек кластера (папка srvinfo). Использование общей папки приведет к ошибкам запуска.

Решение 1: Скрипт для автоматической перерегистрации компоненты

Поскольку перед использованием консоли для другой версии платформы необходимо заново регистрировать COM-библиотеку radmin.dll от нужной версии, автоматизируем этот процесс с помощью командного файла. Создадим .bat файл для запуска консоли, который будет выполнять нужные действия.

Рассмотрим пример кода скрипта:


@echo off
rem Укажите вашу версию платформы 1С, которую нужно запустить
set version=8.3.25.1234

rem Путь к radmin.dll и файлу оснастки для 64-битной версии
set bin_path="C:\Program Files\1cv8\%version%\bin"

rem Переходим в каталог bin
cd /d %bin_path%

rem Регистрируем библиотеку администрирования в системе
regsvr32.exe /s radmin.dll

rem Запускаем саму MMC-консоль
start "" "C:\Program Files\1cv8\common\1CV8 Servers (x86-64).msc"

Создайте такие скрипты для каждой установленной версии сервера 1С (меняя значение переменной version) и запускайте оснастку только через них. Это гарантирует, что перед открытием консоли в системе будет зарегистрирована правильная библиотека.

Решение 2: Переход на использование службы RAS

Штатную MMC-оснастку можно назвать устаревающей технологией. Современный подход заключается в использовании сервера администрирования кластера (службы ras). Запустим для каждого сервера по своему экземпляру ras и будем использовать консоль из стандартных функций платформы (кроссплатформенную утилиту на базе Java).

Преимущества этого метода в том, что Java-консоль работает напрямую по сети, не требует регистрации COM-компонент, и, соответственно, использовать библиотеку radmin.dll вообще не нужно. Разные версии кластеров можно администрировать одновременно без конфликтов в реестре Windows. Единственный нюанс — интерфейс Java-консоли может работать немного медленнее классической оснастки.

Решение 3: Изоляция COM+ приложений (для продвинутых администраторов)

Если вы хотите продолжать использовать классическую MMC-оснастку, но вас утомляет постоянная перерегистрация через bat-файлы, воспользуемся функционалом Служб компонентов Windows (Component Services).

Для изоляции COM-объектов radmin.dll или comcntr.dll разных версий можно создать для каждой версии отдельное серверное COM+ приложение. Это позволит операционной системе изолированно держать в памяти компоненты разных версий, избавляя от необходимости их перерегистрации при переключении между консолями.

Проверка настроек службы второго сервера 1С

Если вы используете правильную консоль, но подключение все равно не устанавливается, проверим настройки самой службы сервера 1С в редакторе реестра Windows. Перейдем в ветку HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\, найдем службу нужной версии агента сервера 1С и проверим параметр ImagePath.

Строка запуска процесса ragent.exe для второго сервера (например, на порту 1640) должна обязательно содержать уникальные значения портов и уникальный путь к папке кластера. Убедитесь, что параметры выглядят примерно так:


"C:\Program Files\1cv8\8.5.x.x\bin\ragent.exe" -srvc -agent -regport 1641 -port 1640 -range 1660:1691 -d "C:\Program Files\1cv8\srvinfo_8_5"

Важные моменты при настройке:

  1. При добавлении нестандартного сервера в MMC-консоли необходимо явно указывать порт через двоеточие вместе с именем компьютера (например, ИмяСервера:1640 или localhost:1640).
  2. Если вы только что исправили параметры в реестре, службу агента необходимо перезапустить. Если до этого служба пыталась запуститься с неверными настройками, рекомендуется перед запуском очистить её уникальную папку srvinfo.
  3. Убедитесь, что в настройках брандмауэра (файрвола) Windows созданы разрешающие правила для входящих TCP-подключений на новые порты (1640, 1641 и диапазон 1660-1691).
  4. Помните, что при обновлении платформы 1С на новый релиз штатный инсталлятор может сбросить нестандартные порты и пути в реестре на значения по умолчанию, поэтому после каждого обновления настройки службы второго сервера придется проверять и восстанавливать.
← На главную