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

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

Debug (отладка) в 1С: что это и как ей пользоваться

Debug (отладка) в 1С — что это такое, как включить режим отладки, поставить точку останова, пошагово выполнить код и найти ошибку в конфигурации.

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

Термин «дебаг» пришёл из английского debug — «устранение багов» (bаg — жаргонное название программной ошибки). В 1С отладка встроена прямо в конфигуратор и не требует установки дополнительных программ. Работает она как с файловыми, так и с клиент-серверными базами, а также позволяет отлаживать код на сервере, в веб-клиенте и фоновых заданиях.

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

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

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

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

Как включить режим отладки

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

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

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

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

Точки останова и пошаговое выполнение

Точка останова ставится клавишей F9 на выбранной строке — слева от неё появляется красный маркер. Когда выполнение доходит до этой строки, сеанс «замирает», а конфигуратор показывает текущую позицию. Точек можно расставить сколько угодно и в разных модулях; список всех точек доступен через «Отладка» → «Точки останова».

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

Есть и условные точки останова: в свойствах точки можно задать условие, например Номенклатура = ИскомаяПозиция, и остановка произойдёт только когда условие истинно. Это незаменимо в циклах, где нужная итерация — трехсотая, и нажимать F10 триста раз не хочется.

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

Основной инструмент анализа — табло (окно «Табло», открывается из меню «Отладка»). В него добавляют переменные и целые выражения: Выборка.Количество, ТаблицаТоваров.Итог("Сумма"), Запрос.Выполнить().Пустой(). Значения пересчитываются на каждом шаге, так что видно, как данные меняются по ходу алгоритма.

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

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

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

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

Значение переменной до проблемной строки
Норма

Переменная содержит ожидаемые данные (тип и значение корректны)

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

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

Результат запроса
Норма

Запрос возвращает строки с нужными полями

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

Пустая выборка — проверяйте параметры запроса и данные в базе

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

Цепочка вызовов соответствует ожидаемой логике

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

Код вызван из неожиданного места — возможно, срабатывает подписка на событие

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

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

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

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

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

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

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

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

Альтернативы и дополнения к отладчику

Не всегда нужен полноценный debug. Для быстрой проверки гипотезы достаточно временно вывести значение через Сообщить() или записать событие в журнал регистрации через ЗаписьЖурналаРегистрации() — второй способ предпочтительнее на сервере, так как сообщения сервера пользователь может не увидеть. Журнал регистрации сам по себе — источник информации об ошибках: там фиксируются исключения с указанием места.

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

Итог

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

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

Частые вопросы

Чем отладка отличается от обычного запуска 1С:Предприятия?

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

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

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

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

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

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

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

Что делать, если ошибка перехватывается конструкцией Попытка/Исключение?

Включите «Отладка» → «Остановка по ошибке». Платформа прервёт выполнение в момент возникновения исключения, до того как его обработает блок Исключение, и покажет точное место и текст ошибки.

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

Да, в табло или окне «Вычислить выражение» значение можно отредактировать, и дальнейший код выполнится с новым значением. Это удобно для проверки гипотез, но на рабочей базе опасно: изменённое значение может попасть в учётные данные.