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

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

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

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

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

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

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

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

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

Запуск отладчика в файловой базе

Это самый простой сценарий, не требующий настройки сервера. Откройте базу в конфигураторе, затем выберите пункт меню «Отладка» → «Начать отладку» или нажмите клавишу F5. Конфигуратор предложит обновить конфигурацию базы данных, если она изменена, после чего запустит клиентское приложение в режиме отладки.

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

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

Включение отладки на сервере 1С

В клиент-серверном варианте серверный код выполняется в процессах сервера 1С:Предприятия, и по умолчанию отладка для них выключена. Чтобы включить её, нужно запустить агент сервера с ключом отладки. На Windows это делается через реестр или повторную регистрацию службы агента сервера с параметром -debug в строке запуска, на Linux — через параметры скрипта запуска srv1cv8.

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

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

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

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

Точка останова ставится кликом по левому полю редактора модуля напротив нужной строки или клавишей F9. Когда выполнение программы доходит до этой строки, оно приостанавливается, и управление передаётся в конфигуратор. Дальше доступны команды пошагового выполнения: «Шагнуть через» (F10) выполняет текущую строку без входа во вложенные вызовы, «Шагнуть в» (F11) заходит внутрь вызываемой процедуры, «Шагнуть из» выходит из текущей процедуры на уровень выше.

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

Если точка останова отображается как пустой кружок или с предупреждением, значит, отлаживаемый модуль не совпадает с исполняемым кодом. Чаще всего причина в том, что конфигурация базы данных не обновлена либо код выполняется в другом сеансе, к которому отладчик не подключён.
ПЗ
Практическое замечание

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

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

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

Отладка тонкого и веб-клиента

Тонкий клиент и веб-клиент отлаживаются через тот же конфигуратор, но клиентское приложение нужно запустить с признаком отладки. При запуске из конфигуратора (F5) это происходит автоматически. Если клиент запускается отдельно, укажите в командной строке тонкого клиента параметр, включающий режим отладки, либо запустите его из конфигуратора через «Отладка» → «Начало отладки» с выбором нужного клиента.

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

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

Как выбрать способ запуска

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

Типичные ошибки и их устранение

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

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

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

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

Быстрый способ убедиться в корректной настройке — поставить точку останова в заведомо выполняемом месте, например в обработчике команды формы, и выполнить это действие в клиенте. Если выполнение остановилось и конфигуратор показал текущую строку, стек вызовов и значения переменных — отладка настроена правильно.

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

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

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

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

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

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

Пустой или перечёркнутый значок — модуль не совпадает с исполняемым кодом

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

Видны нужные сеансы, включая фоновые задания

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

Список пуст или нет нужного сеанса — отладка на сервере не включена

Окно стека вызовов и табло переменных
Норма

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

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

Поля пустые — выполнение не остановлено, сеанс не подключён

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

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

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

Почему точка останова отображается неактивной?

Чаще всего конфигурация базы данных не обновлена после изменения модуля либо код выполняется в сеансе, к которому отладчик не подключён. Обновите конфигурацию (F7) и проверьте список подключённых предметов отладки.

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

Кратковременно — да, но режим отладки снижает производительность сервера, а точки останова останавливают сеансы пользователей. Включайте её на время диагностики и отключайте после завершения, по возможности используя тестовую копию базы.

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

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

Работает ли отладка в веб-клиенте?

Да, но требуется, чтобы веб-клиент был запущен в режиме отладки, а в настройках конфигуратора был выбран поддерживаемый протокол отладки. Запуск из конфигуратора через F5 настраивает это автоматически.

Что делать, если фоновое задание завершается раньше, чем успеваю подключиться?

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

Итог

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

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