Разработка и Конфигурация · 9 мин
Как включить точку останова в 1С
Как поставить и включить точку останова в конфигураторе 1С, запустить отладку, работать с условными точками и исправить типичные проблемы останова.
Точка останова — основной инструмент отладки в 1С: она заставляет программу приостановить выполнение на нужной строке модуля, чтобы разработчик мог посмотреть значения переменных, стек вызовов и понять, почему код ведёт себя не так, как ожидалось. Без точек останова поиск ошибок в сложных процедурах превращается в угадывание, поэтому умение быстро их ставить и включать — базовый навык любого разработчика и внедренца 1С.
Механика проста: точка ставится в конфигураторе на строке встроенного языка, после чего сеанс пользователя запускается в режиме отладки. Когда выполнение доходит до отмеченной строки, управление передаётся конфигуратору, и работа пользователя «замирает» до тех пор, пока разработчик не продолжит выполнение или не завершит отладку. Важно понимать, что точка останова сама по себе не сработает, если отладка не включена — это самая частая причина вопроса «почему не останавливается».
Ниже разобраны все способы установки точек останова, включение отладки для файловой и клиент-серверной базы, условные точки, остановка по ошибке и типичные проблемы, с которыми сталкиваются на практике.
Как поставить точку останова в модуле
Откройте конфигуратор, найдите нужный объект конфигурации (документ, справочник, общий модуль, обработку) и откройте его модуль — например, через правую кнопку мыши и пункт «Открыть модуль объекта» или «Открыть модуль формы». Точки останова можно ставить только на исполняемые строки встроенного языка: на комментарии, пустые строки и заголовки процедур точка не установится.
Есть три равнозначных способа поставить точку:
- щёлкнуть левой кнопкой мыши по серому полю слева от номера строки — появится красный кружок;
- поставить курсор на нужную строку и нажать клавишу F9 — повторное нажатие снимает точку;
- использовать меню «Отладка — Точка останова».
Красный кружок слева от строки — визуальное подтверждение, что точка установлена. Если вместо сплошного кружка отображается кружок с вопросительным знаком или пустой контур, значит, строка не является исполняемой либо модуль изменён после запуска отладки и точка не будет срабатывать до перезапуска.
Как включить отладку и запустить сеанс
Установленная точка работает только в сеансе, запущенном под отладкой. Самый простой путь для файловой базы — нажать F5 или выбрать «Отладка — Начать отладку»: конфигуратор сам запустит клиентское приложение, и оно автоматически подключится к предмету отладки. Если приложение уже запущено через «Сервис — 1С:Предприятие» (Ctrl+F5), оно работает без отладки, и точки не сработают — нужно либо перезапустить его через F5, либо подключить сеанс вручную.
Для подключения уже запущенного сеанса откройте «Отладка — Подключение», в списке найдите нужный сеанс по пользователю и типу приложения и нажмите «Подключить». Это удобно, когда ошибку воспроизводит другой пользователь или сеанс запущен заранее с определёнными параметрами.
- 1Откройте модуль и поставьте точку останова кликом слева от строки или клавишей F9
- 2Убедитесь, что в меню «Отладка» включён нужный тип отладки (клиент, сервер)
- 3Нажмите F5 — конфигуратор запустит клиентское приложение в режиме отладки
- 4Воспроизведите в приложении действие, которое вызывает нужный код
- 5Дождитесь останова: конфигуратор активируется и подсветит строку жёлтой стрелкой
Включение отладки на сервере 1С
Если база работает в клиент-серверном варианте, код серверных процедур выполняется на сервере 1С:Предприятия, и по умолчанию отладка там запрещена. Точки в серверных модулях будут просто игнорироваться, пока отладку не включат на уровне службы агента сервера.
Чтобы включить отладку на сервере, остановите службу «Агент сервера 1С:Предприятия», откройте параметры запуска службы (в реестре Windows в ветке ImagePath соответствующей службы или в свойствах службы) и добавьте в строку запуска ключ -debug. После сохранения запустите службу заново. На Linux ключ -debug добавляется в скрипт запуска агента сервера аналогичным образом.
После включения ключа убедитесь, что в конфигураторе в меню «Отладка — Подключение — Настройка» разрешён поиск предметов отладки на сервере и указан правильный кластер. Также проверьте, что в свойствах информационной базы не стоит запрет на отладку — он задаётся при публикации или в консоли кластера.
Условные точки останова и останов по ошибке
Когда код в цикле выполняется сотни раз, обычная точка заставит нажимать «Продолжить» на каждой итерации. В таких случаях используйте условную точку: щёлкните правой кнопкой по полю слева от строки, выберите «Условие останова» и введите выражение на встроенном языке, например СтрокаТаблицы.Номенклатура = ИскомаяНоменклатура. Останов произойдёт только когда условие истинно.
Через тот же контекстный диалог можно задать счётчик срабатываний — останов на N-м прохождении строки. Это полезно, когда ошибка проявляется не сразу, а после определённого количества итераций.
Остановка по ошибке
Если неизвестно, в каком именно месте возникает исключение, включите «Отладка — Остановка по ошибке». В настройках можно оставить останов только на ошибках с конкретным текстом. Тогда конфигуратор прервёт выполнение ровно в той строке, где возникло исключение, даже если там нет точки останова.
Условие в точке останова вычисляется при каждом прохождении строки. Если в условии сложное выражение или обращение к данным, цикл будет заметно тормозить — для длинных циклов часто быстрее поставить счётчик срабатываний.
Что делать, когда точка сработала
При останове конфигуратор подсвечивает текущую строку жёлтой стрелкой, а клиентское приложение перестаёт отвечать — это нормально. Дальнейшая навигация выполняется клавишами: F10 — шаг через (выполнить строку, не заходя в вызываемые процедуры), F11 — шаг внутрь (зайти в вызов), Shift+F11 — выполнить до выхода из текущей процедуры, F5 — продолжить выполнение до следующей точки.
Чтобы посмотреть значения, наведите курсор на переменную или откройте «Отладка — Вычислить выражение» (Shift+F9) и «Табло» (Ctrl+Alt+W). В табло можно добавить несколько выражений, и они будут пересчитываться на каждом шаге. Стек вызовов (Ctrl+Alt+C) покажет, из какой процедуры пришло выполнение.
Как проверить результат
Сплошной красный кружок слева от строки
Пустой кружок или кружок с вопросом — точка не активна
Конфигуратор активируется, строка подсвечена жёлтым
Код выполняется до конца без останова
В «Отладка — Подключение» сеанс виден и подключён
Список предметов отладки пуст или сеанс недоступен
Почему точка останова не срабатывает
Самая частая причина — приложение запущено не в режиме отладки. Проверьте, что сеанс запущен через F5 или подключён вручную. Вторая причина — код выполняется на сервере, а отладка сервера не включена либо в настройках подключения не выбран поиск серверных предметов отладки.
Также точка не сработает, если изменённый модуль не сохранён и конфигурация базы данных не обновлена: отлаживается код, который реально выполняется в базе, а не текст в редакторе. Для динамически обновляемых конфигураций перезапустите сеанс после обновления. Наконец, проверьте, что отлаживаемый код вообще вызывается — например, обработчик подписки на событие может быть отключён, а внешняя обработка может выполняться в другом сеансе или фоновом задании.
FAQ: частые вопросы о точках останова в 1С
Как быстро снять все точки останова?
Используйте меню «Отладка — Снять все точки останова» или сочетание Ctrl+Shift+F9. Это удобно перед передачей работы коллеге или после завершения поиска ошибки, чтобы лишние точки не мешали следующим сеансам отладки.
Можно ли отлаживать фоновые задания?
Да. Откройте «Отладка — Подключение», в списке предметов отладки найдите сеанс фонового задания и подключите его. Если фоновое задание ещё не запущено, в настройках подключения включите автоматическое подключение фоновых заданий — тогда отладчик подцепит его при старте.
Точка останова влияет на работу пользователей?
Сама точка — нет, она существует только в конфигураторе. Но остановленный сеанс «висит», пока вы не продолжите выполнение, а включённый на сервере режим -debug снижает производительность всего кластера. Поэтому отладку на продуктиве проводят коротко и по согласованию.
Как остановиться в модуле внешней обработки?
Откройте внешнюю обработку в конфигураторе через «Файл — Открыть», поставьте точку в её модуле, затем запустите отладку (F5) и откройте эту же обработку в клиентском приложении. Конфигуратор свяжет открытый файл с выполняющимся кодом, и точка сработает.
Почему точка отображается с вопросительным знаком?
Такой значок означает, что точка не может сработать: строка неисполняемая, модуль изменён после запуска отладки или код относится к контексту, который не подключён к отладке (например, сервер без -debug). Обновите конфигурацию, перезапустите сеанс и проверьте настройки подключения.
Чем точка останова отличается от сообщения пользователю?
Точка останова останавливает выполнение и даёт полный контроль: значения переменных, стек вызовов, пошаговое выполнение. Сообщить() лишь выводит текст и требует перезапуска для каждой новой проверки. Для разового быстрого контроля подойдёт сообщение, для поиска причины ошибки — только точка останова.
Что важно запомнить
Точка останова ставится кликом слева от строки или клавишей F9 и работает только в сеансе, запущенном под отладкой (F5). Для клиент-серверной базы включите отладку ключом -debug на сервере и не забывайте его снимать. Если точка не срабатывает — проверяйте режим запуска, подключение сеанса и актуальность конфигурации базы данных.