Разработка и Конфигурация · 10 мин
Точка останова в 1С: как включить и настроить отладку
Как включить точку останова в 1С: настройка отладки в конфигураторе, сочетание клавиш F9, условные точки останова, отладка на сервере и типичные ошибки.
Точка останова — основной инструмент отладки в 1С: она приостанавливает выполнение программы на заданной строке кода и позволяет посмотреть значения переменных, стек вызовов и результат выражений. Без неё поиск ошибки в сложном алгоритме превращается в перебор догадок, а с ней разработчик видит реальное состояние системы в нужный момент.
Чтобы точка останова сработала, недостаточно просто поставить маркер на строке. Отладка должна быть разрешена на уровне конфигуратора и, для клиент-серверного режима, на уровне сервера 1С. Ниже разобраны все шаги: от включения механизма до проверки того, что точка действительно срабатывает.
Что такое точка останова и когда она нужна
Точка останова (breakpoint) — это метка на конкретной строке кода встроенного языка 1С. Когда выполнение программы доходит до этой строки в режиме отладки, платформа приостанавливает работу и передаёт управление конфигуратору. Дальше можно пошагово выполнять код (F10, F11), смотреть значения переменных в табло и вычислять произвольные выражения.
Точки останова ставят, когда нужно понять, почему процедура возвращает неожиданный результат, в каком порядке вызываются обработчики событий, какие параметры приходят в функцию или почему условие не срабатывает. Это быстрее и точнее, чем расставлять по коду сообщения через Сообщить(), потому что не требует изменять конфигурацию и не засоряет логику.
Важно понимать: точка останова работает только в сеансе, запущенном под отладкой, или в сеансе, который конфигуратор подключил к отладке уже после запуска. Обычный запуск пользовательского режима без отладки маркеры игнорирует.
Как поставить точку останова в конфигураторе
Откройте конфигуратор, перейдите в нужный модуль (модуль объекта, формы, общий модуль) и найдите строку, на которой выполнение должно остановиться. Установка выполняется одним из трёх способов:
- нажмите клавишу F9, когда курсор стоит на нужной строке;
- щёлкните мышью по серой полосе слева от номера строки;
- используйте меню «Отладка — Точка останова».
Повторное нажатие F9 на той же строке снимает точку. Чтобы удалить все точки разом, используйте сочетание Ctrl+Shift+F9 или пункт меню «Отладка — Удалить все точки останова». Список всех установленных точек доступен через «Отладка — Список точек останова» — там их можно временно отключать, не удаляя.
- 1Откройте модуль в конфигураторе и установите курсор на нужную строку
- 2Нажмите F9 — слева появится красный кружок
- 3Убедитесь, что отладка разрешена: Сервис — Параметры — Отладка
- 4Запустите отладку клавишей F5 или подключите уже работающий сеанс
- 5Выполните в 1С:Предприятии действие, которое вызывает отлаживаемый код
- 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 вручную.
Отдельный полезный режим — точка останова с выводом сообщения: вместо остановки платформа записывает заданное выражение в окно сообщений и продолжает выполнение. Это заменяет вставку Сообщить() в код и не требует изменять конфигурацию.
Сравнение вариантов
Подходит для разовой остановки в линейном коде; в циклах останавливает на каждой итерации
Срабатывает только при истинном условии; удобна в циклах и при поиске конкретного значения
Не останавливает выполнение, а выводит значение выражения; полезна для трассировки без прерывания
Включается отдельно (Отладка — Остановка по ошибке); ловит момент возникновения исключения, даже если точка не стоит
Почему точка останова не срабатывает: типичные причины
Если красный маркер стоит, а остановки нет, проверяйте причины в таком порядке. Во-первых, сеанс может быть запущен не под отладкой — закройте предприятие и запустите его через F5 из конфигуратора. Во-вторых, код может выполняться на сервере, а сервер работает без ключа -debug.
В-третьих, отлаживаемый код может вообще не выполняться: условие выше по коду не проходит, обработчик события не назначен, вызывается другая версия процедуры. Проверьте это, поставив точку в самом начале модуля или на строке, которая гарантированно исполняется. В-четвёртых, конфигурация базы данных могла не обновиться после изменения кода — обновите её (F7) и перезапустите сеанс.
Ещё одна частая ситуация: точка отображается с вопросительным знаком или пустым кружком. Это значит, что платформа не может связать точку с исполняемым кодом — например, модуль изменён после запуска сеанса или точка стоит в недоступном для данного сеанса контексте (клиентская точка для серверного вызова).
Как проверить, что отладка настроена правильно
Самая надёжная проверка — поставить точку на первую строку очевидно выполняемого кода, например в обработчике «ПриНажатии» кнопки на форме, и нажать эту кнопку в сеансе. Если конфигуратор активировался и подсветил строку жёлтым — вся цепочка (настройки, подключение, серверный режим) работает.
Дополнительно откройте «Отладка — Подключение» и посмотрите список доступных предметов отладки: в клиент-серверном режиме при корректной настройке там присутствуют и клиентские, и серверные пункты. Отсутствие серверных предметов — прямой признак того, что служба запущена без -debug.
Как проверить результат
Сплошной красный кружок на полосе слева от строки
Пустой кружок или значок с вопросом — точка не привязана к исполняемому коду
Видны клиентский и серверный предметы отладки
Виден только клиентский сеанс — сервер без ключа -debug
Конфигуратор активируется, строка подсвечена жёлтым, табло показывает переменные
Действие в предприятии выполняется без остановки
Что важно запомнить
Точка останова ставится клавишей F9 на исполняемой строке, отладка запускается через F5, а в клиент-серверном режиме сервер должен работать с ключом -debug. Если точка не срабатывает — проверяйте подключение отладки, обновление конфигурации БД и то, что код действительно выполняется.
Частые вопросы
Какая клавиша ставит точку останова в 1С?
F9 — установка или снятие точки на текущей строке. Ctrl+Shift+F9 удаляет все точки останова сразу, а список точек с возможностью отключения открывается через меню «Отладка — Список точек останова».
Можно ли отлаживать код, который выполняется в фоновом задании?
Да. Откройте «Отладка — Подключение» и в списке предметов отладки найдите сеанс фонового задания, затем подключите его. В клиент-серверном режиме сервер при этом должен быть запущен с ключом -debug, иначе фоновые сеансы в списке не появятся.
Почему точка останова показывается пустым кружком?
Пустой кружок или значок с вопросом означает, что точка не связана с исполняемым кодом: модуль изменён после запуска сеанса, конфигурация БД не обновлена или строка находится в контексте, недоступном текущему сеансу. Обновите конфигурацию базы данных (F7) и перезапустите отладку.
Как остановиться не на каждой итерации цикла, а только на нужной?
Используйте условную точку останова: в списке точек задайте условие, например сравнение счётчика с нужным значением, или укажите номер прохода, на котором должна произойти остановка.
Замедляет ли включённая отладка работу сервера 1С?
Да, режим -debug снижает производительность сервера и открывает возможность подключения к сеансам для отладки. На рабочих системах его включают только на время поиска проблемы, после чего ключ убирают и службу перезапускают.
Можно ли отлаживать код без остановки выполнения?
Да, для этого служит точка останова с выводом сообщения: она записывает значение заданного выражения в окно сообщений и продолжает выполнение. Это удобная замена вставке Сообщить() прямо в код конфигурации.