Разберем типичную ситуацию, с которой сталкиваются системные администраторы: на одном физическом сервере установлены две разные версии сервера 1С:Предприятие (например, 8.3 и 8.5). Для второго сервера изменен стандартный порт на 1640. Утилиты администрирования установлены, но при попытке зарегистрировать центральный сервер новой версии в MMC-консоли возникает ошибка: «невозможно соединиться с сервером». Проанализируем причины такого поведения и рассмотрим рабочие способы решения этой проблемы.
Выясним причину такого поведения. Дело в архитектурных ограничениях операционной системы Windows и самой платформы 1С:
radmin.dll. Особенность системного реестра Windows такова, что в операционной системе в конкретный момент времени может быть зарегистрирована (через утилиту regsvr32) только одна версия этой компоненты. Если вы открываете консоль версии 8.5, а в системе зарегистрирована radmin.dll от версии 8.3, произойдет ошибка несовпадения версий. Утилита администрирования для каждой платформы строго своя.srvinfo). Использование общей папки приведет к ошибкам запуска.Поскольку перед использованием консоли для другой версии платформы необходимо заново регистрировать 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) и запускайте оснастку только через них. Это гарантирует, что перед открытием консоли в системе будет зарегистрирована правильная библиотека.
Штатную MMC-оснастку можно назвать устаревающей технологией. Современный подход заключается в использовании сервера администрирования кластера (службы ras). Запустим для каждого сервера по своему экземпляру ras и будем использовать консоль из стандартных функций платформы (кроссплатформенную утилиту на базе Java).
Преимущества этого метода в том, что Java-консоль работает напрямую по сети, не требует регистрации COM-компонент, и, соответственно, использовать библиотеку radmin.dll вообще не нужно. Разные версии кластеров можно администрировать одновременно без конфликтов в реестре Windows. Единственный нюанс — интерфейс Java-консоли может работать немного медленнее классической оснастки.
Если вы хотите продолжать использовать классическую MMC-оснастку, но вас утомляет постоянная перерегистрация через bat-файлы, воспользуемся функционалом Служб компонентов Windows (Component Services).
Для изоляции COM-объектов radmin.dll или comcntr.dll разных версий можно создать для каждой версии отдельное серверное COM+ приложение. Это позволит операционной системе изолированно держать в памяти компоненты разных версий, избавляя от необходимости их перерегистрации при переключении между консолями.
Если вы используете правильную консоль, но подключение все равно не устанавливается, проверим настройки самой службы сервера 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"
Важные моменты при настройке:
ИмяСервера:1640 или localhost:1640).srvinfo.