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

Разработка и Конфигурация · 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. 1
    Откройте конфигуратор и убедитесь, что сервер запущен с -debug (для клиент-серверной базы)
  2. 2
    Поставьте точку останова (F9) на строке, где начинается подозрительный код
  3. 3
    Нажмите F5 — запустится клиент в режиме отладки
  4. 4
    Выполните в клиенте действие, которое приводит к ошибке
  5. 5
    При остановке пройдите код шагами F10/F11 и проверьте значения переменных
  6. 6
    Найдя причину, остановите отладку (Shift+F5), исправьте код и повторите проверку

Пошаговое выполнение кода

Когда выполнение остановилось, в распоряжении четыре основные команды. F10 — «Шагнуть через»: выполняет текущую строку, не заходя внутрь вызываемых процедур. F11 — «Шагнуть в»: заходит внутрь вызываемой процедуры или функции. Shift+F11 — «Шагнуть из»: довыполняет текущую процедуру до конца и останавливается в вызывающем коде. Shift+F10 — «Идти до курсора»: выполняет всё до строки, где стоит курсор, — быстрый способ перепрыгнуть цикл.

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

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

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

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

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

Таблицы значений и результаты запросов просматриваются через «Вычислить выражение»: введите переменную с таблицей, нажмите F2 (или кнопку «Показать значение в отдельном окне») — откроется привычный табличный просмотр. Для объектов (справочников, документов) раскрытие в дереве выражения покажет реквизиты и табличные части.

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

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

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

Если подключиться к фоновому заданию не удаётся, практичная альтернатива — временно вызвать тот же код синхронно из обработки: тогда он выполнится в вашем сеансе и отладится обычным способом. Это не всегда возможно (например, из-за прав или контекста), но в большинстве случаев экономит значительное время.

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

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

Точка останова красная, но код не останавливаетсяПроверьте, что сервер запущен с -debug, и что предмет отладки подключен через «Отладка → Подключение»
Останавливается клиентский код, но не серверныйПерезапустите службу сервера 1С с ключом -debug и проверьте протокол отладки в параметрах конфигуратора
Нужно отладить фоновое заданиеВключите автоматическое подключение фоновых заданий в параметрах отладки или подключитесь вручную сразу после запуска
Ошибка возникает только у конкретного пользователяПопросите воспроизвести ошибку и подключитесь к его сеансу через «Отладка → Подключение»

Типичные ошибки при работе с отладчиком

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

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

Третья ошибка — забытые точки останова и включённая остановка по ошибке на рабочем контуре. Перед сдачей работы снимайте все точки (Ctrl+Shift+F9) и отключайте остановку по ошибке, иначе сеанс будет неожиданно прерываться у пользователей или у вас при следующих запусках.

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

Проверка результата после исправления

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

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

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

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

Воспроизведение исходного сценария
Норма

Ошибка не возникает, данные в базе корректны

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

Ошибка ушла, но результат неверный или сценарий падает на других данных

Состояние отладчика после работы
Норма

Все точки сняты, остановка по ошибке отключена

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

Остались активные точки — сеансы будут прерываться

Конфигурация базы данных
Норма

Конфигурация БД обновлена, текст модуля совпадает с исполняемым

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

Конфигуратор предупреждает о различии конфигураций

Итог

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

Отладка запускается клавишей F5, точки останова — F9, шаги — F10/F11, просмотр значений — Shift+F9 и табло. Для серверной базы обязателен запуск сервера с ключом -debug. Условные точки останова и стек вызовов экономят больше всего времени. После работы снимайте точки и не оставляйте режим отладки на рабочем сервере.

Частые вопросы об отладчике 1С 8.3

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

Чаще всего сервер 1С запущен без ключа -debug, и серверный код исполняется вне отладки. Также проверьте, что конфигурация БД обновлена после изменения модуля, что предмет отладки подключен через «Отладка → Подключение» и что точка стоит в том контексте (клиент/сервер), где реально исполняется код.

Как остановиться внутри цикла только на нужной итерации?

Используйте условную точку останова: правый клик по точке → «Условие останова», затем укажите выражение, например Счетчик = 157 или сравнение по значению поля текущей строки. Выполнение прервётся только когда условие станет истинным.

Можно ли изменить значение переменной прямо во время отладки?

Да. Откройте «Вычислить выражение» (Shift+F9), введите присваивание, например Количество = 10, и нажмите «Вычислить». Значение изменится в выполняемом сеансе. Учтите, что вызовы методов, изменяющих данные базы, выполнятся по-настоящему.

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

В файловом варианте серверный код исполняется внутри клиентского процесса, поэтому дополнительная настройка не нужна: просто начните отладку (F5), и серверные процедуры остановятся на точках так же, как клиентские.

Чем отличается «Шагнуть через» (F10) от «Шагнуть в» (F11)?

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

Безопасно ли отлаживаться на рабочей базе?

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