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

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

Как запустить режим отладки в 1С

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

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

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

Ниже разобраны все основные сценарии: запуск отладки в файловом и серверном варианте, подключение к уже работающему сеансу, отладка фоновых заданий и внешних соединений, а также типичные ошибки, из-за которых отладчик не останавливается на точках останова.

Как работает отладчик 1С и что нужно подготовить

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

Для работы потребуются права на конфигурацию (роль с административными правами или право «Конфигуратор») и актуальная конфигурация базы данных: если конфигурация БД отличается от конфигурации, открытой в конфигураторе, отладчик работать не будет. Перед началом отладки убедитесь, что все изменения сохранены и конфигурация базы данных обновлена (F7).

Запуск отладки в файловой информационной базе

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

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

После запуска установите точку останова: откройте нужный модуль, найдите строку кода и кликните по полю слева от номера строки или нажмите F9. Когда выполнение дойдёт до этой строки, управление передастся в конфигуратор — строка подсветится жёлтой стрелкой.

Порядок запуска отладки в файловой базе
  1. 1
    Откройте базу в конфигураторе и убедитесь, что конфигурация БД обновлена (F7)
  2. 2
    Установите точку останова в нужном модуле клавишей F9
  3. 3
    Нажмите F5 («Отладка — Начать отладку») и выберите тип клиента
  4. 4
    В запустившемся клиенте выполните действие, которое приводит к нужному коду
  5. 5
    Дождитесь остановки на точке и пошагово выполняйте код клавишами F10 (шаг через), F11 (шаг в) и Shift+F11 (шаг из)

Запуск отладки в клиент-серверном варианте

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

Для включения отладки по TCP остановите службу агента сервера 1С и запустите её с ключом -debug. В Windows проще всего отредактировать параметры запуска службы через реестр (ветка с параметрами службы агента сервера, параметр ImagePath) или запустить ragent.exe вручную из командной строки с нужными ключами. После изменения параметров службу нужно перезапустить.

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

Ключ -http включает отладку по протоколу HTTP — современный вариант, который рекомендуется для текущих версий платформы. Отладка по HTTP работает стабильнее через сетевые экраны и является обязательной для отладки веб-клиента и мобильных приложений. Устаревший протокол TCP постепенно вытесняется, поэтому для новых настроек выбирайте HTTP.

Затем в конфигураторе откройте «Сервис — Параметры», вкладку «Отладка» (или «Отладка — Параметры» в зависимости от версии) и установите флажок «Использовать протокол отладки HTTP». Укажите, что искать предметы отладки нужно «на сервере 1С:Предприятия», если отладчик и сервер находятся на разных машинах. Перезапустите конфигуратор после смены протокола.

Подключение к уже работающему сеансу

Часто ошибка воспроизводится только у конкретного пользователя или в уже запущенном сеансе. В этом случае перезапускать клиент не обязательно: сеанс можно подключить к отладчику на лету, если он запущен с разрешением отладки.

Для тонкого и толстого клиента добавьте в ярлык запуска ключ /debug, а для отладки по HTTP — дополнительно адрес отладчика, например: /debug -http -attach /debuggerURL "http://localhost:1550". Проще воспользоваться диалогом «О программе» в клиенте или настройкой в конфигураторе: «Отладка — Подключение — Настройка автоматического подключения», где можно указать, какие типы предметов отладки подключать автоматически.

После настройки откройте «Отладка — Подключение» (Ctrl+Alt+F5): в списке появятся доступные сеансы с указанием пользователя, компьютера и типа приложения. Отметьте нужный и подключите. Если список пуст — проверьте протокол отладки в параметрах конфигуратора и то, что клиент запущен с ключом отладки.

Отладка фоновых заданий, веб-сервисов и внешних соединений

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

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

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

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

Инструменты отладчика: точки останова, просмотр значений, стек вызовов

После остановки на точке доступны основные инструменты анализа. Клавиши F10, F11 и Shift+F11 выполняют код по шагам: через вызов, внутрь вызова и выход из текущей процедуры. F5 продолжает выполнение до следующей точки останова.

Значения переменных смотрите через «Вычислить выражение» (Shift+F9) или табло (Alt+F9): в табло можно добавить несколько выражений, и они будут пересчитываться на каждом шаге. Окно «Стек вызовов» показывает цепочку процедур, которая привела к текущей строке, — это незаменимо, когда метод вызывается из десятка мест.

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

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

Как проверить, что отладка работает

Точка останова в модуле
Норма

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

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

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

Список предметов отладки (Отладка — Подключение)
Норма

Виден сеанс с нужным пользователем и типом приложения

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

Список пуст — неверный протокол отладки или клиент запущен без ключа /debug

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

Выполнение останавливается на серверных процедурах

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

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

Типичные проблемы и их решение

Самая частая жалоба — «точка останова не срабатывает». Причины почти всегда одни и те же: конфигурация базы данных не обновлена после изменения модуля (решение — F7), сервер запущен без ключа -debug, либо код выполняется в процессе, который не подключён к отладчику (фоновое задание, веб-сервис, сеанс другого пользователя).

Вторая группа проблем — отладчик не видит предметы отладки. Проверьте, что в конфигураторе и на сервере выбран один и тот же протокол (HTTP или TCP), что порт отладчика не заблокирован брандмауэром и что версии платформы клиента, сервера и конфигуратора совпадают. После смены протокола конфигуратор нужно перезапустить.

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

Типичные ошибки
01
Редактирование модуля без обновления конфигурации БД — точки останова показываются с вопросительным знаком и не срабатывают
02
Забытый ключ -debug на сервере — серверный код выполняется мимо отладчика, разработчик часами ищет несуществующую причину
03
Постоянно включённая отладка на продуктивном сервере — лишняя нагрузка и замедление работы всех пользователей
04
Отладка без условных точек в большом цикле — сотни ручных нажатий F5 вместо одного условия останова
05
Несовпадение протоколов: сервер с -http, а в конфигураторе выбран TCP — предметы отладки не видны

FAQ

Можно ли отлаживать код без остановки работы пользователей?

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

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

Это означает, что строка недоступна для отладки: чаще всего конфигурация базы данных не обновлена после изменения модуля (нажмите F7), либо модуль компилируется в контексте, который не входит в текущий предмет отладки — например, серверный модуль при отладке только клиентского сеанса.

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

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

Чем отладка по HTTP лучше отладки по TCP?

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

Можно ли отлаживать внешние обработки и отчёты?

Да, но модуль обработки должен быть открыт в конфигураторе через «Файл — Открыть», а сама обработка запущена в сеансе под отладкой. Точки останова ставятся в открытом файле модуля. Если обработка открыта только в режиме «Предприятие», отладчик её не увидит.

Что делать, если отладчик «тормозит» при просмотре больших таблиц значений?

Не раскрывайте крупные коллекции в табло целиком — используйте «Вычислить выражение» с обращением к конкретным строкам по индексу или функции Количество(). Просмотр структуры через «Показать значение в отдельном окне» также работает быстрее, чем разворачивание дерева в табло.

Итог

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

В файловой базе отладка запускается клавишей F5 без дополнительной настройки. В клиент-серверном варианте сначала перезапустите сервер 1С с ключами -debug и -http, затем выберите протокол HTTP в параметрах конфигуратора. Фоновые задания и веб-сервисы подключаются через автоподключение предметов отладки. После завершения работ обязательно отключите отладку на продуктивном сервере.