Разработка и Конфигурация · 10 мин
Отладчик 1С 8.3: как включить и начать отладку
Как включить отладчик в 1С 8.3: запуск конфигуратора в режиме отладки, настройка сервера 1С, отладка по HTTP, точки останова и типичные ошибки подключения.
Отладчик в 1С 8.3 — встроенный инструмент конфигуратора, который позволяет выполнять код по шагам, смотреть значения переменных и находить ошибки в прикладных решениях. Чтобы отладка заработала, недостаточно просто поставить точку останова: нужно правильно запустить сеанс, а в клиент-серверном варианте — дополнительно включить отладку на сервере 1С. Именно с серверным режимом связано большинство проблем, когда точки останова «не срабатывают».
Способ включения отладчика зависит от режима работы информационной базы: файловый вариант настраивается за минуту, клиент-серверный требует перезапуска службы агента сервера с ключом отладки. Ниже разобраны оба сценария, а также отладка по HTTP, тонкого и веб-клиента, внешних соединений и фоновых заданий.
Как включить отладку в файловой информационной базе
Файловый вариант — самый простой случай. Откройте конфигуратор нужной базы, затем в меню выберите «Отладка → Начать отладку» или нажмите клавишу F5. Конфигуратор запустит сеанс 1С:Предприятия в режиме отладки и автоматически подключит к нему отладчик.
Если сеанс уже запущен обычным способом, подключите его вручную: «Отладка → Подключение…». В списке появятся доступные предметы отладки — выберите нужный сеанс и нажмите «Подключить». После этого точки останова в коде начнут срабатывать при выполнении соответствующих процедур.
Проверить, что отладка активна, просто: поставьте точку останова (клик по полосе слева от строки кода или F9) в любой процедуре, которая точно выполняется, например в обработчике нажатия кнопки. Если при действии в режиме 1С:Предприятия конфигуратор останавливается на этой строке — отладчик работает.
- 1Откройте базу в конфигураторе
- 2Нажмите F5 или «Отладка → Начать отладку»
- 3Поставьте точку останова (F9) в нужной процедуре
- 4Выполните действие в режиме 1С:Предприятия и убедитесь, что выполнение остановилось
Как включить отладку на сервере 1С 8.3
В клиент-серверном варианте код, помеченный директивами «&НаСервере», выполняется в рабочих процессах сервера 1С. По умолчанию сервер запущен без поддержки отладки, поэтому отладчик не видит серверные вызовы. Чтобы это исправить, службу агента сервера нужно перезапустить с ключом отладки.
На сервере под Windows откройте «Пуск → Выполнить» (Win+R) и выполните команду остановки и запуска агента с параметром -debug. Путь к исполняемому файлу зависит от версии платформы и разрядности:
net stop "Агент сервера 1С:Предприятия 8.3"
"C:\Program Files\1cv8\8.3.xx.xxxx\bin\ragent.exe" -debug
Либо остановите службу через оснастку «Службы» и запустите ragent.exe с ключом -debug из командной строки. Для постоянной работы с отладкой можно изменить параметры запуска службы в реестре (ветка службы агента сервера, параметр ImagePath), добавив -debug в строку запуска, после чего перезапустить службу.
Отладка по протоколу HTTP
Начиная с версии 8.3.7 платформа поддерживает отладку по HTTP в дополнение к классическому протоколу TCP. HTTP-отладку нужно дополнительно включить: в параметрах кластера (консоль администрирования сервера, свойства кластера) установите флаг «Отладка по HTTP» или укажите соответствующий параметр при запуске. Тип протокола выбирается в конфигураторе: «Сервис → Параметры → Отладка» — переключатель «Протокол отладки». HTTP-вариант полезен, когда между разработчиком и сервером есть ограничения сети: он работает через стандартный порт и легче проходит через прокси и межсетевые экраны.
Настройка автоматического подключения предметов отладки
Чтобы не подключать сеансы вручную каждый раз, настройте автоматическое подключение. Откройте «Сервис → Параметры → Отладка» и в группе «Автоматическое подключение» отметьте нужные типы предметов отладки: толстый клиент, тонкий клиент, веб-клиент, сервер, фоновые задания, внешние соединения, Web-сервисы, HTTP-сервисы.
Эта настройка особенно важна для отладки фоновых заданий и серверных вызовов: без неё отладчик подключается только к клиентскому приложению, и серверный код остаётся «невидимым». После включения автоподключения при запуске отладки конфигуратор сам подхватывает все новые процессы выбранных типов.
Имейте в виду: автоматическое подключение всех типов предметов на загруженном сервере может захватить чужие сеансы, если отладка включена на общем тестовом стенде. Ограничивайте список теми типами, которые действительно нужны для текущей задачи.
Отладка тонкого клиента, веб-клиента и внешних соединений
Тонкий клиент отлаживается так же, как толстый: главное, чтобы сеанс был запущен из-под отладки или подключён вручную через «Отладка → Подключение». Если тонкий клиент работает через веб-сервер, убедитесь, что в конфигураторе включено автоматическое подключение тонкого клиента.
Веб-клиент требует отдельного условия: отладка возможна только при работе через браузер с включённым режимом отладки на стороне веб-сервера. В файле default.vrd публикации должен быть разрешён режим отладки (атрибут debug элемента point), а в конфигураторе включено автоподключение веб-клиента. Практически проще всего отлаживать веб-клиент в браузере, запустив базу через веб-сервер с корректно настроенной публикацией.
Внешние соединения (COM, Automation) и вызовы Web/HTTP-сервисов отлаживаются через включение соответствующих типов в автоподключении. Код сервиса выполняется на сервере, поэтому сервер также должен быть запущен с ключом -debug.
Как выбрать сценарий
Основные приёмы работы в отладчике
После остановки на точке доступны стандартные команды: «Шаг через» (F10) — выполнение строки без входа в вызовы, «Шаг в» (F11) — вход внутрь процедуры, «Шаг из» (Shift+F11) — выход из текущей процедуры, «Продолжить» (F5) — выполнение до следующей точки останова.
Значения переменных смотрите через всплывающую подсказку при наведении курсора, через табло («Отладка → Табло», Shift+F9) или через «Вычислить выражение» (Shift+F9 в момент остановки). Стек вызовов («Отладка → Стек вызовов») показывает цепочку процедур, приведшую к текущей точке, — это удобно, когда ошибка возникает глубоко внутри общих модулей.
Используйте условные точки останова: правый клик по точке → «Условие останова». Например, в цикле по тысяче строк останов можно настроить только при нужном значении счётчика или конкретном контрагенте, не проходя все итерации вручную.
Частая ситуация: точка останова стоит, код точно выполняется, но останова нет. В 9 из 10 случаев причина в том, что процедура выполняется на сервере, а сервер запущен без ключа -debug либо в конфигураторе не включено автоподключение сервера. Проверяйте это в первую очередь.
Почему отладчик не работает: типичные проблемы
Если точки останова игнорируются, идите по списку причин. Первая — сервер без ключа -debug: серверный код в этом случае недоступен отладчику. Вторая — не подключён нужный предмет отладки: откройте «Отладка → Подключение» и проверьте, виден ли ваш сеанс или фоновое задание в списке.
Третья причина — несовпадение конфигурации: код в конфигураторе отличается от конфигурации базы данных. Обновите конфигурацию базы данных (F7 в окне конфигурации) и перезапустите отладку. Четвёртая — код выполняется в другом сеансе или под другим пользователем, чей сеанс не подключён.
Отдельный случай — динамическое обновление конфигурации: после него сеансы могут работать со старой версией кода, и точки останова ставятся в строки, которые фактически не выполняются. Перезапустите сеанс после обновления.
Ограничения и безопасная работа
Отладчик не останавливает код, выполняемый в транзакциях с некоторыми ограничениями платформы, а остановка посередине транзакции на сервере может привести к тайм-ауту и откату. Это нормально для тестовой базы, но на рабочей базе может прервать реальные операции пользователей — отлаживайтесь на копии.
Отладка кода, работающего с правами в привилегированном режиме, требует, чтобы у пользователя, запускающего отладку, было право «Отладка» в конфигурации. Если права нет, сеанс не появится в списке предметов отладки. Проверьте роли пользователя в конфигураторе: «Администрирование → Пользователи» в режиме предприятия или настройки ролей в конфигурации.
На сервере Linux агент запускается с тем же ключом -debug, но управление службой выполняется через systemd или скрипты init.d — принцип тот же: остановить службу, добавить ключ, запустить снова.
Что важно запомнить
В файловой базе достаточно нажать F5 в конфигураторе. В клиент-серверном варианте ключевой шаг — запуск агента сервера с ключом -debug и включение автоподключения нужных предметов отладки. Не оставляйте режим отладки на продуктивном сервере и отлаживайтесь на копии базы.
Частые вопросы
Точка останова не срабатывает, хотя код выполняется. Что делать?
Проверьте три вещи: запущен ли сервер с ключом -debug (для клиент-серверного варианта), подключён ли нужный предмет отладки через «Отладка → Подключение», совпадает ли текст модуля в конфигураторе с конфигурацией базы данных. Чаще всего проблема в первом пункте.
Как отладить фоновое задание?
Включите автоматическое подключение фоновых заданий в «Сервис → Параметры → Отладка», убедитесь, что сервер запущен с -debug, и запустите задание. Отладчик подключится к нему при старте и остановится на вашей точке.
Можно ли отлаживать код без конфигуратора?
Нет, отладчик — часть конфигуратора. Но можно запустить отладку на одном компьютере, а сеанс пользователя — на другом: важно лишь, чтобы оба подключались к одному серверу 1С, где включён режим отладки.
Почему в списке подключения нет моего сеанса?
Возможные причины: у пользователя нет права «Отладка», сеанс запущен в другом кластере сервера, несовпадение протокола отладки (TCP/HTTP) между конфигуратором и сервером, либо сеанс уже подключён к другому отладчику.
Влияет ли включённая отладка на работу пользователей?
Да. Ключ -debug замедляет выполнение серверного кода, а остановка на точке останова блокирует выполнение в конкретном сеансе. На продуктивном сервере режим отладки следует включать только на время диагностики и затем отключать.