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

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

При администрировании серверов 1С:Предприятия часто возникает ситуация, когда на одной физической или виртуальной машине необходимо запустить несколько экземпляров серверов разных релизов (например, 8.3.10 и 8.3.14). Основная проблема, с которой сталкиваются системные администраторы — это ошибка «Различаются версии клиента и сервера» при попытке открыть консоль администрирования (MMC-оснастку). Это происходит потому, что операционная система Windows использует единую зарегистрированную библиотеку radmin.dll для всех версий консолей. В данной статье мы подробно разберем, как обойти это ограничение и настроить стабильную работу нескольких консолей.

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

Проанализируем механику работы консоли. Оснастка администрирования серверов 1С представляет собой файл с расширением .msc, который запускается через стандартный компонент Windows mmc.exe. Сама по себе оснастка — это лишь оболочка. Всю логику взаимодействия с кластером серверов выполняет динамическая библиотека radmin.dll. При установке новой платформы 1С программа регистрации перезаписывает пути к этой библиотеке в системном реестре. В результате, какую бы версию консоли вы ни пытались запустить, она всегда будет обращаться к той версии radmin.dll, которая была зарегистрирована последней.

Если мы пытаемся подключиться к серверу версии 8.3.10, используя библиотеку от 8.3.14, протоколы обмена данными не совпадают, и мы получаем закономерную ошибку. Рассмотрим пошагово, как решить эту проблему несколькими способами.

Решение 1: Динамическая перерегистрация библиотеки через BAT-файл

Это классический и наиболее распространенный метод. Идея заключается в том, чтобы перед каждым запуском консоли принудительно регистрировать нужную версию radmin.dll в системе. Рассмотрим пример скрипта, который автоматизирует этот процесс для разных разрядностей платформы. Нам понадобится создать текстовый файл с расширением .bat для каждого релиза 1С.

Разберем пример кода для версии 8.3.14 (x64):


@echo off
set version=8.3.14.1779
rem Сначала отменяем регистрацию текущей библиотеки
regsvr32 /s /u "C:\Program Files\1cv8\%version%\bin\radmin.dll"
rem Регистрируем библиотеку нужной нам версии
regsvr32 /s "C:\Program Files\1cv8\%version%\bin\radmin.dll"
rem Запускаем саму консоль MMC
start mmc "C:\Program Files\1cv8\common\1CV8 Servers (x86-64).msc"

Обратите внимание на флаги команды regsvr32: флаг /s (silent) отключает вывод диалоговых окон об успешной регистрации, чтобы скрипт работал быстро и незаметно для пользователя. Выясним важный нюанс: если у вас установлены серверы разной разрядности (например, старая 8.3.10 — 32-битная, а новая 8.3.14 — 64-битная), то для 32-битной версии путь к файлу radmin.dll будет находиться в папке C:\Program Files (x86)\1cv8\....

Решение 2: Использование службы RAS (Remote Administration Service)

Если нам необходимо управлять сервером без постоянной перерегистрации библиотек, наиболее современным и правильным способом будет использование службы RAS. Эта служба является посредником между кластером и клиентом администрирования. Прелесть RAS в том, что ей практически безразлична разница в минорных релизах платформы в рамках версии 8.3 при использовании утилиты RAC.

Проанализируем процесс настройки RAS:

  1. Найдем в папке bin нужной версии платформы исполняемый файл ras.exe.
  2. Запустим его как службу Windows для каждого кластера, указав отдельный порт. По умолчанию RAS использует порт 1545. Для второго сервера мы можем назначить, например, 1645.
  3. Используем команду для создания службы:
    
    sc create "1C:Enterprise 8.3 Remote Admin 1645" binPath= "\"C:\Program Files\1cv8\8.3.14.1779\bin\ras.exe\" cluster --port=1645 localhost:1640" start= auto
    

После этого мы сможем подключаться к серверу через консольную утилиту rac.exe или использовать сторонние графические интерфейсы для администрирования, которые не зависят от radmin.dll.

Решение 3: Изоляция настроек через переменные окружения

Даже если мы успешно перерегистрировали библиотеку, мы можем столкнуться с проблемой, когда список серверов в консоли перемешивается или выдает ошибки портов. Это происходит потому, что файл appsrvrs.lst (в котором хранится дерево серверов) общий для всех консолей и находится в профиле пользователя %AppData%\Local\1C\1cv8\.

Рассмотрим, как можно изолировать настройки для каждой версии консоли. Мы можем временно подменить переменную окружения APPDATA внутри нашего bat-файла перед запуском консоли. Посмотрим на пример реализации:


@echo off
set version=8.3.10.2466
set APPDATA=C:\1C_Admin_Profiles\v8310
if not exist "%APPDATA%" mkdir "%APPDATA%"
regsvr32 /s "C:\Program Files (x86)\1cv8\%version%\bin\radmin.dll"
start mmc "C:\Program Files (x86)\1cv8\common\1CV8 Servers.msc"

В этом случае консоль версии 8.3.10 создаст свой собственный файл appsrvrs.lst в указанной папке. Мы можем настроить в этой консоли подключение к серверу на порту 1540. Аналогично создаем скрипт для 8.3.14 с другим путем к APPDATA, где будет настроено подключение к порту 1640. Теперь настройки одной версии никогда не перезапишут настройки другой.

Решение 4: Проблемы разрядности MMC (x86 vs x64)

Иногда при попытке запуска 32-битной оснастки на 64-битной операционной системе возникает ошибка инициализации. Выясним причину: по умолчанию команда mmc запускает 64-битную версию консоли. Если вы зарегистрировали 32-битную библиотеку radmin.dll, 64-битная консоль не сможет её загрузить.

Чтобы гарантированно запустить консоль нужной разрядности, следует указывать полный путь к исполняемому файлу mmc.exe с флагом /32. Разберем пример запуска для 32-битной платформы 8.3.10:


%systemroot%\SysWoW64\mmc.exe /32 "C:\Program Files (x86)\1cv8\common\1CV8 Servers.msc"

Использование явного указания пути к SysWoW64 позволяет избежать путаницы и обеспечивает корректную загрузку 32-битных библиотек администрирования.

Итоги и рекомендации

Мы рассмотрели несколько способов запуска консолей для разных релизов 1С. Подведем итог: наиболее стабильным и «чистым» методом является комбинация перерегистрации библиотеки и подмены пути AppData. Это гарантирует, что каждая консоль будет работать со своей версией radmin.dll и иметь свой собственный список серверов с корректно настроенными портами (1540, 1640 и т.д.).

Не забывайте, что все операции по регистрации библиотек (regsvr32) и созданию служб требуют прав Администратора. При использовании bat-файлов запускайте их правой кнопкой мыши от имени администратора, либо настройте соответствующие права в свойствах ярлыка. Это избавит вас от большинства неявных ошибок доступа при работе с реестром Windows.

← На главную