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

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

Почему не срабатывает точка останова в 1С и как это исправить

Разбираем, почему точка останова в 1С не срабатывает: отладка не включена, не тот клиент, серверный код, фоновые задания. Пошаговые проверки и решения.

Точка останова в конфигураторе 1С перестаёт срабатывать по ограниченному набору причин: отладка не запущена или запущена не для того сеанса, код выполняется в другом контексте (на сервере, в фоновом задании, в другом клиенте), либо сама строка никогда не исполняется из-за логики программы. Проблема почти всегда решается системной проверкой настроек, а не переустановкой платформы.

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

Ниже разобраны основные причины в порядке частоты встречаемости: от банального неподключённого предмета отладки до тонкостей с HTTP-сервисами и фоновыми заданиями. Для каждой причины приведён способ проверки и исправления.

Отладка не запущена или запущена неправильно

Самая частая причина — конфигуратор открыт, точки расставлены, но сеанс предприятия запущен обычным способом, а не через отладку. Точки останова работают только когда конфигуратор находится в режиме отладки и «держит» сеанс. Запуск выполняется клавишей F5 или через меню «Отладка → Начать отладку».

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

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

Базовая проверка отладки
  1. 1
    Откройте конфигуратор и поставьте точку останова в нужной строке
  2. 2
    Нажмите F5 (Отладка → Начать отладку) и дождитесь запуска клиента
  3. 3
    Выполните в клиенте действие, которое вызывает нужный код
  4. 4
    Если останов не произошёл — откройте Отладка → Подключение и проверьте список предметов отладки

Код выполняется на сервере, а серверная отладка не включена

В клиент-серверном варианте работы весь код с директивами &НаСервере, серверные модули и общие серверные модули исполняются на сервере 1С:Предприятия. Чтобы отладчик видел этот код, сервер должен быть запущен с ключом отладки. Без него точки останова в серверном коде молча игнорируются — это вторая по частоте причина проблемы.

Для службы агента сервера 1С отладка включается параметром -debug в строке запуска службы. В Windows это делается через реестр (параметр ImagePath службы агента сервера) или перерегистрацией службы утилитой ragent с нужными ключами. После изменения службу нужно перезапустить, что на рабочем сервере требует согласования — пользователи будут отключены.

Признак того, что проблема именно в этом: точки в клиентском коде (&НаКлиенте) срабатывают, а в серверном — нет. Дополнительно проверьте в конфигураторе «Сервис → Параметры → Отладка»: там должен быть выбран протокол отладки, совместимый с версией сервера (для современных платформ — отладка по TCP или HTTP в зависимости от настроек кластера).

Не тот предмет отладки: тонкий клиент, веб-клиент, фоновые задания

Один конфигуратор может отлаживать несколько сеансов, но по умолчанию подключается только тот, что запущен через F5. Если код исполняется в другом месте — в уже открытом тонком клиенте, в веб-клиенте, в сеансе другого пользователя или в фоновом задании — его нужно подключить вручную через «Отладка → Подключение».

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

Фоновые задания и регламентные операции

Код, запущенный через ФоновыеЗадания.Выполнить() или регламентные задания, исполняется в отдельном сеансе. Такой сеанс появляется в списке предметов отладки только в момент выполнения и может «проскочить» быстрее, чем вы его подключите. Практический приём — временно добавить в начало метода цикл ожидания или вызов, дающий время подключиться, либо отлаживать логику, вызывая метод напрямую из клиента.

Веб-сервисы и HTTP-сервисы

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

Клиентские точки работают, серверные нетСервер запущен без отладки

Проверьте ключ -debug в параметрах службы агента сервера

Не работают ни клиентские, ни серверныеОтладка не запущена или сеанс не подключён

Проверьте F5 и список в Отладка → Подключение

Не работает только в фоновом заданииСеанс задания не подключён к отладке

Подключите предмет отладки вручную в момент выполнения

Строка есть, но останов не происходитКод не исполняется по логике

Проверьте условия, вызовы и актуальность конфигурации БД

Строка с точкой останова реально не исполняется

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

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

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

Настройки конфигуратора и протокол отладки

В меню «Сервис → Параметры → Отладка» задаётся способ соединения отладчика с предметами отладки. Несовпадение протокола между конфигуратором и сервером (например, сервер настроен на отладку по HTTP, а конфигуратор ищет по TCP) приводит к тому, что предметы отладки не видны. Параметры должны соответствовать настройкам кластера.

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

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

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

Маршрут диагностики

Точка не срабатывает в файловой базеПроверьте запуск через F5 и актуальность конфигурации БД (F7)
Не срабатывает только серверный кодВключите отладку на сервере ключом -debug и перезапустите службу агента
Не срабатывает в фоновом задании или веб-клиентеПодключите предмет отладки вручную через Отладка → Подключение
Сеанс не виден в списке подключенияПроверьте протокол отладки в параметрах конфигуратора и доступность портов
Отладчик подключён, но строка не достигаетсяПроверяйте логику: условия, расширения, подписки на события, реально вызываемый модуль

Частые ошибки и как их избежать

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

Типичные ошибки разработчика
01
Запуск клиента из ярлыка вместо F5 — сеанс не под контролем отладчика, точки игнорируются
02
Изменили модуль, но не обновили конфигурацию БД — отлаживается старый код, точки стоят не в тех строках
03
Точка в основной конфигурации, а код переопределён расширением — исполняется другая версия метода
04
Отладка серверного кода без ключа -debug на сервере — точки молча пропускаются
05
Попытка подключиться к фоновому заданию после его завершения — сеанс уже закрыт
06
Точка в строке с комментарием, объявлением переменной или пустой строке — останов невозможен по определению

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

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

Проверка результата и когда обращаться к администратору

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

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

Как проверить, что отладка работает

Индикатор в конфигураторе
Норма

Активны команды остановки и продолжения отладки

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

Доступна только команда «Начать отладку»

Список предметов отладки
Норма

Нужный сеанс виден и отмечен как подключённый

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

Сеанс отсутствует или не подключён

Точка в клиентском коде формы
Норма

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

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

Останова нет даже в простом обработчике

Конфигурация БД
Норма

Конфигурация обновлена, изменений не требуется

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

Есть необновлённые изменения (диалог при F5)

Если базовые проверки пройдены, а серверные точки по-прежнему не срабатывают, дальнейшие действия требуют прав администратора: изменение параметров службы агента сервера, настройка портов и протокола кластера. Самостоятельно менять эти настройки на рабочем сервере не стоит — ошибка в строке запуска службы может остановить работу всего кластера.

Итог

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

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

Частые вопросы

Точка останова стала полой (с пустым центром) — что это значит?

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

Можно ли отладить код у конкретного пользователя на рабочей базе?

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

Почему точка не срабатывает в модуле внешней обработки?

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

Точки срабатывают, но переменные показывают не те значения, что в коде?

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

Не срабатывает точка в подписке на событие — в чём причина?

Сначала убедитесь, что подписка активна и событие реально наступает (например, запись объекта происходит именно тем способом, на который подписка настроена). Если код подписки серверный — нужна включённая отладка на сервере. Также проверьте, не отключена ли подписка в свойствах или через функциональные опции.

Работает ли отладка в мобильном клиенте и мобильной платформе?

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