К статье
Практический материал

Разработка и Конфигурация · 11 мин

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

Разбираем, почему не работает отладка в 1С: точки останова не срабатывают, конфигуратор не подключается, ошибки протокола отладки. Пошаговые решения.

Отладка в 1С перестаёт работать по ограниченному набору причин: отключён режим отладки на сервере, не совпадают версии платформы, заблокированы сетевые порты или предмет отладки просто не подключён к нужному сеансу. Проблема почти всегда диагностируется за несколько минут, если идти от простых проверок к сложным.

Типичные симптомы: точка останова подсвечена, но выполнение не останавливается; конфигуратор сообщает, что предметы отладки не найдены; клиентское приложение запускается, но конфигуратор к нему не подключается; отладка работает на тонком клиенте, но не на сервере. У каждого симптома своя причина и своё решение.

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

Как устроена отладка 1С и где она ломается

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

Отладка возможна в двух вариантах: по протоколу TCP (классический) и по протоколу HTTP (через сервер отладки dbgs с публикацией на веб-сервере). Если выбран HTTP-протокол, но сервер отладки не запущен или не опубликован, точки останова срабатывать не будут. Проверьте, какой протокол указан в настройках конфигуратора: меню «Сервис» → «Параметры» → «Отладка».

Проверьте базовые настройки конфигуратора

Первый шаг — убедиться, что отладка вообще разрешена. Откройте «Сервис» → «Параметры» → вкладка «Отладка» и проверьте выбранный протокол. Для локальной файловой базы подходит TCP. Для клиент-серверной базы, где конфигуратор и сервер находятся в разных сетях, часто требуется HTTP.

Далее откройте «Отладка» → «Подключение» и посмотрите список доступных предметов отладки. Если нужный сеанс там отсутствует — включите флажок автоматического подключения к нужным типам предметов: тонкий клиент, толстый клиент, сервер, фоновые задания, веб-сервисы. Частая ситуация: разработчик отлаживает серверную процедуру, а автоподключение к предмету «Сервер» выключено, поэтому точка останова молча игнорируется.

Также проверьте режим запуска отладки: «Отладка» → «Начать отладку» запускает новый сеанс, а если приложение уже запущено отдельно, его нужно подключить вручную через «Подключение». Точки останова в сеансе, запущенном без отладки и не подключённом к конфигуратору, работать не будут.

Порядок действий
  1. 1
    Откройте «Сервис» → «Параметры» → «Отладка» и проверьте протокол отладки
  2. 2
    Откройте «Отладка» → «Подключение» и включите автоподключение к нужным типам предметов
  3. 3
    Убедитесь, что нужный сеанс виден в списке предметов отладки
  4. 4
    Поставьте точку останова и выполните действие в приложении
  5. 5
    Если предмет не появляется — переходите к проверке сервера и сети

Отладка на сервере: флаг -debug и перезапуск службы

Самая частая причина неработающей серверной отладки — сервер 1С запущен без разрешения отладки. Для TCP-отладки служба агента сервера должна быть запущена с параметром -debug, а для HTTP-отладки дополнительно нужен запущенный сервер отладки dbgs. Без этого серверные процедуры и функции выполняются, но конфигуратор не может их остановить.

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

Важное ограничение: включение отладки на сервере снижает производительность и увеличивает потребление памяти, а также потенциально открывает доступ к данным сеансов тому, кто подключился отладчиком. На продуктивных серверах отладку включают только на время диагностики и затем отключают.

Несовпадение версий платформы и разрядности

Конфигуратор, клиентское приложение и сервер должны иметь совместимые версии платформы. Если на сервере установлена одна версия, а конфигуратор запущен из другой, подключение отладчика может не работать или вести себя непредсказуемо. Проверьте версию сервера в консоли кластера и версию конфигуратора через «Справка» → «О программе».

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

Сеть, брандмауэр и порты отладки

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

Проверьте, что порты, используемые сервером 1С и отладкой, открыты в обе стороны. Если сетевая политика организации запрещает открывать диапазоны портов, практичный выход — перейти на HTTP-протокол отладки, который работает через стандартный веб-сервер (IIS или Apache) и один опубликованный адрес.

Маршрут решения

Как выбрать действие

Файловая база, отладка не работает локальноПроверьте протокол в настройках конфигуратора и автоподключение предметов отладки
Серверные точки останова не срабатывают, клиентские работаютПроверьте параметр -debug у службы агента сервера и перезапустите её
Список предметов отладки пустПроверьте брандмауэр, доступность портов и совпадение версий платформы
Отладка через HTTP не подключаетсяПроверьте, что dbgs запущен и опубликован на веб-сервере, а адрес указан в настройках

Особые случаи: фоновые задания, веб-сервисы, внешние соединения

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

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

Ещё одна ситуация — код выполняется не в том контексте, который вы ожидаете. Например, процедура с директивой &НаСервере исполняется на сервере, и точка останова в ней не сработает, если серверный предмет отладки не подключён, даже если клиентская отладка работает. Проверяйте директивы компиляции модуля и соотносите их с подключёнными предметами.

Типичные ошибки
01
Отладка запущена, но сеанс приложения открыт отдельно и не подключён — точки останова игнорируются
02
Изменён параметр -debug, но служба сервера не перезапущена — настройка не применяется
03
Точка останова стоит в серверной процедуре, а подключён только клиентский предмет отладки
04
В окне подключения снят флажок автоматического подключения нужного типа предметов
05
Конфигуратор запущен из другой версии платформы, чем сервер
06
Ожидание останова в коде, который фактически не выполняется из-за условий в логике программы

Проверка результата и профилактика

После исправления настроек проверьте отладку на простом действии: поставьте точку останова в очевидно выполняемом обработчике, например в «ПриСозданииНаСервере» формы, и откройте эту форму. Если выполнение остановилось и стек вызовов отображается — механизм работает, и дальше можно отлаживать целевой код.

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

Контрольные точки

Как проверить результат

Окно «Отладка» → «Подключение»
Норма

Нужные сеансы видны и отмечены как подключённые

Тревожный признак

Список пуст или нужный сеанс отсутствует

Точка останова в заведомо выполняемом обработчике
Норма

Выполнение останавливается, доступны стек и значения переменных

Тревожный признак

Точка подсвечена, но остановки нет

Серверные процедуры
Норма

Останов происходит и в серверном контексте

Тревожный признак

Останавливается только клиентский код

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

Итог

Что важно запомнить

Отладка 1С ломается на трёх уровнях: настройки конфигуратора (протокол, автоподключение предметов), сервер (флаг -debug, перезапуск службы) и инфраструктура (версии платформы, порты, брандмауэр). Проверяйте их последовательно, а результат подтверждайте остановкой на заведомо выполняемом коде.

Частые вопросы

Точка останова стоит, но выполнение не останавливается. С чего начать?

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

Отладка работает на тонком клиенте, но не на сервере. Почему?

Серверная отладка требует, чтобы служба агента сервера 1С была запущена с параметром -debug. Проверьте параметры запуска службы и перезапустите её. Также убедитесь, что в настройках подключения включён предмет отладки «Сервер».

Можно ли отлаживать код на продуктивном сервере?

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

Чем отличается отладка по TCP и по HTTP?

TCP — классический протокол прямого взаимодействия конфигуратора с отлаживаемыми процессами, требующий открытых сетевых портов. HTTP-отладка идёт через сервер отладки dbgs, опубликованный на веб-сервере, и подходит для сценариев с ограниченной сетью, но требует дополнительной настройки публикации.

Как отладить фоновое задание, которое выполняется за секунды?

Включите автоподключение к предметам отладки типа «Фоновое задание» и временно добавьте в начало метода задания цикл задержки или ожидание, чтобы отладчик успел подключиться. После диагностики задержку нужно убрать.

После обновления платформы отладка перестала работать. Что делать?

Проверьте, что конфигуратор, клиент и сервер используют одну и ту же версию платформы, а при HTTP-отладке — что сервер dbgs запущен из новой версии. Также перепроверьте параметр -debug у службы агента: при обновлении или переустановке параметры запуска службы могут сбрасываться.