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

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

Точка останова в 1С: как включить и настроить отладку

Как включить точку останова в 1С: настройка отладки в конфигураторе, сочетание клавиш F9, условные точки останова, отладка на сервере и типичные ошибки.

Точка останова — основной инструмент отладки в 1С: она приостанавливает выполнение программы на заданной строке кода и позволяет посмотреть значения переменных, стек вызовов и результат выражений. Без неё поиск ошибки в сложном алгоритме превращается в перебор догадок, а с ней разработчик видит реальное состояние системы в нужный момент.

Чтобы точка останова сработала, недостаточно просто поставить маркер на строке. Отладка должна быть разрешена на уровне конфигуратора и, для клиент-серверного режима, на уровне сервера 1С. Ниже разобраны все шаги: от включения механизма до проверки того, что точка действительно срабатывает.

Что такое точка останова и когда она нужна

Точка останова (breakpoint) — это метка на конкретной строке кода встроенного языка 1С. Когда выполнение программы доходит до этой строки в режиме отладки, платформа приостанавливает работу и передаёт управление конфигуратору. Дальше можно пошагово выполнять код (F10, F11), смотреть значения переменных в табло и вычислять произвольные выражения.

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

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

Как поставить точку останова в конфигураторе

Откройте конфигуратор, перейдите в нужный модуль (модуль объекта, формы, общий модуль) и найдите строку, на которой выполнение должно остановиться. Установка выполняется одним из трёх способов:

  • нажмите клавишу F9, когда курсор стоит на нужной строке;
  • щёлкните мышью по серой полосе слева от номера строки;
  • используйте меню «Отладка — Точка останова».

Повторное нажатие F9 на той же строке снимает точку. Чтобы удалить все точки разом, используйте сочетание Ctrl+Shift+F9 или пункт меню «Отладка — Удалить все точки останова». Список всех установленных точек доступен через «Отладка — Список точек останова» — там их можно временно отключать, не удаляя.

Порядок действий
  1. 1
    Откройте модуль в конфигураторе и установите курсор на нужную строку
  2. 2
    Нажмите F9 — слева появится красный кружок
  3. 3
    Убедитесь, что отладка разрешена: Сервис — Параметры — Отладка
  4. 4
    Запустите отладку клавишей F5 или подключите уже работающий сеанс
  5. 5
    Выполните в 1С:Предприятии действие, которое вызывает отлаживаемый код
  6. 6
    Дождитесь остановки на точке и проверьте значения переменных в табло (Shift+F9)

Как включить отладку в конфигураторе

Сама по себе точка останова не активирует отладку. Проверьте настройки: откройте «Сервис — Параметры», перейдите на закладку «Отладка» и убедитесь, что установлен нужный протокол отладки (по TCP/IP или по HTTP — для современных версий платформы HTTP используется чаще). Там же задаётся, какие предметы отладки подключать автоматически.

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

После остановки на точке используйте «Отладка — Табло» (Shift+F9) для просмотра переменных и выражений, а шаги F10 (шаг через), F11 (шаг в) и Shift+F11 (шаг из) — для движения по коду. Продолжение выполнения — снова F5.

Отладка в клиент-серверном режиме

В файловой базе отладка включается сразу. В клиент-серверном варианте сервер 1С по умолчанию запущен без поддержки отладки, и точки останова в серверном коде (общие модули с признаком «Сервер», серверные процедуры форм) игнорируются. Это самая частая причина, почему «точка не срабатывает».

Чтобы включить отладку на сервере, службу агента сервера 1С нужно запустить с ключом -debug в параметрах запуска. На Windows это делается через реестр: в ветке службы агента сервера в параметр ImagePath добавляется -debug (и при необходимости -debug -http для отладки по HTTP), после чего служба перезапускается. На Linux ключ добавляется в скрипт или unit-файл запуска srv1cv8.

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

Условные точки останова и точки с выводом сообщения

Обычная точка останавливает выполнение каждый раз, что неудобно внутри цикла на тысячи итераций. Условная точка срабатывает только когда заданное выражение истинно. Чтобы её создать, откройте «Отладка — Список точек останова», выберите точку и задайте условие, например СтрокаТаблицы.Номенклатура = ИскомаяНоменклатура или Счетчик > 500.

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

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

Сравнение вариантов

Обычная точка (F9)

Подходит для разовой остановки в линейном коде; в циклах останавливает на каждой итерации

Условная точка

Срабатывает только при истинном условии; удобна в циклах и при поиске конкретного значения

Точка с сообщением

Не останавливает выполнение, а выводит значение выражения; полезна для трассировки без прерывания

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

Включается отдельно (Отладка — Остановка по ошибке); ловит момент возникновения исключения, даже если точка не стоит

Почему точка останова не срабатывает: типичные причины

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

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

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

Типичные ошибки
01
Поставить точку и запустить сеанс обычным ярлыком вместо F5 — отладка не подключена, маркер игнорируется
02
Забыть ключ -debug на сервере — серверные процедуры не останавливаются, кажется, что точка «не работает»
03
Не обновить конфигурацию базы данных после правки кода — выполняется старая версия модуля
04
Ставить точку на строку объявления переменной или комментарий — она никогда не сработает
05
Оставить десятки точек по всем модулям — отладка останавливается в неожиданных местах; очищайте список через Ctrl+Shift+F9

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

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

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

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

Как проверить результат

Маркер точки в модуле
Норма

Сплошной красный кружок на полосе слева от строки

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

Пустой кружок или значок с вопросом — точка не привязана к исполняемому коду

Список предметов отладки (Отладка — Подключение)
Норма

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

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

Виден только клиентский сеанс — сервер без ключа -debug

Поведение при выполнении кода
Норма

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

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

Действие в предприятии выполняется без остановки

Итог

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

Точка останова ставится клавишей F9 на исполняемой строке, отладка запускается через F5, а в клиент-серверном режиме сервер должен работать с ключом -debug. Если точка не срабатывает — проверяйте подключение отладки, обновление конфигурации БД и то, что код действительно выполняется.

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

Какая клавиша ставит точку останова в 1С?

F9 — установка или снятие точки на текущей строке. Ctrl+Shift+F9 удаляет все точки останова сразу, а список точек с возможностью отключения открывается через меню «Отладка — Список точек останова».

Можно ли отлаживать код, который выполняется в фоновом задании?

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

Почему точка останова показывается пустым кружком?

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

Как остановиться не на каждой итерации цикла, а только на нужной?

Используйте условную точку останова: в списке точек задайте условие, например сравнение счётчика с нужным значением, или укажите номер прохода, на котором должна произойти остановка.

Замедляет ли включённая отладка работу сервера 1С?

Да, режим -debug снижает производительность сервера и открывает возможность подключения к сеансам для отладки. На рабочих системах его включают только на время поиска проблемы, после чего ключ убирают и службу перезапускают.

Можно ли отлаживать код без остановки выполнения?

Да, для этого служит точка останова с выводом сообщения: она записывает значение заданного выражения в окно сообщений и продолжает выполнение. Это удобная замена вставке Сообщить() прямо в код конфигурации.