Остановка исполнения

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

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

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

Остановка на указанной строке

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

Чтобы остановиться на некоторой строке модуля, добавьте в эту строку точку останова:
  1. Откройте нужный модуль;
  2. Дважды кликните в нужной строке в вертикальной линейке или нажмите в контекстном меню Точка останова;
    В строку будет добавлена точка останова .

Остановка на указанный раз

При отладке циклов может понадобиться, например, остановка на определенной итерации цикла, номер которой известен.

Чтобы остановиться на некоторой строке модуля перед тем, как она будет выполнена в N-ый раз, добавьте в эту строку точку останова и отредактируйте свойства точки:
  1. Откройте нужный модуль;
  2. Дважды кликните в нужной строке в вертикальной линейке или нажмите в контекстном меню Точка останова;
    В строку будет добавлена точка останова .
  3. В контекстном меню точки останова нажмите Свойства точки останова...;
    Будет открыт диалог Свойства;
  4. Установите флажок Количество попаданий и задайте значение — N;
  5. Нажмите Применить и закрыть.
Отредактировать свойства точки останова также можно из панели Точки останова:
  1. Выделите в списке точку останова;
  2. В области сведений установите флажок Количество попаданий и задайте значение.

Остановка по значению переменной (при выполнении условия)

Остановка при выполнении условия может понадобиться, например, когда один и тот же метод используется для обработки разных объектов. Один из этих объектов обладает какими-то особенностями, которые приводят к неправильному результату.

Допустим вы хотите остановиться в этом методе именно тогда, когда он обрабатывает тот самый "особенный" объект. Идентификатор объекта передается в параметре метода (ИдентификаторОбъекта) и вы знаете его значение (45209).

Чтобы остановиться внутри метода при выполнении условия, добавьте в него точку останова и отредактируйте свойства точки:
  1. Откройте нужный модуль и метод;
  2. Дважды кликните в нужной строке в вертикальной линейке или нажмите в контекстном меню Точка останова;
    В строку будет добавлена точка останова .
  3. В контекстном меню точки останова нажмите Свойства точки останова...;
    Будет открыт диалог Свойства;
  4. Установите флажок Условный и задайте условие, например:
    ИдентификаторОбъекта = 45209
  5. Нажмите Применить и закрыть;
    • значок точки останова изменится — .
Отредактировать свойства точки останова также можно из панели Точки останова:
  1. Выделите в списке точку останова;
  2. В области сведений установите флажок Условный и задайте условие;
    Значок точки останова изменится — .

Изменение свойств точки останова

Можно изменить свойства точки останова: количество раз, на которое произойдет остановка, и условие остановки.

Изменить свойства точки останова можно в модуле или в панели Точки останова:
  • В модуле, нажмите в контекстном меню точки Свойства точки останова...;
  • В панели Точки останова выделите нужную точку и:
    • Отредактируйте ее свойства в области сведений или;
    • Нажмите в контекстном меню Свойства точки останова....

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

Для того чтобы отладка останавливалась при наступлении любой ошибки, установите флаг Остановка по ошибке. Можно сделать это двумя способами.

Если отладка еще не начиналась, откройте перспективу Отладка и нажмите Запуск > Добавить точку останова по исключению... > Останавливаться по ошибке.

Если вы уже выполняете отладку, то этот же диалог можно открыть из панели Точки останова, нажав (Добавление точки останова по исключению встроенного языка).

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

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

Например, при выполнении программы возникает несколько ошибок, в том числе ошибка с сообщением "Деление на 0".

Чтобы остановиться при возникновении именно этой ошибки, добавьте точку останова по ошибке и укажите текст сообщения:
  1. В панели Точки останова нажмите (Добавление точки останова по исключению встроенного языка) в командной панели;
    Будет открыт диалог Остановка по ошибке;
  2. В поле Останавливаться только на ошибках, включающих текст напишите фрагмент сообщения об ошибке — "деление". Нажмите ОК;
    Будет добавлена точка останова Сообщение исключения: [деление]

Эти же действия можно выполнить из главного меню, нажав Запуск > Добавить точку останова по исключению....

Остановка в подписках на событие

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

Чтобы остановиться, например, во всех подписках на событие ПередЗаписью, которое есть у справочника Банки, выполните следующие действия:
  1. В панели Точки останова нажмите (Добавить точки останова по событию) в командной панели;
    Будет открыт диалог Добавление точек останова;
  2. В окне Источники установите флажок у объекта СправочникОбъект.Банки;
    • В окне События будут показаны события объекта СправочникОбъект.Банки, на которые возможна подписка;
    • В окне Обработчики будут показаны модули, в которых содержатся обработчики подписок на эти события объекта СправочникОбъект.Банки;
  3. В окне События установите флажок у события ПередЗаписью;
    В окне Обработчики будут показаны модули, в которых содержатся обработчики подписок на событие ПередЗаписью объекта СправочникОбъект.Банки;
  4. в окне Обработчики установите флажки у всех модулей, нажмите ОК;
    В каждом из обработчиков событий (в данном примере в трех обработчиках) будет установлена точка останова.
Аналогичные действия можно выполнить из редактора Все подписки на события:
  1. В панели Навигатор нажмите Все подписки на события в контекстном меню конфигурации;
    Будет открыт редактор Все подписки на события;
  2. Нажмите (Добавить точки останова по событию) в его командной панели;
    Будет открыт диалог Добавление точек останова.

Остановка при выполнении действия в программе

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

Чтобы остановиться при выполнении некоторого действия в программе (например, при нажатии кнопки), приостановите процесс отладки и затем выполните действие:
  1. В запущенном приложении выполните все действия до нужного (например, откройте форму);
  2. Перейдите в 1C:EDT
  3. В панели Отладка выделите процесс отладки и в контекстном меню нажмите Приостановить;
  4. Перейдите в приложение и выполните действие (нажмите кнопку, например);
    • Исполнение будет остановлено на первой исполняемой инструкции;
    • Модуль, содержащий эту инструкцию, будет открыт в редакторе встроенного языка.
Чтобы приостановить отладку вы также можете нажать в главном меню Запуск > Приостановить.