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

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

Точка останова в 1С: что это и как её использовать

Точка останова в 1С — что это, как поставить и снять, виды точек останова, условная остановка, отладка на сервере и типичные ошибки при работе с отладчиком.

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

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

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

Что такое точка останова и зачем она нужна

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

Главные задачи, которые решает точка останова:

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

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

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

Существует несколько способов установить точку останова в модуле конфигурации. Самый быстрый — поставить курсор на нужную строку и нажать клавишу F9. Повторное нажатие F9 на той же строке снимает точку. Альтернативный способ — кликнуть мышью по серой полосе левее номеров строк в редакторе модуля.

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

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

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

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

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

Для установки условной точки нужно щёлкнуть правой кнопкой по уже установленной точке и выбрать «Условие...». В открывшемся окне вводится выражение на встроенном языке, например НомерСтроки = 150. Это незаменимо при отладке циклов по тысячам строк табличных частей, где обычная точка заставила бы нажимать F5 сотни раз.

Сравнение вариантов

Обычная точка останова

Подходит для одиночных вызовов и редко выполняемого кода. В циклах и часто вызываемых процедурах срабатывает слишком часто.

Условная точка останова

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

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

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

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

Как работать с кодом после остановки

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

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

Полезная возможность — команда «Идти к курсору» (Ctrl+F10): выполнение продолжается до строки, где стоит курсор, без установки постоянной точки останова. Это удобно, чтобы быстро «перепрыгнуть» через цикл или длинный участок уже проверенного кода.

Отладка на сервере и в фоновых заданиях

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Срабатывание точки останова
Норма

Выполнение останавливается на нужной строке, строка подсвечена жёлтым

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

Точка игнорируется — проверьте режим отладки сервера и обновление конфигурации БД

Значения переменных
Норма

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

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

Переменные не определены или содержат устаревшие данные — возможно, смотрите не тот контекст

Поведение после исправления
Норма

Сценарий выполняется без ошибок, данные в базе корректны

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

Ошибка ушла, но данные неверны — исправлен симптом, а не причина

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

Итог

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

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

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

Почему точка останова отображается с вопросительным знаком или неактивна?

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

Можно ли поставить точку останова в коде расширения конфигурации?

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

Как отладить код, который выполняется только у конкретного пользователя?

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

Чем отличается «Снять все точки останова» от «Отключить все точки останова»?

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

Можно ли отлаживать обмены данными и регламентные задания?

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

Замедляет ли точка останова работу программы, если отладка не запущена?

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