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