При настройке программного подключения к информационной базе 1С через объект V83.COMConnector специалисты часто сталкиваются с ошибкой «Неверные или отсутствующие параметры соединения с информационной базой». Эта проблема регулярно возникает в инфраструктурах, где на одном физическом или виртуальном сервере создано несколько кластеров 1С, работающих на разных портах.
Разберем, почему стандартная строка соединения вида Srvr="NameServer";Ref="BaseName"; отказывается работать в такой конфигурации и как правильно сформировать параметры подключения.
Проанализируем механику работы службы сервера 1С:Предприятия. Каждый кластер 1С использует несколько разновидностей сетевых портов:
Порт агента сервера (ragent): По умолчанию использует порт 1540 (для второго кластера со смещением часто назначают 1640, 1740 и т. д.).
Порт главного менеджера кластера (rmngr): По умолчанию 1541 (для второго кластера — 1641).
Диапазон портов рабочих процессов (rphost): Например, 1560:1591 или 1660:1691.
Главная причина ошибки заключается в том, что в параметре Srvr строки соединения ошибочно указывают либо только имя сервера без порта, либо порт агента кластера (ragent), тогда как COM-коннектору требуется порт главного менеджера кластера (rmngr).
Посмотрим на пример корректного вызова метода Connect() объекта COMConnector. Для подключения к базе, находящейся на втором кластере, необходимо явно указать порт менеджера кластера через двоеточие после имени сервера:
// Создаем объект коннектора
Коннектор = Новый COMОбъект("V83.COMConnector");
// Формируем строку соединения с указанием порта менеджера кластера
СтрокаСоединения = "Srvr=""NameServer:1641"";Ref=""BaseName"";Usr=""Пользователь"";Pwd=""Пароль"";";
// Выполняем подключение к базе
Подключение = Коннектор.Connect(СтрокаСоединения);
Разберем по шагам порядок действий для определения правильного порта:
rmngr).Srvr через двоеточие после имени или IP-адреса сервера.Если прямое подключение через Connect() вызывает сложности или требуется более точная настройка соединения, проанализируем альтернативные варианты интеграции:
1. Прямое подключение к рабочему процессу
В случаях, когда известен конкретный рабочий процесс кластера, можно использовать метод ConnectWorkingProcess():
Коннектор = Новый COMОбъект("V83.COMConnector");
РабочийПроцесс = Коннектор.ConnectWorkingProcess("tcp://NameServer:1662");
РабочийПроцесс.AddAuthentication("Пользователь", "Пароль");
Подключение = РабочийПроцесс.ConnectData("BaseName");
2. Использование HTTP- и Web-сервисов
В современных конфигурациях всё чаще отказываются от COM-технологий в пользу HTTP-сервисов и Web-сервисов. Публикация информационной базы на веб-сервере (IIS или Apache) полностью исключает зависимость от разрядности приложений (32/64-бит), разности версий платформ и особенностей портов кластера.
3. Проверка дополнительных условий подключения
Если после указания порта менеджера кластера ошибка сохраняется, проверим следующие настройки:
Usr, обладает ролью с разрешенным правом Внешнее соединение.comcntr.dll нужной версии и разрядности платформы в операционной системе.