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