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

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

Каждый разработчик 1С рано или поздно сталкивается с ситуацией, когда отладчик начинает «капризничать»: точки останова (breakpoints) установлены, код гарантированно выполняется, но система упорно их игнорирует. Особенно часто это проявляется при работе с серверными модулями, процедурами обмена данными (например, МенеджерОбменаЧерезУниверсальныйФормат) или фоновыми заданиями. В этой статье мы подробно разберем, почему это происходит и как восстановить работоспособность инструментов отладки.

Шаг 1. Локализация проблемы: клиент или сервер?

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

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

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

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


"C:\Program Files\1cv8\8.3.21.1622\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d "C:\Program Files\1cv8\srvinfo" -debug

После внесения изменений обязательно перезапустим службу 1C:Enterprise 8.3 Server Agent. Помните, что без этого флага серверные модули отлаживаться не будут. В случаях, когда включить отладку на сервере не удается, можно использовать расширение для анализа данных и отладки СКД под пользователем.

Шаг 2. Переход на протокол HTTP-отладки

Традиционная отладка в 1С работает по протоколу TCP. Она часто страдает от блокировок брандмауэрами, антивирусами или нестабильности сетевых соединений. Рассмотрим более современный и надежный способ — HTTP-отладку. Этот метод использует специальный сервис dbgs, который работает гораздо стабильнее в сложных сетевых инфраструктурах.

Для перехода на HTTP-отладку выполним настройку в Конфигураторе:

  1. Зайдем в меню Сервис — Параметры.
  2. Перейдем на вкладку Запуск 1С:Предприятия — Дополнительные.
  3. В разделе Отладка выберем вариант Протокол HTTP.
  4. В поле Адрес отладчика укажем адрес сервера отладки (обычно это адрес локальной машины или сервера 1С).

Если используется публикация на веб-сервере (например, Apache или IIS), необходимо убедиться, что в файле default.vrd разрешена отладка. Проанализируем структуру этого файла и найдем нужную секцию:

<debug enable="true" url="http://server_name/debug_service" />

Шаг 3. Отладка фоновых заданий и обмена данными

Часто проблема «неработающей» отладки связана с тем, что код выполняется в фоновом задании. Модули обмена данными (например, ОбменДаннымиXDTOСервер) часто запускаются системой не в текущем сеансе, а в отдельном фоновом процессе. По умолчанию Конфигуратор не «подцепляет» такие задания.

Разберем, как включить автоматическое подключение:

  1. В Конфигураторе перейдем в меню Отладка — Подключение...
  2. Нажмем кнопку Автоматическое подключение.
  3. Установим флажок Фоновые задания.

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

Шаг 4. Очистка кэша конфигурации

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

Рекомендуется выполнить очистку как на стороне клиента, так и на стороне сервера:

Шаг 5. Сетевые порты и Firewall

Если мы используем стандартную TCP-отладку, важно помнить, что для взаимодействия Конфигуратора и сервера используется диапазон портов (обычно 1560–1591). Проанализируем настройки брандмауэра Windows:

  1. Порты должны быть открыты как на входящие, так и на исходящие соединения.
  2. Если между компьютером разработчика и сервером 1С стоит аппаратный межсетевой экран или используется VPN, необходимо убедиться, что трафик по этим портам не блокируется.
  3. В случае использования dbgs (сервера отладки), по умолчанию используется порт 1562. Убедимся, что он доступен.

Шаг 6. Особенности модулей с паролями

Выясним еще одну неочевидную причину: если вы пытаетесь отладить код в модуле, который закрыт паролем, точки останова работать не будут. Для активации отладки в таких модулях необходимо сначала открыть текст модуля, введя пароль в текущем сеансе Конфигуратора. Только после этого механизм отладки «увидит» внутреннюю структуру процедур и функций.

Подводя итог, можно сказать, что в 90% случаев проблему решает либо добавление флага -debug в реестр сервера, либо включение автоматического подключения фоновых заданий в меню отладки. Если же эти методы не помогают, переход на HTTP-отладку является самым надежным способом забыть о подобных проблемах навсегда.

← На главную