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

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

Режим отладки в 1С: что это такое и как его использовать

Что такое режим отладки в 1С, зачем он нужен, как включить его в конфигураторе и тонком клиенте, какие виды отладки существуют и каких ошибок избегать.

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

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

Отладка доступна во всех современных версиях платформы 1С:Предприятие 8 и работает как в файловых, так и в клиент-серверных информационных базах. При этом важно понимать: отладка — инструмент анализа, а не исправления данных. Она не меняет информацию в базе сама по себе, но неосторожные действия в отлаживаемом сеансе могут привести к записи нежелательных изменений.

Что происходит в режиме отладки и какие задачи он решает

Когда сеанс запущен под отладкой, отладчик получает контроль над выполнением кода. Разработчик расставляет точки останова — метки на конкретных строках модулей. Как только исполнение доходит до такой строки, выполнение приостанавливается, и управление переходит в конфигуратор.

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

Типовые задачи, которые решают отладкой: поиск причины ошибки «Метод объекта не обнаружен» или «Поле объекта недоступно для записи», проверка условий проведения документа, анализ результата запроса к базе, разбор логики обмена данными, проверка обработчиков подписок на события.

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

Базовый сценарий выглядит так: откройте конфигуратор, войдите под пользователем с правами на отладку и в меню «Отладка» выберите «Начать отладку» или нажмите F5. Платформа запустит клиентское приложение в отладочном режиме, и все действия в нём будут проходить через отладчик.

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

Порядок запуска отладки
  1. 1
    Откройте конфигуратор и проверьте, что у пользователя есть право «Отладка»
  2. 2
    Откройте нужный модуль и поставьте точку останова на строке, где ожидается проблема
  3. 3
    Выберите «Отладка» → «Начать отладку» или нажмите F5
  4. 4
    В запустившемся клиенте выполните действие, которое вызывает ошибку
  5. 5
    Дождитесь остановки в точке прерывания и проанализируйте значения переменных

Если сеанс пользователя уже запущен без отладки, его можно подключить: меню «Отладка» → «Подключение». В списке отобразятся доступные предметы отладки — сеансы, у которых включён признак доступности. Чтобы сеанс был виден в списке, в параметрах запуска клиента должен быть указан ключ отладки (например, через свойства ярлыка или параметр /debug).

Основные инструменты отладчика

Пошаговое выполнение управляется тремя основными командами. «Шагнуть через» (F10) выполняет текущую строку, не заходя внутрь вызываемых процедур. «Шагнуть в» (F11) проваливается внутрь вызова — полезно, когда нужно проследить логику конкретной функции. «Шагнуть из» выходит из текущей процедуры в место её вызова. Команда «Идти до курсора» выполняет код до строки, где стоит курсор.

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

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

Отладка на сервере, в фоновых заданиях и внешних соединениях

В клиент-серверном режиме часть кода исполняется на сервере, и отладчик должен быть подключён именно к серверному процессу. Платформа поддерживает два протокола отладки: по протоколу TCP и по протоколу HTTP через сервер отладки. Современный вариант — отладка по HTTP, она позволяет автоматически подключать новые предметы отладки и удобнее при работе с кластером.

Фоновые задания и регламентные операции не попадают в отладку автоматически, даже если она включена. Чтобы их анализировать, в настройках отладки (меню «Отладка» → «Настройка») включают автоматическое подключение соответствующих типов предметов отладки. После этого при запуске фонового задания отладчик остановится на первой строке его обработчика.

Типичные проблемы при включении отладки

Самая частая ситуация — отладчик не останавливается в точке прерывания. Причины обычно такие: точка поставлена в серверном коде, а отладка на сервере не включена; сеанс запущен без ключа отладки; код выполняется в другом сеансе (например, в фоновом задании); конфигурация базы данных отличается от конфигурации, открытой в конфигураторе, — тогда строки «уезжают», и точка стоит не там.

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

Типичные ошибки
01
Отладка в рабочей базе с записью данных — тестовые документы остаются в учёте и искажают отчёты
02
Точка останова в цикле без условия — отладчик останавливается сотни раз; ставьте точку с условием срабатывания
03
Забытые точки останова после анализа — следующий сеанс отладки останавливается в неожиданных местах
04
Попытка отладить фоновое задание без автоподключения предметов отладки — код выполняется мимо отладчика
05
Анализ устаревшей конфигурации: конфигуратор и база не синхронизированы, точки стоят не на тех строках

Альтернативы отладке: когда она не нужна или недоступна

Не каждая задача требует отладчика. Простые проверки быстрее выполнить через сообщения пользователю, запись в журнал регистрации или консоль кода. Журнал регистрации незаменим, когда ошибка возникает у пользователя в непредсказуемый момент и воспроизвести её под отладкой нельзя: в журнале видны ошибки, предупреждения и контекст сеанса.

Для анализа запросов удобнее консоль запросов — она показывает результат без запуска всей логики прикладного решения. Для замеров производительности существует отдельный инструмент — замер производительности в конфигураторе, который показывает, какие строки кода занимают больше всего времени.

Сравнение способов диагностики

Отладчик

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

Журнал регистрации

Работает всегда, фиксирует ошибки у любых пользователей. Не показывает значения переменных и логику ветвлений

Сообщения в коде

Простой способ для разовой проверки. Засоряет код, требует изменения конфигурации и её обновления

Консоль запросов

Быстрая проверка выборок из базы. Не анализирует исполняемый код и обработчики

Проверка результата и завершение работы с отладчиком

После того как причина ошибки найдена, завершите сеанс отладки корректно: команда «Отладка» → «Завершить» останавливает клиентское приложение, «Отключить» — отсоединяет отладчик, оставляя сеанс работать. Проверьте, что все точки останова сняты, а изменения в конфигурации, сделанные для диагностики, либо осмысленно сохранены, либо отменены.

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

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

Причина ошибки
Норма

Конкретная строка и значение, приведшее к сбою, установлены и воспроизводятся

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

Ошибка «сама пропала» — причина не найдена, проблема вернётся

Состояние базы
Норма

В рабочей базе нет тестовых документов и записей, созданных в отладочном сеансе

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

В журнале документов появились лишние объекты от имени разработчика

Точки останова
Норма

Все точки сняты, список в «Отладка» → «Точки останова» пуст

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

Остались активные точки — следующие сеансы будут останавливаться

Права и настройки
Норма

Временные права на отладку отозваны, протокол отладки на сервере в штатном состоянии

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

Право «Отладка» осталось у широкого круга пользователей

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

Итог

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

Режим отладки 1С — инструмент пошагового анализа кода с точками останова и просмотром переменных. Включается через конфигуратор, требует права «Отладка» и, для серверных баз, разрешения отладки на сервере. Анализ проводите на копии базы, после работы снимайте точки останова и проверяйте, что в учёте не осталось тестовых данных.

Частые вопросы о режиме отладки 1С

Может ли обычный пользователь работать, пока идёт отладка?

Да. Отладка влияет только на тот сеанс, который подключён к отладчику. Остальные пользователи продолжают работать в обычном режиме. Исключение — момент перезапуска службы сервера для включения протокола отладки, когда сеансы всех пользователей прерываются.

Почему отладчик не видит мой сеанс в списке подключения?

Чаще всего сеанс запущен без ключа отладки. Добавьте параметр /debug в строку запуска клиентского приложения или включите отладку через настройки запуска из конфигуратора. Также проверьте, что в настройках отладчика выбран правильный протокол и разрешён поиск предметов отладки.

Как отладить код, который выполняется на сервере?

Нужно, чтобы сервер 1С был запущен с разрешением отладки, а в конфигураторе выбран соответствующий протокол (TCP или HTTP через сервер отладки). После этого точки останова в серверных процедурах срабатывают так же, как в клиентских.

Можно ли поставить точку останова, которая срабатывает не всегда?

Да, у точки останова есть условие срабатывания: оно задаётся через свойства точки. Например, в цикле по тысяче строк можно остановиться только тогда, когда переменная принимает конкретное значение. Это существенно ускоряет анализ длинных циклов.

Опасна ли отладка для данных в базе?

Сам отладчик данные не меняет, но отлаживаемый сеанс — полноценный сеанс 1С. Если в нём провести документ или выполнить обработку с записью, изменения сохранятся в базе. Поэтому эксперименты безопаснее проводить на копии базы.

Что делать, если ошибку нельзя воспроизвести под отладкой?

Используйте журнал регистрации: настройте отбор по ошибкам и пользователю, чтобы увидеть контекст сбоя. Дополнительно можно временно добавить в код запись диагностической информации в журнал регистрации — это работает без остановки сеанса и не требует присутствия разработчика в момент ошибки.