Сначала убедитесь, что отладка действительно подключена
Точка останова в 1С работает только в сеансе, который связан с конфигуратором в режиме отладки. Если открыть информационную базу обычным способом, выполнение кода не остановится, даже когда напротив нужной строки виден красный маркер. Запустите пользовательский режим командой начала отладки из конфигуратора либо подключитесь к уже запущенному предмету отладки.
Проверьте список предметов отладки: в нём должен отображаться именно тот клиентский, серверный или фоновый сеанс, где воспроизводится действие. При нескольких открытых окнах легко выполнить операцию в одном экземпляре 1С, а отладчик подключить к другому. Закройте лишние сеансы, повторно начните отладку и выполните проверяемое действие заново.
Если конфигурация работает в клиент-серверном варианте, часть кода может исполняться на сервере. Тогда одного подключения к клиентскому приложению недостаточно. Доступность серверной отладки зависит от настроек кластера, публикации и прав пользователя, поэтому конкретный порядок включения следует уточнять у администратора вашей базы.
Проверьте, доходит ли выполнение до выбранной строки
Красная точка показывает место предполагаемого останова, но не гарантирует, что соответствующая ветка будет выполнена. Поставьте дополнительную точку в начале процедуры или функции. Если она сработала, проходите код по шагам и следите, какое условие, возврат из процедуры или обработка исключения уводит выполнение в сторону.
Обратите внимание на условия, циклы и ранние команды завершения. Строка внутри ветки «Иначе» не выполняется, когда истинно основное условие; тело цикла пропускается при пустой выборке; код после возврата из функции недостижим. Обработчик формы также не запустится, если пользователь совершает похожее действие, связанное с другой командой.
Для временной проверки выбирайте исполняемую строку: присваивание, вызов метода, условие или обращение к данным. Пустая строка, комментарий, заголовок процедуры и некоторые служебные конструкции не являются самостоятельными командами. Конфигуратор может перенести маркер на ближайшее допустимое место, и фактический останов произойдёт там.
Сопоставьте открытый модуль с исполняемой конфигурацией
Распространённая причина — код изменён в конфигураторе, но конфигурация базы данных ещё не обновлена. В результате на экране открыт новый вариант модуля, а пользовательский сеанс исполняет прежний. Сохраните изменения, обновите конфигурацию базы данных и перезапустите отлаживаемый сеанс, если 1С предлагает это сделать.
В базе могут одновременно существовать основная конфигурация, конфигурация базы данных и расширения. Проверьте, где именно находится выполняемый обработчик. Расширение способно изменять или дополнять типовую логику, поэтому одноимённая процедура в основном объекте не всегда получает управление. Для проверки откройте модуль из нужного расширения и задайте останов непосредственно в нём.
Учитывайте и хранилище конфигурации. Полученный из хранилища объект может отличаться от версии, которая была открыта до обновления. После получения изменений перечитайте модуль, заново установите точки и убедитесь, что база обновлена. Это исключает ситуацию, когда визуальный маркер относится к уже заменённой редакции текста.
Уточните контекст выполнения: клиент, сервер или фон
Директивы компиляции определяют, где исполняется процедура. Пользователь нажимает кнопку в клиентском окне, но дальнейший вызов может перейти на сервер. Если точка стоит только в клиентском обработчике после серверного вызова, а внутри вызова возникает ошибка или завершается выполнение, до неё управление не вернётся.
Отдельно проверяйте регламентные и фоновые задания. Они работают не в пользовательском окне и могут запускаться под другой учётной записью. Нужно подключаться к соответствующему предмету отладки до запуска задания либо во время его выполнения, если это допускают настройки среды. Открытие формы в клиенте само по себе к такому процессу не подключает.
В веб-клиенте, тонком клиенте и толстом клиенте доступные контексты могут различаться. Если ошибка воспроизводится только в одном варианте запуска, отлаживайте именно его. Проверка в другом клиенте способна пройти успешно, хотя проблемная ветка там вообще не компилируется или не вызывается.
Разберите условную точку и состояние сеанса
Если для точки задано условие, временно уберите его. Ошибка в выражении, неожиданное значение переменной или недоступность данных в текущем контексте могут создать впечатление, что механизм не работает. Сначала добейтесь обычного останова на строке, затем добавьте короткое условие и проверьте его на известных значениях.
Точка, установленная после начала выполнения длительной процедуры, не всегда помогает проверить уже пройденный участок. Завершите операцию и запустите её снова с самого начала. При необходимости поставьте маркер выше, до входа в интересующую ветку. Не рассчитывайте, что отладчик вернёт выполнение назад.
После изменения модулей старый сеанс иногда продолжает работать с ранее загруженным кодом. Полностью закройте пользовательское приложение, убедитесь, что нужный процесс завершён, и снова запустите отладку из конфигуратора. Для фонового процесса может потребоваться дождаться нового запуска задания; порядок действий зависит от устройства конкретной системы.
Последовательная проверка без случайных изменений
- Сохраните модуль и убедитесь, что в нём нет ошибок проверки.
- Обновите конфигурацию базы данных, если изменения ещё не применены.
- Установите безусловную точку на первой исполняемой строке процедуры.
- Запустите нужный клиент или процесс через режим отладки.
- Воспроизведите ровно то действие, которое должно вызвать процедуру.
- Если останов состоялся, двигайтесь по шагам до исходной строки.
- Если реакции нет, проверьте другой модуль, расширение и контекст выполнения.
Меняйте по одному параметру за попытку и записывайте результат. Массовое удаление точек, изменение условий и перезапуск разных клиентов одновременно затрудняют диагностику: становится непонятно, какое действие помогло. Последовательность обычно позволяет отделить ошибку подключения от неверного предположения о маршруте выполнения.
Когда причина находится вне проверяемого кода
Если точки не срабатывают ни в одном модуле, включая заведомо вызываемый обработчик, проблема, вероятно, относится к настройке среды отладки. Зафиксируйте версию платформы, вариант базы, тип клиента, способ запуска и список подключённых предметов. Эти сведения помогут администратору проверить серверные параметры и журналы без догадок.
Если останов работает в тестовой базе, но отсутствует в рабочей, сравните не данные, а состав конфигурации, расширения, права и способ запуска сеанса. Не изменяйте рабочие настройки наугад. В системе с несколькими пользователями такие изменения могут затронуть чужие процессы, поэтому проверку серверной части лучше согласовать с ответственным специалистом.