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