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