Разработка и Конфигурация · 11 мин
Почему не работает отладка в 1С и как это исправить
Разбираем, почему не работает отладка в 1С: точки останова не срабатывают, конфигуратор не подключается, ошибки протокола отладки. Пошаговые решения.
Отладка в 1С перестаёт работать по ограниченному набору причин: отключён режим отладки на сервере, не совпадают версии платформы, заблокированы сетевые порты или предмет отладки просто не подключён к нужному сеансу. Проблема почти всегда диагностируется за несколько минут, если идти от простых проверок к сложным.
Типичные симптомы: точка останова подсвечена, но выполнение не останавливается; конфигуратор сообщает, что предметы отладки не найдены; клиентское приложение запускается, но конфигуратор к нему не подключается; отладка работает на тонком клиенте, но не на сервере. У каждого симптома своя причина и своё решение.
Важно понимать архитектуру: при клиент-серверном режиме отладка идёт через специальный протокол между конфигуратором, сервером 1С и клиентским приложением. Разрыв на любом из этих звеньев делает отладку невозможной, даже если сам код исправен и конфигурация корректна.
Как устроена отладка 1С и где она ломается
В файловом режиме отладка происходит локально: конфигуратор напрямую взаимодействует с клиентским приложением. Здесь сбоев меньше, и проблемы обычно сводятся к настройкам запуска. В клиент-серверном режиме добавляется сервер 1С:Предприятия, и именно он чаще всего становится источником проблем.
Отладка возможна в двух вариантах: по протоколу TCP (классический) и по протоколу HTTP (через сервер отладки dbgs с публикацией на веб-сервере). Если выбран HTTP-протокол, но сервер отладки не запущен или не опубликован, точки останова срабатывать не будут. Проверьте, какой протокол указан в настройках конфигуратора: меню «Сервис» → «Параметры» → «Отладка».
Проверьте базовые настройки конфигуратора
Первый шаг — убедиться, что отладка вообще разрешена. Откройте «Сервис» → «Параметры» → вкладка «Отладка» и проверьте выбранный протокол. Для локальной файловой базы подходит TCP. Для клиент-серверной базы, где конфигуратор и сервер находятся в разных сетях, часто требуется HTTP.
Далее откройте «Отладка» → «Подключение» и посмотрите список доступных предметов отладки. Если нужный сеанс там отсутствует — включите флажок автоматического подключения к нужным типам предметов: тонкий клиент, толстый клиент, сервер, фоновые задания, веб-сервисы. Частая ситуация: разработчик отлаживает серверную процедуру, а автоподключение к предмету «Сервер» выключено, поэтому точка останова молча игнорируется.
Также проверьте режим запуска отладки: «Отладка» → «Начать отладку» запускает новый сеанс, а если приложение уже запущено отдельно, его нужно подключить вручную через «Подключение». Точки останова в сеансе, запущенном без отладки и не подключённом к конфигуратору, работать не будут.
- 1Откройте «Сервис» → «Параметры» → «Отладка» и проверьте протокол отладки
- 2Откройте «Отладка» → «Подключение» и включите автоподключение к нужным типам предметов
- 3Убедитесь, что нужный сеанс виден в списке предметов отладки
- 4Поставьте точку останова и выполните действие в приложении
- 5Если предмет не появляется — переходите к проверке сервера и сети
Отладка на сервере: флаг -debug и перезапуск службы
Самая частая причина неработающей серверной отладки — сервер 1С запущен без разрешения отладки. Для TCP-отладки служба агента сервера должна быть запущена с параметром -debug, а для HTTP-отладки дополнительно нужен запущенный сервер отладки dbgs. Без этого серверные процедуры и функции выполняются, но конфигуратор не может их остановить.
Проверьте параметры запуска службы «Агент сервера 1С:Предприятия». В Windows это делается через реестр (параметр ImagePath соответствующей службы) или через оснастку служб, если параметры заданы там. После изменения параметров службу нужно перезапустить — при этом активные сеансы пользователей прервутся, поэтому делайте это вне рабочего времени или предупредите пользователей.
Важное ограничение: включение отладки на сервере снижает производительность и увеличивает потребление памяти, а также потенциально открывает доступ к данным сеансов тому, кто подключился отладчиком. На продуктивных серверах отладку включают только на время диагностики и затем отключают.
Несовпадение версий платформы и разрядности
Конфигуратор, клиентское приложение и сервер должны иметь совместимые версии платформы. Если на сервере установлена одна версия, а конфигуратор запущен из другой, подключение отладчика может не работать или вести себя непредсказуемо. Проверьте версию сервера в консоли кластера и версию конфигуратора через «Справка» → «О программе».
Отдельный случай — несколько установленных версий платформы на одной машине. Ярлык конфигуратора может запускать старую версию, а база работать на новой. В свойствах информационной базы в списке баз можно явно указать нужную версию платформы — это устраняет неоднозначность.
Сеть, брандмауэр и порты отладки
При TCP-отладке конфигуратор и отлаживаемые процессы обмениваются данными по сети через диапазон портов. Если между машиной разработчика и сервером есть брандмауэр, который блокирует эти порты, предметы отладки не появятся в списке подключения. Характерный признак: клиентская часть отлаживается, а серверная — нет, либо список предметов пуст.
Проверьте, что порты, используемые сервером 1С и отладкой, открыты в обе стороны. Если сетевая политика организации запрещает открывать диапазоны портов, практичный выход — перейти на HTTP-протокол отладки, который работает через стандартный веб-сервер (IIS или Apache) и один опубликованный адрес.
Как выбрать действие
Особые случаи: фоновые задания, веб-сервисы, внешние соединения
Фоновые задания выполняются в отдельных сеансах и не подключаются к отладке автоматически, если это не разрешено в настройках подключения. Включите соответствующий тип предмета в окне «Подключение» и перезапустите задание. Учтите: короткоживущее задание может завершиться раньше, чем отладчик успеет подключиться — для диагностики временно добавьте задержку в начало метода.
Веб-сервисы и HTTP-сервисы отлаживаются аналогично: их вызовы исполняются в сеансах на сервере, и эти сеансы нужно подключить как предметы отладки. При HTTP-протоколе отладки убедитесь, что публикация сервисов и публикация сервера отладки настроены на одном веб-сервере согласованно.
Ещё одна ситуация — код выполняется не в том контексте, который вы ожидаете. Например, процедура с директивой &НаСервере исполняется на сервере, и точка останова в ней не сработает, если серверный предмет отладки не подключён, даже если клиентская отладка работает. Проверяйте директивы компиляции модуля и соотносите их с подключёнными предметами.
Проверка результата и профилактика
После исправления настроек проверьте отладку на простом действии: поставьте точку останова в очевидно выполняемом обработчике, например в «ПриСозданииНаСервере» формы, и откройте эту форму. Если выполнение остановилось и стек вызовов отображается — механизм работает, и дальше можно отлаживать целевой код.
Если точка останова по-прежнему не срабатывает, убедитесь, что код вообще выполняется: добавьте временный вывод в журнал регистрации или сообщение пользователю. Бывает, что ветка кода недостижима из-за условий, и отладчик здесь ни при чём.
Как проверить результат
Нужные сеансы видны и отмечены как подключённые
Список пуст или нужный сеанс отсутствует
Выполнение останавливается, доступны стек и значения переменных
Точка подсвечена, но остановки нет
Останов происходит и в серверном контексте
Останавливается только клиентский код
Для профилактики зафиксируйте рабочую конфигурацию: версию платформы, протокол отладки, параметры службы сервера. При обновлении платформы или переезде сервера проверяйте эти пункты в первую очередь — большинство «внезапно сломавшихся» отладок связано именно с такими изменениями инфраструктуры.
Что важно запомнить
Отладка 1С ломается на трёх уровнях: настройки конфигуратора (протокол, автоподключение предметов), сервер (флаг -debug, перезапуск службы) и инфраструктура (версии платформы, порты, брандмауэр). Проверяйте их последовательно, а результат подтверждайте остановкой на заведомо выполняемом коде.
Частые вопросы
Точка останова стоит, но выполнение не останавливается. С чего начать?
Сначала убедитесь, что код действительно выполняется — добавьте временное сообщение или запись в журнал регистрации. Затем проверьте, подключён ли нужный тип предмета отладки (клиент, сервер, фоновое задание) в окне «Отладка» → «Подключение». Чаще всего причина именно в неподключённом предмете.
Отладка работает на тонком клиенте, но не на сервере. Почему?
Серверная отладка требует, чтобы служба агента сервера 1С была запущена с параметром -debug. Проверьте параметры запуска службы и перезапустите её. Также убедитесь, что в настройках подключения включён предмет отладки «Сервер».
Можно ли отлаживать код на продуктивном сервере?
Технически можно, но делать это постоянно не рекомендуется: режим отладки снижает производительность и даёт подключённому отладчику доступ к данным сеансов. Безопаснее воспроизвести проблему на копии базы, а на продуктиве ограничиться журналом регистрации и технологическим журналом.
Чем отличается отладка по TCP и по HTTP?
TCP — классический протокол прямого взаимодействия конфигуратора с отлаживаемыми процессами, требующий открытых сетевых портов. HTTP-отладка идёт через сервер отладки dbgs, опубликованный на веб-сервере, и подходит для сценариев с ограниченной сетью, но требует дополнительной настройки публикации.
Как отладить фоновое задание, которое выполняется за секунды?
Включите автоподключение к предметам отладки типа «Фоновое задание» и временно добавьте в начало метода задания цикл задержки или ожидание, чтобы отладчик успел подключиться. После диагностики задержку нужно убрать.
После обновления платформы отладка перестала работать. Что делать?
Проверьте, что конфигуратор, клиент и сервер используют одну и ту же версию платформы, а при HTTP-отладке — что сервер dbgs запущен из новой версии. Также перепроверьте параметр -debug у службы агента: при обновлении или переустановке параметры запуска службы могут сбрасываться.