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

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

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

Отладчик в 1С: что это, как запустить отладку в конфигураторе, точки останова, пошаговое выполнение, просмотр переменных и типичные ошибки новичков.

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

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

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

Что делает отладчик и когда он нужен

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

Типичные ситуации, где без отладчика работа заметно усложняется: документ проводится, но движения по регистрам формируются неверно; отчёт выводит неожиданные итоги; обмен данными «молча» пропускает часть объектов; после доработки конфигурации перестал работать ранее стабильный механизм. Во всех этих случаях отладчик показывает, на какой именно строке логика расходится с ожиданиями.

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

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

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

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

Для серверного кода в клиент-серверном варианте нужно, чтобы сервер 1С был запущен в режиме отладки. В файловом варианте серверный и клиентский код отлаживаются без дополнительной настройки. Для веб-клиента в настройках отладки указывается тип подключаемого приложения.

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

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

Обычная точка останова срабатывает каждый раз, когда выполнение доходит до строки. В цикле на тысячу итераций это превращается в мучение: придётся тысячу раз нажимать «Продолжить». Для таких случаев существуют условные точки останова — остановка происходит только когда заданное условие истинно, например «Номенклатура = ИскомыйТовар» или «Счетчик > 500».

Условие задаётся через свойства точки останова: правый клик по точке — «Точка останова с условием». Выражение пишется на встроенном языке и вычисляется в контексте останавливаемой строки, поэтому в нём доступны локальные переменные процедуры.

Дополнительно полезна остановка по ошибке: «Отладка» — «Остановка по ошибке». Тогда выполнение прервётся в момент возникновения исключения, и можно увидеть состояние программы непосредственно перед сбоем, а не после того, как ошибка «проглочена» обработчиком Попытка/Исключение.

Пошаговое выполнение и просмотр значений

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

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

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

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

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

Фоновые задания выполняются в отдельных сеансах, поэтому точка останова в их коде сама по себе не сработает. Порядок действий: «Отладка» — «Подключение», включить флажок «Искать объекты отладки на сервере» при клиент-серверном варианте, дождаться появления фонового задания в списке и подключиться к нему. Чтобы не ловить задание вручную, в настройках автоматического подключения отметьте тип «Фоновое задание».

Для веб-клиента в свойствах информационной базы (или в настройках отладки) указывается, что отлаживается веб-клиент, — тогда конфигуратор перехватывает серверные вызовы из браузера. Клиентский код в браузере отлаживается средствами самого браузера, а не конфигуратором.

HTTP-сервисы и веб-сервисы отлаживаются аналогично фоновым заданиям: вызывающая сторона отправляет запрос, а разработчик заранее подключается к сеансу обслуживания сервиса или включает автоматическое подключение по нужному типу.

Типичные ошибки
01
Ставить точку в клиентской процедуре, а ошибка находится в серверном вызове — выполнение просто не доходит до точки. Решение: трассировать по F11 от места вызова
02
Забыть, что код обёрнут в Попытка/Исключение, и искать остановку там, где исключение перехватывается. Решение: включить остановку по ошибке
03
Отлаживать на копии базы со старыми данными, где ошибка не воспроизводится. Решение: сначала добиться стабильного воспроизведения
04
Оставлять сервер в режиме отладки на рабочей базе — это заметно замедляет работу всех пользователей

Ограничения, риски и альтернативы

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

Режим отладки на сервере снижает производительность и увеличивает время отклика для всех сеансов. После завершения работы сервер следует перезапустить без ключа отладки.

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

Как проверить, что причина ошибки найдена

Найти строку, где значение «портится», — только половина работы. Убедитесь, что вы нашли причину, а не следствие: проследите по стеку вызовов, откуда в процедуру пришёл неверный параметр. Часто реальный источник ошибки находится на два-три уровня вызовов выше.

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

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

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

Значения переменных на точке останова после исправления
Норма

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

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

Расходятся с ожиданиями или зависят от порядка данных

Повторение сценария без отладчика
Норма

Результат стабилен при нескольких запусках

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

Ошибка возникает время от времени — вероятна зависимость от данных или порядка обхода

Смежные механизмы, использующие тот же код
Норма

Работают как раньше

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

Исправление сломало другой сценарий — изменение слишком широкое

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

Почему точка останова не срабатывает?

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

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

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

Как посмотреть содержимое таблицы значений в отладчике?

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

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

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

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

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

Влияют ли точки останова на работу пользователей?

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

Итог

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

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