Почему удаленная отладка обычного приложения 1С:Предприятия в клиент-серверном варианте не работает по TCP/IP?

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

При разработке и сопровождении информационных систем на платформе 1С:Предприятие часто возникает необходимость в удаленной отладке кода. Ситуация, когда отладка корректно функционирует при работе через RDP-сессию непосредственно на сервере, но отказывается работать при попытке подключения с удаленного рабочего места по сети, является достаточно распространенной и требует системного подхода к диагностике. В этой статье мы подробно разберем возможные причины такого поведения и предложим пошаговые инструкции для решения проблемы.

Мы выясним, почему игнорируются точки останова, когда все, казалось бы, настроено правильно, и как добиться стабильной работы отладчика 1С в распределенной среде.

1. Комплексная проверка и настройка сетевой безопасности (брандмауэры и антивирусы)

Первое, на что мы обращаем внимание при проблемах с сетевым взаимодействием, — это средства сетевой безопасности. Даже если вы считаете, что брандмауэр или антивирус отключены, настоятельно рекомендуем выполнить тщательную проверку и, при необходимости, создать явные разрешающие правила.

  1. Проверка состояния брандмауэра: Убедимся, что брандмауэр Windows (или любой сторонний фаервол) действительно отключен как на сервере 1С, так и на клиентском компьютере, с которого производится отладка. Если полное отключение невозможно или нежелательно по соображениям безопасности, мы перейдем к настройке разрешающих правил. Важно помнить, что отключать брандмауэр нужно именно на сервере 1С, а не только на сервере RDP, если это разные машины.
  2. Настройка правил для портов: Отладчик 1С использует несколько диапазонов портов для своего функционирования. Мы должны убедиться, что все они открыты и доступны для входящих и исходящих соединений как на сервере 1С, так и на клиентском компьютере.
    • На сервере 1С:
      • 1540: Основной порт агента сервера 1С (ragent.exe).
      • 1541: Порт менеджера кластера 1С (rmngr.exe).
      • 1550: Этот порт является критически важным для сервера отладки (по умолчанию) в клиент-серверном варианте при использовании протокола TCP/IP. Без него отладка не будет работать.
      • 1560-1591: Диапазон портов, используемый для рабочих процессов 1С и непосредственно отладчиком.
    • На клиентском компьютере (где запущен Конфигуратор для отладки):
      • Диапазон портов 1560-1591: Эти порты должны быть разрешены как для TCP, так и для UDP соединений, чтобы отладчик мог взаимодействовать с сервером.

    Если стандартный диапазон портов 1560-1591 занят или недостаточен, мы можем настроить дополнительный диапазон в файле debugcfg.xml, расположенном в каталоге bin установленной платформы 1С. Это может помочь избежать ошибки "Для выполнения отладки необходимо включить поддержку сетевого протокола TCP/IP".

  3. Антивирусное программное обеспечение: Временно отключим антивирусное ПО на обеих машинах (сервере и клиенте) для исключения его влияния на сетевое взаимодействие. Иногда антивирусы могут блокировать соединения, даже если брандмауэр Windows отключен.

2. Проверка и корректная настройка режима отладки сервера 1С:Предприятия

Сервер 1С должен быть запущен в режиме отладки, чтобы Конфигуратор мог к нему подключиться. Мы проанализируем, как это проверить и настроить.

  1. Параметр -debug для ragent.exe: Убедимся, что служба "Агент сервера 1С:Предприятия" запущена с параметром -debug. Автор темы предоставил пример запуска:
    
    "C:\Program Files\1cv8\8.3.22.1709\bin\ragent.exe" -instsrvc -debug -http -tcp -regport 1541 -port 1540 -range 1560:1591 -d "C:\Program Files\1cv8\srvinfo"
    

    Важно не просто добавить этот параметр, но и убедиться, что он был применен. Если вы добавляли его в реестр (например, в ветку HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\1C:Enterprise 8.3 Server Agent (x86-64) в значение ImagePath), после этого необходимо обязательно перезапустить службу "Агент сервера 1С:Предприятия" или перезагрузить сервер. Некорректный синтаксис (например, использование /debug вместо -debug или наоборот) также может быть причиной проблемы.

  2. Файл debugcfg.xml: В некоторых случаях, особенно если отладка не подключается, но явных ошибок нет, мы можем проверить или создать файл debugcfg.xml в каталоге bin платформы 1С на сервере. Он позволяет настроить специфические параметры отладки, включая дополнительный диапазон портов. Например, если основной диапазон 1560-1591 занят, мы можем добавить:
    
    <?xml version="1.0" encoding="UTF-8"?>
    <debug-config xmlns="http://v8.1c.ru/platform/debug-config">
        <debug-range-start>1600</debug-range-start>
        <debug-range-end>1631</debug-range-end>
    </debug-config>
    

    После изменения этого файла также потребуется перезапустить службу сервера 1С.

3. Настройки отладки на стороне клиента (Конфигуратора 1С)

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

  1. Окно "Отладка" – "Подключение":
    • В Конфигураторе 1С перейдем в меню "Отладка" -> "Подключение".
    • Убедимся, что включена опция "Автоматическое подключение".
    • Если в списке "Предметы отладки" (как в сообщении 6, где "предметы отладки пусто") нет активных сеансов, попробуем явно указать IP-адрес или сетевое имя сервера 1С для поиска предметов отладки. Это можно сделать, нажав кнопку "Настройки" или "Добавить" в этом окне.
    • Если указание IP-адреса помогает, а сетевое имя нет, это указывает на проблемы с разрешением имен. В таком случае мы можем добавить запись в файл hosts на клиентском компьютере (обычно C:\Windows\System32\drivers\etc\hosts), сопоставив IP-адрес сервера с его сетевым именем. Пример записи: 192.168.1.100 My1CServer

      где 192.168.1.100 - IP-адрес сервера 1С, а My1CServer - его сетевое имя.

  2. Настройки отладки для клиентских сеансов в режиме "1С:Предприятие":
    • Для отладки клиентских сеансов, запущенных в режиме "1С:Предприятие", мы должны убедиться, что отладка разрешена для текущего сеанса. Это можно настроить в параметрах запуска клиентского приложения (в стартере 1С, кнопка "Изменить", затем "Параметры запуска 1С:Предприятия") или через командную строку. Убедимся, что установлена опция "Отладка в текущем сеансе разрешена" с протоколом TCP/IP.
    • Если вы запускаете клиентское приложение через командную строку, убедитесь, что используется параметр /debug.

4. Проверка на соответствие версий платформы 1С

Одним из частых источников проблем при работе с 1С является несоответствие версий. Мы тщательно проверим версии платформы.

  1. Совпадение версий клиента и сервера: Крайне важно, чтобы версия платформы 1С на клиентском компьютере (Конфигуратор, клиентское приложение) полностью совпадала с версией платформы, установленной на сервере 1С. Даже минорные отличия (например, 8.3.22.1709 на сервере и 8.3.22.1710 на клиенте) могут привести к непредсказуемому поведению отладчика или его полной неработоспособности. Мы должны обновить или установить одинаковые версии платформы на всех участвующих машинах.

5. Права пользователя информационной базы

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

  1. Права на отладку: Убедимся, что у пользователя, под которым вы подключаетесь к информационной базе 1С для отладки, есть необходимые права на выполнение операций отладки. В конфигурации это обычно регулируется ролью "Отладка" или включением соответствующих прав в другие роли. Без этих прав сервер 1С может отказать в подключении отладчика к сеансу.

6. Проверка сетевой связности и разрешение имен

Общая сетевая связность между клиентским компьютером и сервером 1С является фундаментом для удаленной отладки. Мы проанализируем основные методы проверки.

  1. Проверка пингом: Выполним команду ping с клиентского компьютера на IP-адрес и сетевое имя сервера 1С, чтобы убедиться в базовой сетевой доступности.
    
    ping <IP-адрес сервера>
    ping <Сетевое_Имя_Сервера>
    

    Если пинг по IP-адресу проходит, а по имени нет, это указывает на проблемы с DNS или разрешением имен, что может быть устранено добавлением записи в файл hosts, как мы уже упоминали.

  2. Проверка Telnet/Portqry: Используем утилиту telnet (или Portqry, если Telnet недоступен) для проверки доступности конкретных портов сервера 1С с клиентского компьютера.
    
    telnet <IP-адрес сервера> 1540
    telnet <IP-адрес сервера> 1541
    telnet <IP-адрес сервера> 1550
    telnet <IP-адрес сервера> 1560
    

    Если соединение устанавливается (черный экран Telnet), значит, порт открыт и доступен. Если нет (ошибка "Could not open connection to the host"), это указывает на блокировку порта брандмауэром или его недоступность по другим сетевым причинам.

  3. Качество сетевого соединения: Убедимся в стабильности и скорости сетевого соединения между клиентом и сервером. Нестабильная связь или высокие задержки могут приводить к таймаутам и невозможности установить отладочное соединение.

7. Чувствительность к регистру в пути к информационной базе

Неочевидная, но иногда критичная деталь, касающаяся регистрации информационной базы.

  1. Единообразие регистра: Удостоверимся, что путь к информационной базе 1С в стартере на клиентском компьютере прописан в том же регистре букв, как она зарегистрирована на сервере 1С. Например, если на сервере база зарегистрирована как MY_DB, то и в стартере клиента должно быть MY_DB, а не my_db или My_Db. Платформа 1С может быть чувствительна к регистру в некоторых случаях, что может повлиять на успешное подключение отладчика.

Проанализировав все эти шаги и внимательно проверив каждую из настроек, мы с высокой вероятностью сможем выявить и устранить причину неработоспособности удаленной отладки в 1С:Предприятии. Главное — это методичный подход и пошаговая проверка каждого элемента системы.

← На главную