Как настроить отладку внешнего COM-соединения в 1С:Предприятие 8?

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

Отладка внешних (COM) соединений в платформе «1С:Предприятие 8» — одна из тех задач, которая часто ставит в тупик даже опытных разработчиков. Ситуация стандартная: в коде прописано подключение, галочки отладки на сервере установлены, но при попытке зайти внутрь вызываемого метода точка останова упорно игнорируется. В этой статье мы подробно разберем, как шаг за шагом настроить среду для успешного дебага внешних соединений, устранить типичные ошибки платформы и заставить отладчик работать стабильно.

Шаг 1. Создание и настройка файла comcntrcfg.xml

Для того чтобы COM-соединение «понимало», что его работу необходимо отлаживать, и знало, куда именно отправлять сигналы отладки, нам потребуется создать специальный файл конфигурации comcntrcfg.xml. Этот файл указывает параметры подключения к отладчику для COM-класса платформы.

Давайте создадим текстовый файл с именем comcntrcfg.xml и поместим в него следующую структуру настроек:


<config xmlns="http://v8.1c.ru/v8/comcntrcfg">
    <debugconfig debug="true" debuggerURL="tcp://localhost:1560"/>
</config>

Рассмотрим подробнее ключевые параметры этой конфигурации:

  1. debug="true" — этот флаг включает сам режим отладки для внешнего соединения.
  2. debuggerURL — указывает адрес отладчика. По умолчанию используется протокол TCP. Значение localhost:1560 подходит в тех случаях, когда база-источник (инициатор соединения) и Конфигуратор запущены на одном и том же локальном компьютере.

Шаг 2. Размещение конфигурационного файла на компьютере

Выясним важную деталь: где именно должен лежать созданный нами файл comcntrcfg.xml? Место его размещения зависит от того, в каком контексте инициализируется COM-соединение.

Файл должен находиться на том компьютере и в каталоге той версии платформы, которая физически создает COM-соединение:

  1. Если COM-соединение создается на стороне клиента (например, вы запускаете обработку обмена в тонком или толстом клиенте на своем рабочем ПК), файл должен лежать на вашем локальном компьютере по пути:
    C:\Program Files\1cv8\Х.Х.Х.Х\bin\conf\comcntrcfg.xml (или в папке Program Files (x86) для 32-разрядной версии платформы).
  2. Если соединение создается на сервере (например, регламентным или фоновым заданием, либо внутри серверного общего модуля), то файл comcntrcfg.xml необходимо скопировать на сервер 1С в аналогичную папку соответствующей версии платформы. Если ваш сервер 1С представляет собой кластер из нескольких рабочих серверов, этот файл должен присутствовать на каждом рабочем сервере кластера.

Шаг 3. Особенности удаленной отладки (localhost vs IP-адрес)

Проанализируем распространенную ошибку, когда при отладке на удаленном сервере в конфигурационном файле оставляют адрес tcp://localhost. Если ваш Конфигуратор запущен на локальном рабочем месте, а COM-соединение инициируется на удаленном сервере 1С, указание localhost заставит сервер искать отладчик на самом себе. Естественно, никакого запущенного Конфигуратора там не окажется, и отладка не сработает.

Для решения этой проблемы вместо localhost укажите сетевое имя или IP-адрес вашего локального компьютера, на котором открыт Конфигуратор:


<config xmlns="http://v8.1c.ru/v8/comcntrcfg">
    <debugconfig debug="true" debuggerURL="tcp://ИмяВашегоКомпьютера:1560"/>
</config>

Чтобы узнать точный адрес и порт отладчика, откройте ваш Конфигуратор, перейдите в меню Отладка — Подключение и нажмите кнопку Настройка. В открывшемся окне в поле «Отладчик» будет указана строка подключения, которую и нужно прописать в файл конфигурации.

Шаг 4. Настройка брандмауэра и сети

Поскольку внешнее соединение пытается «постучаться» к вашему локальному компьютеру, сетевые экраны (брандмауэр Windows или корпоративный файрвол) могут заблокировать этот входящий запрос. Чтобы этого не произошло, выполните следующие настройки:

Шаг 5. Включение режима отладки на сервере 1С

Если инициатором COM-соединения выступает серверный процесс базы-источника, сам сервер «1С:Предприятия» обязательно должен быть запущен в режиме отладки. Проверим параметры службы агента сервера 1С:

  1. Откройте редактор реестра Windows на сервере 1С.
  2. Найдите ветку службы 1С (обычно в разделе HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\1C:Enterprise 8.3...).
  3. В параметре ImagePath в самый конец строки добавьте ключ -debug.
  4. Перезапустите службу агента сервера 1С.

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

Шаг 6. Настройка Конфигуратора и автоматического подключения

Для того чтобы Конфигуратор автоматически перехватывал управление при инициализации внешнего источника, выполните простую настройку в интерфейсе:

  1. В Конфигураторе откройте меню Отладка — Подключение...
  2. В списке «Доступные предметы отладки» найдите ваше внешнее соединение.
  3. Если его там нет или вы хотите, чтобы оно подключалось автоматически, нажмите кнопку Автоматическое подключение...
  4. Установите флажок напротив пункта Внешние соединения (также рекомендуется установить флаг для клиентских и серверных приложений) и нажмите ОК.

Шаг 7. Отладка по протоколу HTTP (для современных платформ)

Если вы работаете на современных версиях платформы «1С:Предприятие 8» (а также в среде разработки 1C:EDT), отладка часто настраивается по HTTP-протоколу. В этом случае формат файла comcntrcfg.xml будет выглядеть следующим образом:


<config xmlns="http://v8.1c.ru/v8/comcntrcfg">
    <debugconfig debug="true" protocol="http" debuggerURL="http://ИмяВашегоКомпьютера:ПортОтладчика"/>
</config>

Обратите внимание, что порт отладчика для HTTP назначается динамически (обычно из диапазона выше 45000). Его значение также необходимо предварительно посмотреть в настройках подключения текущего сеанса Конфигуратора.

Шаг 8. Решение проблемы конфликта версий платформы

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

Выясним причину этой проблемы. При установке нескольких версий платформы 1С на одном сервере или ПК в операционной системе Windows регистрируется только одна библиотека COM-соединителя comcntr.dll. Если базы работают на другой версии платформы, возникает конфликт.

Для решения этой проблемы выполните перерегистрацию библиотеки нужной версии:

  1. Запустите командную строку Windows от имени Администратора.
  2. Выполните команду регистрации библиотеки для той версии платформы, на которой крутятся ваши базы данных: regsvr32 "C:\Program Files\1cv8\8.3.X.YYYY\bin\comcntr.dll"
  3. Убедитесь, что версии платформы у базы-источника и базы-приемника совпадают.
  4. Проверьте строки подключения: они должны совпадать вплоть до каждого символа (регистр букв, использование IP-адреса вместо имени сервера и т.д.). Даже минимальное различие в написании адреса сервера может привести к ошибке авторизации или невозможности подключить отладчик.

Шаг 9. Проверка директив компиляции в коде

Напоследок убедимся, что вызываемый через COM-соединение код в принципе доступен для отладки. Проверьте свойства общих модулей, методы которых вы вызываете:

Применяя эти шаги системно, мы сможем без труда настроить стабильный процесс отладки, быстро локализовать ошибки обмена данными и контролировать правильность передачи объектов между базами «1С:Предприятие 8».

← На главную