Разработка и Конфигурация · 12 мин
Как пользоваться отладчиком 1С 8.3
Подробное руководство по отладчику 1С 8.3: включение отладки, точки останова, пошаговое выполнение, просмотр переменных, отладка фоновых заданий и внешних соединений.
Отладчик в 1С:Предприятие 8.3 — встроенный инструмент конфигуратора, который позволяет выполнять код по шагам, останавливаться в нужных местах и смотреть значения переменных в момент выполнения. Без него поиск причины ошибки в сложном модуле превращается в угадывание: вы добавляете сообщения, перезапускаете обработку и снова гадаете. С отладчиком вы видите реальную картину — какие значения приходят в процедуру, какая ветка условия срабатывает и где именно падает код.
Инструмент работает одинаково для файловых и клиент-серверных баз, но для серверной отладки есть важное условие: сервер 1С должен быть запущен в режиме отладки. Это самая частая причина ситуации «точка останова горит, но не срабатывает». Ниже разобраны включение отладки, работа с точками останова, пошаговое выполнение, просмотр данных и отладка нестандартных сценариев — фоновых заданий, внешних соединений и веб-сервисов.
Как включить отладку и подключить сеанс
В файловой базе всё просто: откройте конфигуратор и нажмите F5 или выберите «Отладка → Начать отладку». Конфигуратор запустит тонкий или толстый клиент в режиме отладки, и предметы отладки (клиентские и серверные контексты) подключатся автоматически. Если нужно отладить уже запущенный сеанс, используйте «Отладка → Подключение» и выберите нужный предмет отладки из списка.
Для клиент-серверной базы есть обязательное условие: сервер 1С:Предприятия должен быть запущен с параметром -debug (для HTTP-отладки — -debug -http). В Windows это делается через свойства службы агента сервера или в реестре, в Linux — в параметрах запуска службы. После изменения параметров службу нужно перезапустить. Если сервер запущен без ключа, клиентская часть отлаживаться будет, а серверные вызовы — нет.
Проверить, что отладка активна, можно в окне «Отладка → Подключение»: в списке предметов отладки должны быть видны подключенные контексты с типом «Сервер» или «Тонкий клиент». Также в настройках конфигуратора («Сервис → Параметры → Отладка») проверьте протокол отладки — для современных версий по умолчанию используется HTTP, и порт отладки не должен блокироваться брандмауэром.
Точки останова: установка и виды
Точка останова ставится кликом по левому полю редактора модуля напротив строки или клавишей F9. Красный кружок означает, что при выполнении этой строки код остановится и управление перейдёт в конфигуратор. Снять все точки сразу можно через «Отладка → Отключить точки останова» или сочетанием Ctrl+Shift+F9.
Кроме обычной точки есть условная: правый клик по точке → «Условие останова». Например, условие СтрокаТаблицы.Номенклатура = ИскомыйТовар остановит цикл только на нужной итерации, а не на каждой из тысячи. Это главный приём при отладке циклов и обработок больших таблиц.
Отдельные полезные виды: остановка по ошибке («Отладка → Остановка по ошибке») прерывает выполнение в момент исключения — удобно, когда ошибка возникает в непонятном месте; точка останова с записью в журнал позволяет не прерывать выполнение, а только фиксировать прохождение строки.
- 1Откройте конфигуратор и убедитесь, что сервер запущен с -debug (для клиент-серверной базы)
- 2Поставьте точку останова (F9) на строке, где начинается подозрительный код
- 3Нажмите F5 — запустится клиент в режиме отладки
- 4Выполните в клиенте действие, которое приводит к ошибке
- 5При остановке пройдите код шагами F10/F11 и проверьте значения переменных
- 6Найдя причину, остановите отладку (Shift+F5), исправьте код и повторите проверку
Пошаговое выполнение кода
Когда выполнение остановилось, в распоряжении четыре основные команды. F10 — «Шагнуть через»: выполняет текущую строку, не заходя внутрь вызываемых процедур. F11 — «Шагнуть в»: заходит внутрь вызываемой процедуры или функции. Shift+F11 — «Шагнуть из»: довыполняет текущую процедуру до конца и останавливается в вызывающем коде. Shift+F10 — «Идти до курсора»: выполняет всё до строки, где стоит курсор, — быстрый способ перепрыгнуть цикл.
Стек вызовов (окно «Отладка → Стек вызовов») показывает цепочку процедур, которая привела к текущей строке. Это критически важно в типовых конфигурациях, где один документ может проходить через десяток общих модулей и подписок на события. Клик по уровню стека переносит просмотр в соответствующий модуль — можно увидеть, с какими параметрами вызывалась процедура на каждом уровне.
Если вы случайно прошагали нужное место, не перезапускайте всё с нуля: часто быстрее поставить точку раньше и нажать F5 («Продолжить») — выполнение пойдёт дальше до следующей точки. Но помните: назад откатить выполнение нельзя, уже выполненные обращения к базе данных не отменяются.
Просмотр значений: выражения, табло, локальные переменные
Самый быстрый способ увидеть значение — навести курсор мыши на переменную в остановленном коде: появится всплывающая подсказка. Для сложных выражений используйте «Вычислить выражение» (Shift+F9): в открывшемся окне можно написать любое выражение на встроенном языке, например Запрос.Выполнить().Выгрузить().Количество(), и увидеть результат.
Окно «Табло» (открывается из меню «Отладка») — это постоянный список наблюдаемых выражений, значения которых пересчитываются на каждом шаге. Добавьте туда ключевые переменные, и вы будете видеть, как они меняются при пошаговом выполнении, — это нагляднее, чем каждый раз вычислять выражение заново.
Таблицы значений и результаты запросов просматриваются через «Вычислить выражение»: введите переменную с таблицей, нажмите F2 (или кнопку «Показать значение в отдельном окне») — откроется привычный табличный просмотр. Для объектов (справочников, документов) раскрытие в дереве выражения покажет реквизиты и табличные части.
Отладка фоновых заданий, внешних соединений и веб-сервисов
Фоновые задания не подключаются к отладке автоматически. Чтобы их отладить, включите в настройках конфигуратора («Сервис → Параметры → Отладка») флаг «Автоматическое подключение» для нужных типов предметов отладки, либо вручную откройте «Отладка → Подключение» после запуска задания и выберите его в списке. В коде фонового задания можно временно добавить ожидание, чтобы успеть подключиться.
Для отладки внешних соединений (COM, регламентные задания, обмены) используется тот же механизм подключения: внешний сеанс появляется в списке предметов отладки, если сервер в режиме отладки и включено автоматическое подключение соответствующего типа. Для HTTP-сервисов и веб-сервисов убедитесь, что публикация настроена на отладку, и вызывайте сервис — точка останова в модуле сервиса сработает как обычно.
Если подключиться к фоновому заданию не удаётся, практичная альтернатива — временно вызвать тот же код синхронно из обработки: тогда он выполнится в вашем сеансе и отладится обычным способом. Это не всегда возможно (например, из-за прав или контекста), но в большинстве случаев экономит значительное время.
Как выбрать действие
Типичные ошибки при работе с отладчиком
Наиболее частая проблема — отладка устаревшей версии кода. Вы изменили модуль в конфигураторе, но не обновили конфигурацию базы данных (F7): отладчик покажет несоответствие, точки могут «съехать» или не сработать. Признак — конфигуратор предупреждает, что текст модуля отличается от исполняемого. Решение: обновите конфигурацию БД и перезапустите сеанс.
Вторая типичная ситуация — точка останова в коде, который выполняется в другом контексте. Например, вы ставите точку в клиентской процедуре, а реальная логика работает в серверном общем модуле, или наоборот. Смотрите директивы компиляции (&НаКлиенте, &НаСервере) и стек вызовов, чтобы понять, где фактически исполняется код.
Третья ошибка — забытые точки останова и включённая остановка по ошибке на рабочем контуре. Перед сдачей работы снимайте все точки (Ctrl+Shift+F9) и отключайте остановку по ошибке, иначе сеанс будет неожиданно прерываться у пользователей или у вас при следующих запусках.
Проверка результата после исправления
После того как причина найдена и код исправлен, обновите конфигурацию базы данных и повторите сценарий целиком, уже без точек останова. Убедитесь, что ошибка не воспроизводится, а результирующие данные (проведённый документ, сформированный отчёт, запись в регистре) имеют ожидаемые значения, а не просто «не упало с ошибкой».
Проверьте и граничные случаи: пустые значения, максимальные объёмы, права пользователя, под которым возникала проблема. Отладка показывает поведение на конкретных данных — исправление, работающее на тестовом примере, может не покрывать другие варианты входных условий.
Как проверить результат
Ошибка не возникает, данные в базе корректны
Ошибка ушла, но результат неверный или сценарий падает на других данных
Все точки сняты, остановка по ошибке отключена
Остались активные точки — сеансы будут прерываться
Конфигурация БД обновлена, текст модуля совпадает с исполняемым
Конфигуратор предупреждает о различии конфигураций
Что важно запомнить
Отладка запускается клавишей F5, точки останова — F9, шаги — F10/F11, просмотр значений — Shift+F9 и табло. Для серверной базы обязателен запуск сервера с ключом -debug. Условные точки останова и стек вызовов экономят больше всего времени. После работы снимайте точки и не оставляйте режим отладки на рабочем сервере.
Частые вопросы об отладчике 1С 8.3
Почему точка останова не срабатывает, хотя код точно выполняется?
Чаще всего сервер 1С запущен без ключа -debug, и серверный код исполняется вне отладки. Также проверьте, что конфигурация БД обновлена после изменения модуля, что предмет отладки подключен через «Отладка → Подключение» и что точка стоит в том контексте (клиент/сервер), где реально исполняется код.
Как остановиться внутри цикла только на нужной итерации?
Используйте условную точку останова: правый клик по точке → «Условие останова», затем укажите выражение, например Счетчик = 157 или сравнение по значению поля текущей строки. Выполнение прервётся только когда условие станет истинным.
Можно ли изменить значение переменной прямо во время отладки?
Да. Откройте «Вычислить выражение» (Shift+F9), введите присваивание, например Количество = 10, и нажмите «Вычислить». Значение изменится в выполняемом сеансе. Учтите, что вызовы методов, изменяющих данные базы, выполнятся по-настоящему.
Как отладить код, который выполняется на сервере, если база файловая?
В файловом варианте серверный код исполняется внутри клиентского процесса, поэтому дополнительная настройка не нужна: просто начните отладку (F5), и серверные процедуры остановятся на точках так же, как клиентские.
Чем отличается «Шагнуть через» (F10) от «Шагнуть в» (F11)?
F10 выполняет вызов процедуры целиком и останавливается на следующей строке текущего модуля — вы не видите, что происходило внутри. F11 заходит внутрь вызванной процедуры, позволяя пошагово пройти её код. Если случайно зашли лишний раз, вернитесь наружу через Shift+F11.
Безопасно ли отлаживаться на рабочей базе?
Технически возможно, но с оговорками: режим -debug снижает производительность сервера, а сработавшая точка останова блокирует выполнение кода. Кроме того, через «Вычислить выражение» можно случайно изменить реальные данные. Рекомендуется отлаживаться на копии базы, а на рабочей — только точечно и с пониманием рисков.