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

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

Как подключить отладку в 1С

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

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

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

Какие виды отладки существуют в 1С

Платформа 1С:Предприятие поддерживает два протокола отладки: по TCP/IP (классический) и по HTTP. Классический протокол использует прямое соединение между конфигуратором и отлаживаемым приложением и требует сетевой доступности портов. HTTP-отладка работает через сервер отладки (dbgs.exe) или встроенный механизм сервера 1С и удобнее, когда участники находятся в разных сетях или за NAT.

Также различают отладку клиентского и серверного кода. Клиентский код (модули форм, клиентские общие модули) отлаживается в контексте клиентского приложения. Серверный код выполняется либо в файловом варианте внутри клиентского процесса, либо в клиент-серверном — в рабочем процессе сервера 1С, и для его отладки требуется специальный режим запуска сервера.

Включение отладки в конфигураторе

Базовая настройка выполняется в меню Сервис → Параметры на вкладке Отладка (в новых версиях платформы — Отладка → Настройка). Здесь выбирается протокол отладки — TCP/IP или HTTP, а также устанавливается флажок автоматического подключения к предметам отладки.

Рекомендуется включить автоматическое подключение для всех типов приложений: тонкий клиент, толстый клиент, веб-клиент, фоновые задания и сервер. Тогда при запуске сеанса из конфигуратора (клавиша F5 или «Начать отладку») подключение произойдёт без ручных действий.

Порядок включения отладки в конфигураторе
  1. 1
    Откройте конфигуратор и перейдите в Сервис → Параметры → Отладка.
  2. 2
    Выберите протокол: TCP/IP для работы в локальной сети или HTTP, если клиент и отладчик в разных сетях.
  3. 3
    Установите флажки автоматического подключения для нужных типов приложений.
  4. 4
    Поставьте точку останова в коде (F9 на нужной строке).
  5. 5
    Запустите сеанс через Отладка → Начать отладку (F5).
  6. 6
    Выполните в клиентском приложении действие, вызывающее нужный код, — выполнение остановится на точке останова.

Отладка в файловом режиме

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

Если база уже запущена отдельно (не из конфигуратора), сеанс по умолчанию запрещает отладку. Чтобы разрешить, запустите клиентское приложение с параметром командной строки /debug (для HTTP-отладки добавьте /debug -http). После этого сеанс появится в списке предметов отладки: Отладка → Подключение.

text
"C:\Program Files\1cv8\8.3.22.1750\bin\1cv8c.exe" ENTERPRISE /F"C:\Bases\Trade" /N"Администратор" /debug

Отладка в клиент-серверном режиме

Главная особенность клиент-серверного варианта: серверный код исполняется рабочим процессом сервера 1С, и по умолчанию сервер запрещает отладку. Чтобы разрешить её, службу агента сервера 1С нужно запустить с ключом -debug. Для HTTP-отладки дополнительно указывается -debughttp.

На Windows проще всего изменить параметры запуска службы в реестре: в ветке HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\1C:Enterprise 8.3 Server Agent (имя зависит от версии) в параметре ImagePath добавить ключ -debug в конец строки, затем перезапустить службу. На Linux ключ добавляется в скрипт запуска агента srv1cv83.

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

Настройка отладки по HTTP

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

Сервер отладки запускается командой dbgs --port=1550 (порт можно выбрать другой). В настройках конфигуратора и в параметрах запуска клиентского приложения указывается адрес этого сервера: в конфигураторе — в настройках отладки, в клиенте — параметром /debug -http /debuggerURL http://адрес:1550. Для отладки серверного кода в клиент-серверном режиме адрес сервера отладки дополнительно прописывается в параметрах кластера.

TCP/IP или HTTP

Отладка по TCP/IP

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

Отладка по HTTP

Подходит для разнесённых сетей, удалённой работы и веб-клиента. Требует запуска сервера отладки dbgs и указания его адреса у всех участников.

Подключение предметов отладки вручную

Автоматическое подключение срабатывает не всегда — например, если сеанс запущен другим пользователем, веб-клиентом или фоновым заданием. В этом случае используется ручное подключение: Отладка → Подключение. В открывшемся окне отображаются доступные предметы отладки с указанием типа приложения, пользователя и сеанса.

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

Проверка результата и типичные проблемы

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

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

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

Точка останова в конфигураторе
Норма

Точка сплошная, при выполнении кода происходит остановка

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

Точка с восклицательным знаком — модуль не загружен или код выполняется в другом сеансе

Список предметов отладки
Норма

Сеанс виден и подключается без ошибок

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

Список пуст — отладка не разрешена на клиенте или сервере

Серверный код в клиент-серверном режиме
Норма

Остановка срабатывает в серверных процедурах

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

Останавливается только клиентский код — служба агента запущена без ключа -debug

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

Типичные ошибки
01
Забыли перезапустить службу агента сервера после добавления ключа -debug — серверный код остаётся недоступным для отладки.
02
Ставят точку останова в клиентском модуле, а код реально выполняется на сервере — остановка не происходит.
03
Запускают отладку под пользователем без права «Отладка» — список предметов пуст без видимых ошибок.
04
Оставляют точки останова и режим -debug на продуктивном сервере — блокируются сеансы пользователей и падает производительность.

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

Почему точка останова отображается с восклицательным знаком?

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

Можно ли отлаживать код в веб-клиенте?

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

Как отладить фоновое задание?

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

Отладка по HTTP не подключается — что проверить?

Убедитесь, что сервер отладки dbgs запущен и доступен по сети (проверьте порт через telnet или браузер), что в конфигураторе и клиентском приложении указан один и тот же адрес сервера отладки, и что у клиента есть параметр /debug -http. Для серверного кода проверьте ключ -debughttp у агента сервера.

Безопасно ли включать отладку на рабочем сервере?

Режим -debug снижает производительность рабочих процессов, а сработавшая точка останова блокирует сеанс пользователя до продолжения выполнения. На продуктивном сервере отладку включают только на короткое время диагностики и отключают сразу после. Предпочтительный вариант — воспроизвести проблему на копии базы.

Итог

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

В файловом режиме отладка включается прямо из конфигуратора, в клиент-серверном требуется запуск агента сервера с ключом -debug. Для разнесённых сетей используйте HTTP-отладку через сервер dbgs. Проверяйте право «Отладка», совпадение протоколов и подключайте нужные предметы отладки вручную, если автоподключение не сработало.