Как исправить ошибку «Поле объекта не обнаружено (RMngrPortDefault)» при переходе с 1С 8.2 на 8.3

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

При обновлении технологической платформы 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. Проанализируем способы решения этой задачи.

Решение 1. Корректная регистрация библиотеки comcntr.dll

Самый первый шаг, который мы должны предпринять — это перерегистрация компоненты COM-соединителя. Важно понимать, что простая регистрация через regsvr32 не всегда срабатывает, если не соблюдена правильная последовательность действий или разрядность системы.

Разберем правильный алгоритм регистрации для 64-битной системы:

  1. Запустите командную строку (cmd) от имени Администратора.
  2. Перейдите в каталог с установленной платформой 8.3. Обратите внимание на двойные кавычки, если в пути есть пробелы.
  3. Выполните регистрацию библиотеки.

Посмотрим на пример команд, которые гарантированно помогут системе «увидеть» нужную библиотеку:


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, а затем зарегистрировать новую повторно.

Решение 2. Настройка в консоли «Службы компонентов» (DCOM)

Если регистрация в реестре прошла успешно, но 1С продолжает выдавать ошибку RMngrPortDefault, проблема может заключаться в правах доступа или в изоляции COM-объекта. Нам необходимо вручную настроить приложение COM+.

Проанализируем шаги настройки:

  1. Нажмите Win+R, введите dcomcnfg и нажмите Enter.
  2. В дереве консоли перейдите: «Службы компонентов» — «Компьютеры» — «Мой компьютер» — «Приложения COM+».
  3. Создайте новое приложение (Правой кнопкой -> Создать -> Приложение). Назовите его, например, 1C_COM_Connector.
  4. Установите тип установки «Пустое приложение», а в качестве интерактивного пользователя выберите учетную запись, от имени которой запущен сервер 1С (обычно это USR1CV8).
  5. В созданном приложении найдите папку «Компоненты» и добавьте туда новую компоненту. Выберите «Установка новых компонентов» и укажите путь к файлу comcntr.dll в папке bin вашей версии 8.3.

Этот метод позволяет жестко задать контекст выполнения кода, что часто решает проблемы с доступом к внутренним свойствам объектов 1С через COM.

Решение 3. Проверка режимов совместимости конфигурации

Иногда ошибка вызвана тем, что конфигурация «думает», что она все еще работает на платформе 8.2, и пытается использовать старые программные вызовы. Рассмотрим настройки в конфигураторе:

Откройте свойства корневого элемента конфигурации и найдите раздел «Совместимость». Попробуйте установить следующие значения:

Как показывает практика, установка режима совместимости 8.2.13 на платформе 8.3.15 и выше помогает обойти некоторые внутренние проверки платформы, которые приводят к ошибке RMngrPortDefault.

Решение 4. Поиск и модификация кода (для программистов)

Если вы имеете доступ к изменению кода конфигурации, мы рекомендуем проанализировать, в каком именно месте возникает сбой. Скорее всего, это происходит при попытке программного подключения к агенту сервера для получения списка информационных баз или параметров кластера.

Проанализируем пример кода, который может вызывать ошибку:


Соединитель = Новый COMОбъект("V83.COMConnector");
Агент = Соединитель.ConnectAgent(ИмяСервера);
Кластеры = Агент.GetClusters();
Для Каждого Кластер Из Кластеры Цикл
    // Вот здесь может возникнуть ошибка, если обращение идет к RMngrPortDefault
    ПортМенеджера = Кластер.RMngrPortDefault; 
КонецЦикла;

В платформе 8.3 вместо прямого обращения к RMngrPortDefault следует использовать более универсальные методы получения портов. Если конфигурация типовая и на поддержке, убедитесь, что вы обновили ее до последнего доступного релиза, адаптированного под работу с 8.3.

Решение 5. Очистка серверного кэша и папки srvinfo

Если все вышеперечисленные методы не помогли, стоит обратить внимание на «мусор», оставшийся от платформы 8.2 в системных папках сервера. При переходе с версии на версию формат файлов в каталоге описания кластера может конфликтовать.

Разберем процедуру очистки:

  1. Остановите службу 1C:Enterprise 8.3 Server Agent.
  2. Найдите папку, где хранятся настройки кластера (обычно это C:\Program Files\1cv8\srvinfo).
  3. Удалите или переместите содержимое папок reg_1541 и кэш-файлы (папки с длинными именами-идентификаторами). Внимание: это приведет к тому, что базы придется прописывать в консоли сервера заново, поэтому заранее сохраните список настроек!
  4. Запустите службу сервера.

Часто после того, как сервер заново инициализирует структуры менеджеров кластера под управлением 8.3, обращение через COM-объекты начинает работать корректно, так как исчезают ссылки на несуществующие или устаревшие параметры портов.

Подводя итог, можно сказать, что ошибка «Поле объекта не обнаружено (RMngrPortDefault)» является следствием «переходного периода» между архитектурами 8.2 и 8.3. Совместное использование перерегистрации библиотек, настройки DCOM и проверки режимов совместимости позволяет полностью устранить данную проблему и обеспечить стабильную работу «Управления торговлей 10.3» на современной платформе.

← На главную