При обновлении технологической платформы 1С с версии 8.2 на 8.3 пользователи часто сталкиваются с тем, что привычные механизмы обмена данными или административные функции перестают работать. Одной из самых специфических ошибок является «Поле объекта не обнаружено (RMngrPortDefault)». Эта проблема особенно актуальна для конфигураций «Управление торговлей 10.3» и других решений на обычных формах, которые активно используют COM-соединение для связи с сервером 1С.
В этой статье мы подробно разберем, почему возникает данная ошибка, проанализируем ситуацию с точки зрения системного администрирования и программирования, а также рассмотрим пошаговые инструкции по ее устранению.
Рассмотрим природу этой ошибки. Свойство RMngrPortDefault (порт менеджера кластера по умолчанию) использовалось в COM-интерфейсах администрирования платформы 1С 8.2. При переходе на платформу 8.3 структура объектов администрирования претерпела изменения. В частности, способ обращения к портам и параметрам менеджера кластера стал иным. Когда конфигурация (например, УТ 10.3), написанная под стандарты 8.2, пытается через V82.COMConnector или даже V83.COMConnector обратиться к свойству, которого в новой библиотеке в явном виде нет, система выдает ошибку.
Ситуация осложняется тем, что при установке 8.3 «поверх» 8.2 в системе могут остаться старые регистрации библиотек, либо новые компоненты могут не иметь достаточных прав в среде Windows. Проанализируем способы решения этой задачи.
Самый первый шаг, который мы должны предпринять — это перерегистрация компоненты COM-соединителя. Важно понимать, что простая регистрация через regsvr32 не всегда срабатывает, если не соблюдена правильная последовательность действий или разрядность системы.
Разберем правильный алгоритм регистрации для 64-битной системы:
Посмотрим на пример команд, которые гарантированно помогут системе «увидеть» нужную библиотеку:
cd "C:\Program Files\1cv83\8.3.16.1148\bin"
regsvr32 comcntr.dll
Если вы используете 32-битную версию сервера или клиента на 64-битной ОС, путь будет другим:
cd "C:\Program Files (x86)\1cv83\8.3.16.1148\bin"
regsvr32 comcntr.dll
Важный момент: если после выполнения этих команд ошибка сохраняется, попробуйте сначала разрегистрировать старую библиотеку командой regsvr32 /u comcntr.dll, а затем зарегистрировать новую повторно.
Если регистрация в реестре прошла успешно, но 1С продолжает выдавать ошибку RMngrPortDefault, проблема может заключаться в правах доступа или в изоляции COM-объекта. Нам необходимо вручную настроить приложение COM+.
Проанализируем шаги настройки:
Win+R, введите dcomcnfg и нажмите Enter.1C_COM_Connector.USR1CV8).comcntr.dll в папке bin вашей версии 8.3.Этот метод позволяет жестко задать контекст выполнения кода, что часто решает проблемы с доступом к внутренним свойствам объектов 1С через COM.
Иногда ошибка вызвана тем, что конфигурация «думает», что она все еще работает на платформе 8.2, и пытается использовать старые программные вызовы. Рассмотрим настройки в конфигураторе:
Откройте свойства корневого элемента конфигурации и найдите раздел «Совместимость». Попробуйте установить следующие значения:
Не использовать или Версия 8.2.13 (в зависимости от конкретного релиза УТ 10.3).Версия 8.2.Как показывает практика, установка режима совместимости 8.2.13 на платформе 8.3.15 и выше помогает обойти некоторые внутренние проверки платформы, которые приводят к ошибке RMngrPortDefault.
Если вы имеете доступ к изменению кода конфигурации, мы рекомендуем проанализировать, в каком именно месте возникает сбой. Скорее всего, это происходит при попытке программного подключения к агенту сервера для получения списка информационных баз или параметров кластера.
Проанализируем пример кода, который может вызывать ошибку:
Соединитель = Новый COMОбъект("V83.COMConnector");
Агент = Соединитель.ConnectAgent(ИмяСервера);
Кластеры = Агент.GetClusters();
Для Каждого Кластер Из Кластеры Цикл
// Вот здесь может возникнуть ошибка, если обращение идет к RMngrPortDefault
ПортМенеджера = Кластер.RMngrPortDefault;
КонецЦикла;
В платформе 8.3 вместо прямого обращения к RMngrPortDefault следует использовать более универсальные методы получения портов. Если конфигурация типовая и на поддержке, убедитесь, что вы обновили ее до последнего доступного релиза, адаптированного под работу с 8.3.
Если все вышеперечисленные методы не помогли, стоит обратить внимание на «мусор», оставшийся от платформы 8.2 в системных папках сервера. При переходе с версии на версию формат файлов в каталоге описания кластера может конфликтовать.
Разберем процедуру очистки:
1C:Enterprise 8.3 Server Agent.C:\Program Files\1cv8\srvinfo).reg_1541 и кэш-файлы (папки с длинными именами-идентификаторами). Внимание: это приведет к тому, что базы придется прописывать в консоли сервера заново, поэтому заранее сохраните список настроек!Часто после того, как сервер заново инициализирует структуры менеджеров кластера под управлением 8.3, обращение через COM-объекты начинает работать корректно, так как исчезают ссылки на несуществующие или устаревшие параметры портов.
Подводя итог, можно сказать, что ошибка «Поле объекта не обнаружено (RMngrPortDefault)» является следствием «переходного периода» между архитектурами 8.2 и 8.3. Совместное использование перерегистрации библиотек, настройки DCOM и проверки режимов совместимости позволяет полностью устранить данную проблему и обеспечить стабильную работу «Управления торговлей 10.3» на современной платформе.