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

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

Точка останова в 1С: как пользоваться отладчиком

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

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

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

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

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

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

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

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

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

Откройте конфигуратор, найдите нужный объект (документ, справочник, общий модуль, обработку) и откройте его модуль. Установить точку можно тремя способами:

  • кликнуть мышью по серой полосе слева от номера строки — появится красный кружок;
  • поставить курсор на строку и нажать F9;
  • использовать меню «Отладка → Точка останова».

Повторное нажатие F9 или клик по кружку снимает точку. Снять все точки сразу можно через «Отладка → Снять все точки останова» (Ctrl+Shift+F9). Список всех установленных точек доступен в окне «Отладка → Точки останова», откуда удобно временно отключать отдельные метки, не удаляя их.

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

Порядок действий
  1. 1
    Откройте модуль с подозрительным кодом в конфигураторе
  2. 2
    Поставьте точку останова клавишей F9 на нужной строке
  3. 3
    Запустите отладку: Отладка → Начать отладку (F5)
  4. 4
    В открывшемся клиенте выполните действие, которое вызывает код
  5. 5
    При остановке изучите переменные через Shift+F9 и продолжайте по шагам

Запуск отладки и подключение к сеансу

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

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

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

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

Когда выполнение остановилось на точке, в вашем распоряжении несколько команд движения по коду:

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

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

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

Условные точки останова и останов по ошибке

Если точка стоит внутри цикла на тысячу итераций, а интересна только одна ситуация, используйте условную точку останова. Кликните правой кнопкой по точке, выберите настройку условия и укажите выражение, например Строка.Номенклатура = ИскомаяНоменклатура или Счетчик > 500. Останов произойдёт только когда условие истинно.

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

Комбинация этих двух приёмов закрывает большинство задач: условные точки — для редких ситуаций в массовых обработках, останов по ошибке — для исключений, место которых заранее неизвестно.

Маршрут решения

Как выбрать действие

Нужно проверить конкретную строку один разОбычная точка останова (F9) и пошаговое выполнение
Точка срабатывает сотни раз в циклеУсловная точка останова с выражением-фильтром
Ошибка возникает, но место неизвестноВключите «Остановка по ошибке» без точек
Код выполняется в фоновом задании или у другого пользователяПодключение к сеансу через Отладка → Подключение

Почему отладчик не останавливается: типичные ошибки

Самая частая ситуация — точка стоит, а остановки нет. Причины обычно такие: отлаживаемый код выполняется на сервере, а сервер запущен без режима отладки; изменения конфигурации не обновлены в базе, поэтому выполняется старая версия кода; точка стоит в ветке условия, которая фактически не выполняется.

Вторая группа ошибок — неверное предположение о контексте. Точка в модуле формы с директивой &НаКлиенте и точка в &НаСервере — это разные процессы. Если подключён только клиентский предмет отладки, серверные вызовы пройдут мимо. Проверьте в окне подключения, какие предметы отладки выбраны.

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

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

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

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

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

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

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

Выполнение исправленного кода
Норма

Сценарий проходит без ошибок и даёт ожидаемый результат

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

Ошибка ушла в другое место или результат отличается

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

Все точки сняты, конфигурация обновлена

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

Точки остались и мешают дальнейшей работе в конфигураторе

Поведение в клиент-серверном режиме
Норма

Код работает и на клиенте, и на сервере

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

В файловой базе работает, на сервере — нет

Частые вопросы о точках останова в 1С

Работают ли точки останова в тонком и веб-клиенте?

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

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

Можно, но сервер 1С должен быть запущен в режиме отладки — с параметром -debug в строке запуска службы агента сервера. После изменения параметра службу нужно перезапустить. В файловом варианте такой настройки не требуется.

Почему точка останова «съезжает» на другую строку?

Точку можно поставить только на исполняемую строку. Если вы кликнули по комментарию, пустой строке или заголовку процедуры, платформа переносит метку на ближайшую строку с реальным оператором. Это нормальное поведение, а не сбой.

Сохраняются ли точки останова между сеансами конфигуратора?

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

Как отладить фоновое или регламентное задание?

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

Чем отладка отличается от вывода сообщений через Сообщить()?

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

Итог

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

Точка останова ставится клавишей F9 или кликом по полосе слева от строки, отладка запускается по F5. Значения смотрят через Shift+F9, по коду двигаются клавишами F10/F11. Для серверного кода нужен сервер в режиме отладки, для редких ситуаций — условные точки, для неизвестных ошибок — останов по ошибке. Работайте в копии базы, а после исправления снимайте точки и проверяйте сценарий целиком.