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

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

Как поставить точку останова в 1С

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

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

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

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

Самый простой способ — открыть нужный модуль (модуль объекта, формы, общий модуль) и щёлкнуть мышью по серой полосе слева от номера строки. На поле появится красный кружок — это и есть точка останова. Повторный щелчок её снимает.

Второй способ — клавиатура: установите курсор на нужную строку и нажмите F9. Сочетание Ctrl+Shift+F9 снимает все точки останова в текущем модуле, а через меню «Отладка → Удалить все точки останова» очищаются точки во всей конфигурации.

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

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

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

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

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

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

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

Когда код выполняется в цикле сотни раз, обычная точка заставит нажимать «Продолжить» на каждой итерации. В этом случае удобнее условная точка: щёлкните правой кнопкой по красному кружку, выберите «Условие» и задайте выражение на встроенном языке, например НомерСтроки = 157 или Сумма > 1000000. Останов произойдёт только когда выражение истинно.

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

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

Виды точек останова

Обычная (F9)

Останавливает выполнение каждый раз при проходе строки. Подходит для линейного кода и малого числа вызовов

Условная

Срабатывает только при истинности выражения. Незаменима в циклах и обработках больших массивов данных

Останов по ошибке

Прерывает выполнение в момент исключения. Лучший вариант, когда место ошибки неизвестно

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

Серверный код в клиент-серверном режиме

В клиент-серверной базе код процедур с директивами &НаСервере выполняется на сервере 1С. Чтобы точки в таком коде срабатывали, служба агента сервера должна быть запущена с параметром -debug. Проверить это можно в строке запуска службы; после добавления ключа службу перезапускают.

Фоновые задания и внешние соединения

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

Веб-клиент и тонкий клиент

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

Что делать, когда выполнение остановилось

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

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

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

Самая частая причина «несрабатывающей» точки — код выполняется на сервере, а отладка сервера не включена, либо сеанс запущен не из-под отладки. Второй по частоте случай: изменения конфигурации не обновлены (F7), и в базе исполняется старая версия модуля без вашей строки.
ПЗ
Практическое замечание

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

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

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

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

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

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

Как быстро убрать все точки останова сразу?

Используйте меню «Отладка → Удалить все точки останова» — очищаются точки во всех модулях конфигурации. Сочетание Ctrl+Shift+F9 снимает точки только в текущем открытом модуле.

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

Да. Откройте внешнюю обработку в конфигураторе (Файл → Открыть), поставьте точки как обычно, затем запустите отладку F5 и откройте эту же обработку в клиентском приложении. Точки сработают при выполнении её кода.

Точка стоит, но строка не подсвечивается и выполнение не останавливается — в чём причина?

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

Как отладить код, который выполняется только при обмене или по расписанию?

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

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

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

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

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

Итог

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

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