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

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

Отладчик в 1С: что это такое и как им пользоваться

Что такое отладчик в 1С, зачем он нужен разработчику. Как запустить отладку, поставить точку останова, посмотреть значения переменных и найти ошибку в коде.

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

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

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

Что такое отладчик и какие задачи он решает

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

Типовые задачи, которые решает отладчик:

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

Как запустить отладку в конфигураторе

Базовый сценарий занимает меньше минуты. Откройте конфигуратор, убедитесь, что конфигурация базы данных актуальна (иначе отлаживаемый код может не совпадать с исполняемым), и нажмите F5 или выберите «Отладка → Начать отладку». Платформа запустит клиентское приложение в режиме отладки — внешне оно выглядит как обычный сеанс 1С, но связано с конфигуратором.

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

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

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

Точки останова: установка и условия срабатывания

Точка останова ставится клавишей F9 на строке модуля или кликом по серой полосе слева от кода. Красный кружок означает активную точку. Двойной клик по значку или повторное нажатие F9 снимает её. Все установленные точки видны в окне «Отладка → Точки останова», откуда их можно массово отключать, не удаляя.

Мощный приём — условные точки останова. В свойствах точки (правый клик → «Точка останова с условием») задаётся выражение: останов произойдёт только когда оно истинно. Например, при отладке цикла по тысяче строк таблицы условие Строка.Сумма > 100000 остановит выполнение только на проблемной строке, а не на каждой итерации.

Дополнительно доступен счётчик проходов: останов на n-м срабатывании. Это удобно, когда ошибка проявляется не сразу, а после нескольких итераций цикла или вызовов процедуры.

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

После остановки выполнение продолжается управляемо. Основные команды: F10 — шаг через (выполнить строку, не заходя внутрь вызываемых процедур), F11 — шаг внутрь (войти в вызываемую процедуру или функцию), Shift+F11 — выполнить до выхода из текущей процедуры, F5 — продолжить выполнение до следующей точки останова.

Окно «Стек вызовов» показывает цепочку, по которой платформа дошла до текущей строки: какая процедура вызвала текущую, откуда вызвана она и так далее. Это незаменимо при анализе обработчиков событий — например, чтобы понять, кто инициировал запись объекта, которая привела к повторному срабатыванию «ПриЗаписи».

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

Просмотр и изменение значений переменных

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

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

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

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

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

Значение переменной в окне «Выражения»
Норма

Совпадает с ожидаемым на каждом шаге алгоритма

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

Значение теряется или меняется раньше ожидаемой строки — ошибка между этими точками

Стек вызовов
Норма

Цепочка вызовов соответствует логике сценария

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

Лишние или повторные вызовы обработчиков — признак рекурсии или двойной записи

Условия ветвлений
Норма

Выполняется та ветка, которая ожидалась

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

Условие ложно из-за типа данных или незаполненного реквизита

Подключение к запущенным сеансам и отладка на сервере

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

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

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

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

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

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

Когда ошибка плавающая и воспроизводится нестабильно, быстрее не ловить её пошагово, а поставить остановку «по ошибке» (Отладка → Остановка по ошибке): платформа сама прервёт выполнение в момент исключения, и вы сразу увидите контекст, в котором оно возникло.
ПЗ
Практическое замечание

Ограничения отладчика и альтернативные приёмы

Отладчик не всесилен. Он не покажет, что происходило до остановки — историю изменений переменной придётся восстанавливать вручную, двигаясь по стеку и точкам. Не поддаются пошаговой отладке код на уровне запросов к СУБД, работа COM-соединений на удалённой стороне и некоторые внешние компоненты.

Когда отладка недоступна или неудобна, применяют альтернативы: журнал регистрации с записью собственных событий через «ЗаписьЖурналаРегистрации», вывод промежуточных данных через «Сообщить» в тестовой базе, технологический журнал для анализа запросов и блокировок на уровне платформы, а также замеры производительности для поиска узких мест.

Итог

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

Отладчик 1С — штатный инструмент конфигуратора: F5 для запуска, F9 для точки останова, F10/F11 для шагов, Shift+F9 для выражений. Для серверного кода нужна отладка на сервере, для чужих сеансов — подключение. Эксперименты безопасно проводить только на копии рабочей базы.

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

Почему точка останова стоит, но выполнение не останавливается?

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

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

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

Опасно ли пользоваться отладчиком на рабочей базе?

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

Как посмотреть содержимое запроса в отладчике?

Остановитесь перед строкой «Запрос.Выполнить()», добавьте в выражения сам запрос и его параметры — текст запроса и значения параметров будут видны. Результат запроса после выполнения можно развернуть в окне просмотра коллекций и посмотреть построчно как таблицу.

Что делать, если ошибка возникает только у конкретного пользователя?

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

Чем отличается остановка по ошибке от обычной точки останова?

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