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

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

Как настроить отладку в 1С: практическое руководство

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

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

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

Материал ориентирован на платформу 1С:Предприятие 8.3. Команды и расположение настроек актуальны для большинства типовых конфигураций и самописных решений.

Что нужно проверить перед началом настройки

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

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

Настройка отладки в файловом варианте

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

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

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

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

Включение отладки на сервере 1С (клиент-серверный вариант)

В клиент-серверном варианте код серверных процедур выполняется в процессе рабочего сервера (rphost), и по умолчанию сервер запущен без поддержки отладки. Чтобы её включить, нужно добавить ключ -debug в параметры запуска службы агента сервера 1С.

На Windows откройте редактор реестра, найдите ветку HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services и раздел службы агента сервера (обычно называется «1C:Enterprise 8.3 Server Agent» с номером версии). В параметре ImagePath добавьте -debug в строку запуска ragent.exe. Для отладки по HTTP (актуально для современных версий платформы) дополнительно укажите -debug -http. После изменения перезапустите службу через оснастку «Службы» или командой net stop / net start.

На Linux отредактируйте скрипт запуска службы (обычно /etc/init.d/srv1cv83 или systemd-юнит), добавив -debug в параметры запуска ragent, и перезапустите сервис. Учтите, что на время перезапуска службы все сеансы пользователей на этом сервере будут разорваны — планируйте операцию вне рабочего времени или предупредите пользователей.

text
"C:\Program Files\1cv8\<версия>\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d "C:\Program Files\1cv8\srvinfo" -debug -http

Отладка по HTTP и TCP: какой протокол выбрать

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

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

Сравнение протоколов отладки

TCP (-debug)

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

HTTP (-debug -http)

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

Точки останова и пошаговое выполнение

Точка останова устанавливается кликом по серому полю слева от строки кода или клавишей F9. Красный кружок означает активную точку; при достижении этой строки выполнение остановится, и управление перейдёт в конфигуратор. Точку можно сделать условной: правый клик по ней, «Условие останова» — и платформа остановится только когда выражение истинно (например, Контрагент = НужныйКонтрагент), что незаменимо при отладке циклов по большим таблицам.

После остановки доступны стандартные команды пошагового выполнения: «Шагнуть через» (F10) выполняет строку без входа в вызываемые процедуры, «Шагнуть в» (F11) входит внутрь вызова, «Шагнуть из» (Shift+F11) довыполняет текущую процедуру до конца. Значения переменных смотрятся через «Вычислить выражение» (Shift+F9), табло (Ctrl+Alt+W) или наведением курсора на переменную.

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

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

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

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

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

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

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

Код выполняется при действии пользователя в тонком или толстом клиентеЗапустите клиент через F5 из конфигуратора или подключите уже запущенный сеанс через «Отладка — Подключение»
Ошибка возникает в регламентном или фоновом заданииВключите автоматическое подключение фоновых заданий в параметрах отладки и запустите задание
Код вызывается через веб-сервис или HTTP-сервисПроверьте, что сервер запущен с -debug -http, протокол в конфигураторе — HTTP, и подключите сеанс обслуживания
Неизвестно, где возникает исключениеВключите «Остановка по ошибке» и воспроизведите ситуацию — платформа остановится в месте ошибки

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

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

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

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

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

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

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

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

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

Список пуст или сеанс не подключается — проверяйте ключ -debug и протокол

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

Красный кружок, при выполнении кода происходит остановка

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

Серый или пустой кружок — конфигурация БД устарела или код не выполняется

Производительность сервера после выключения отладки
Норма

Ключ -debug убран, служба перезапущена, нагрузка вернулась к обычной

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

Ключ остался в параметрах — сервер продолжает работать медленнее

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

Часто задаваемые вопросы

Можно ли отлаживать код без конфигуратора?

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

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

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

Влияет ли включённая отладка на скорость работы сервера?

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

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

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

Что делать, если список предметов отладки пуст?

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

Итог

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

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