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