Почему не подключается автоматическая отладка в 1С при нажатии F5 и как это исправить?

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

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

В этой статье мы подробно разберем, почему ломается механизм автоматического подключения отладки в клиент-серверных базах, и рассмотрим пошаговые инструкции по устранению этой проблемы как для стандартного протокола TCP/IP, так и при переходе на современный протокол HTTP.

1. Проверка настроек автоматического подключения в Конфигураторе

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

Выполним проверку по шагам:

  1. Откроем Конфигуратор и перейдем в меню Сервис — Параметры.
  2. В открывшемся окне перейдем на вкладку Запуск 1С:Предприятия, а затем на вкладку Дополнительные.
  3. Убедимся, что установлены два важнейших флажка: «Устанавливать режим разрешения отладки» и «Начинать отладку при запуске». Если хотя бы один из них снят, автоматический запуск отладчика при нажатии F5 работать не будет.
  4. Нажмем кнопку Применить для сохранения настроек.
  5. Теперь перейдем в главное меню Конфигуратора: Отладка — Подключение...
  6. Внизу открывшегося окна нажмем кнопку Настройка автоматического подключения.
  7. В появившемся диалоговом окне обязательно проверим наличие флажка напротив пункта «Клиентские приложения» (а также «Фоновые задания», если планируется их отладка). Если флажок «Клиентские приложения» снят, Конфигуратор не будет автоматически цеплять новые запущенные сеансы.

Если все указанные настройки установлены корректно, но автоматическое подключение по-прежнему не работает, перейдем к анализу сетевого взаимодействия.

2. Настройка брандмауэра на стороне клиентского компьютера (TCP/IP)

При использовании классического протокола TCP/IP механизм работы отладчика устроен следующим образом: Конфигуратор запускает «1С:Предприятие», после чего сервер 1С пытается самостоятельно инициировать обратное сетевое подключение к компьютеру разработчика (клиенту). Для этого используются порт 1550, а также динамический диапазон портов от 1560 до 1591.

Очень часто брандмауэр Windows или локальный антивирус на компьютере разработчика блокирует эти входящие пакеты от сервера. В результате ручное подключение (когда инициатором выступает клиент) работает, а автоматическое (когда сервер пытается «достучаться» до клиента при старте приложения) — блокируется.

Разберем, как решить эту проблему добавлением правил в брандмауэр Windows на клиентской машине:

  1. Откроем Панель управления и перейдем в раздел Брандмауэр защитника Windows (или введем firewall.cpl в строке выполнения Win+R).
  2. В левом меню выберем пункт Дополнительные параметры.
  3. В открывшемся окне монитора брандмауэра выберем Правила для входящих подключений и нажмем Создать правило... в правой панели.
  4. Выберем тип правила Для программы и нажмем Далее.
  5. Укажем путь к исполняемому файлу платформы. Обратите внимание, что указывать нужно файл конкретной версии платформы, под которой вы работаете, например:

    C:\Program Files\1cv8\8.3.22.1709\bin\1cv8.exe

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

Также рекомендуется проверить файл hosts, расположенный по адресу C:\Windows\system32\drivers\etc\hosts на клиентской машине. В нем обязательно должна присутствовать корректная строка сопоставления локального хоста:

127.0.0.1 localhost

3. Переход на современный протокол HTTP-отладки

Если сетевые политики вашей компании жестко блокируют обратные TCP-соединения (например, вы работаете удаленно через VPN или NAT, где сервер физически не может отправить пакет на ваш внутренний IP-адрес), идеальным решением станет переход на протокол отладки по HTTP. Этот протокол доступен начиная с версии платформы 8.3.7.

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

Рассмотрим, как перевести систему на HTTP-отладку:

  1. Убедимся, что на сервере 1С запущена служба отладки. В параметрах запуска службы сервера 1С (в реестре Windows) должен быть указан ключ запуска локального сервера отладки. Пример строки запуска службы в реестре:
    
    "C:\Program Files\1cv8\8.3.22.1709\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d "C:\Program Files\1cv8\srvinfo" -debug -http
    
    Ключ -http указывает серверу использовать HTTP-протокол для отладки.
  2. В Конфигураторе перейдем в меню Сервис — Параметры.
  3. Перейдем на вкладку Отладка.
  4. Переставим переключатель Протокол отладки в положение HTTP.
  5. В поле Адрес отладчика укажем адрес публикации сервера отладки (обычно это имя сервера 1С и порт, например, http://имя_сервера:1550, либо оставим значение по умолчанию, если используется локальная отладка).
  6. Перезапустим Конфигуратор и проверим запуск по F5. В большинстве случаев автоматическое подключение начинает работать мгновенно и без сбоев.

4. Тонкости настройки службы сервера 1С (/debug)

Если автоматическая отладка не работает вообще (даже при ручном подключении список предметов отладки пуст), необходимо удостовериться, что служба сервера 1С:Предприятия действительно запущена в режиме отладки.

Проанализируем параметры запуска службы в реестре Windows:

  1. Откроем редактор реестра (regedit).
  2. Перейдем по пути:

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\1C:Enterprise 8.3 Server Agent...

    (наименование ветки зависит от точной версии вашей платформы).
  3. Найдем параметр ImagePath.
  4. Внимательно изучим строку запуска. В ней должен присутствовать ключ отладки. Обратите внимание на синтаксис: в современных версиях платформы рекомендуется использовать прямой слэш перед ключом: /debug.
  5. Критически важно: перед косой чертой обязательно должен стоять пробел. Если написать строку вида ...-d "C:\Program Files\1cv8\srvinfo"/debug, то параметр сольется с путем к каталогу данных, и сервер запустится в обычном рабочем режиме без поддержки отладки. Правильный вариант выглядит так:
    
    "C:\Program Files\1cv8\8.3.22.1709\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d "C:\Program Files\1cv8\srvinfo" /debug
    
  6. Если вы вносили изменения в реестр, обязательно перезапустите службу 1C:Enterprise 8.3 Server Agent через утилиту управления службами Windows (services.msc).

5. Конфликт портов при одновременной работе нескольких разработчиков

Выясним еще одну неочевидную причину сбоя автоматического подключения. Если на одном сервере 1С одновременно работают и используют TCP-отладку несколько программистов, у них могут конфликтовать порты отладки.

По умолчанию первый подключившийся разработчик занимает порт 1560. Сеанс второго разработчика сервер пытается привязать к следующему свободному порту (например, 1561 или 1562). Однако автоматический механизм подключения на клиентском ПК второго разработчика часто не может корректно определить этот сдвиг портов, из-за чего автоматическая привязка ломается, требуя ручного вмешательства.

В такой ситуации наиболее эффективным решением также является переход на протокол HTTP-отладки, так как он централизованно маршрутизирует все сессии разработчиков через один порт сервера отладки (dbgs) и полностью исключает подобные конфликты портов на клиентских машинах.

← На главную