В этой небольшой статье поговорим про то, как устанавливать точки останова с условием при отладке кода в 1С Предприятие.
При этом будем рассматривать самый актуальный вариант – Точка останова с параметрами, который появился в версии 8.3.24
Точка останова с условием и с параметрами в 1С 8.3
Точка останова в 1С — это специальная отметка, устанавливаемая в конфигураторе, которая приостанавливает выполнение программы в режиме отладки, позволяя разработчику проверить текущее состояние переменных, выполнение алгоритмов или выявить ошибки. Когда система достигает точки останова, выполнение кода останавливается, и разработчик может пошагово анализировать код, отслеживать значения переменных, и корректировать логику работы программы. Это важный инструмент для диагностики и исправления ошибок в 1С:Предприятии.
Помимо обычных точек останова, которые срабатывают каждый раз, как выполнение кода доходит до них, в платформе 1С 8.3 есть также условные точки останова, которые приостанавливают исполнение кода только тогда, когда выполняются некоторые условия.
Точка останова с условием
Давным-давно в далекой-далекой галактике в 1С до версии 8.3.24 был удобный и простой инструмент – точка останова с условием. Для нее можно было задать условное выражение на встроенном языке 1С. И довольно долго этого было достаточно. Но со временем платформа развивалась, код усложнялся, и по многочисленным просьбам разработчиков, в платформу завезли новых фишек для отладки.
Точка останова с параметрами
Точка останова с параметрами устанавливается, когда конфигуратор работает в режиме отладки. Это можно сделать через меню Отладка, либо через контекстное меню, пункт “Точка останова с параметрами”, либо нажав сочетание клавиш Ctrl+F9. Откроется окно настройки параметров точки останова.

- При выполнении условия – выражение для точки останова с условием, то самое что было для “Точка останова с условием” в предыдущих версиях платформы
- При вызове из вышестоящего метода – точка останова срабатывает только если текущий метод был вызван из указанного в настройках места. В качестве фильтра можно задать точное имя вызывающего метода или использовать регулярное выражение для гибкого поиска. Эта функция особенно полезна, когда нужно отловить выполнение кода только в определенном контексте, например, если процедура вызывается из конкретного модуля или обработчика.
- При количестве попаданий – точка останова активируется только после N-ного выполнения строки, на которой она установлена. Особенно полезно при отладке циклов, когда нужно остановить выполнение не на первом, а на конкретном проходе (например, на 10-й итерации).
Точку на прокачку!
В версии 8.3.24 точки останова знатно прокачались и получили дополнительные функции для удобства отладки:
- Вывод сообщений – при срабатывании точки останова можно включить опцию «Выводить в окно служебных сообщений», чтобы зафиксировать информацию без остановки выполнения.
- Динамические данные – в поле «Результат вычисления выражения» можно указать функцию, возвращаемое значение которой отобразится в сообщении.
Дополнительная информация –
к выводимому сообщению можно добавить:
- стек вызовов;
- количество попаданий в точку останова.
- Беспрерывная работа – если активирован флажок «Продолжить выполнение», программа не будет останавливаться, а только зафиксирует данные в логе.
- Быстрый переход к коду – клик по сообщению перенесёт разработчика в модуль на строку с соответствующей точкой останова.
Эти возможности упрощают анализ сложных сценариев, позволяя собирать отладочную информацию без постоянных остановок.
Практический пример включения точки останова по условию
Рассмотрим практический пример. Есть обработка, в которой созданы два обработчика – при создании на сервере и при открытии. и в этих обраобтчиках мы вызываем некоторый код.
&НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) ЦиклПоСумме(); КонецПроцедуры &НаСервере Процедура ЦиклПоСумме() Перем Сумма, Сч; Сумма = 0; Для Сч = 1 по 10 Цикл Сумма = Сумма + 1000; Сумма = Сумма + 500; КонецЦикла; КонецПроцедуры &НаКлиенте Процедура ЦиклПоСуммеКлиент() Перем Сумма, Сч; Сумма = 0; Для Сч = 1 по 10 Цикл Сумма = Сумма + 1000; Сумма = Сумма + 500; КонецЦикла; ЦиклПоСумме(); КонецПроцедуры &НаКлиенте Процедура ПриОткрытии(Отказ) ЦиклПоСуммеКлиент(); КонецПроцедуры
Поставим точку останова и настроим все что можно 🙂
Запустим обработку и посмотрим на сообщения:


Но есть и ложка дегтя. По крайней мере на платформе 8.3.25.1336 поведение не вполне очевидное. Точки останова в серверных методах при включенном флажке “При вызове из вышестоящего метода” срабатывают только если вышестоящий метод – также серверный. Это легко проверить, если поставить в методе ЦиклПоСумме точку останова с условием для имени метода “ЦиклПоСуммеКлиент”. В этом случае точка останова не срабатывает.