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