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

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

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

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

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

В отличие от обычного запуска, где код выполняется от начала до конца без контроля, отладка позволяет «заглянуть внутрь» процесса: увидеть, какое значение получила переменная, какая ветка условия сработала, какие параметры переданы в процедуру. Это основной инструмент поиска логических ошибок, которые не выявляются проверкой синтаксиса.

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

Что такое режим отладки и когда он нужен

Отладчик встроен в конфигуратор 1С и работает поверх обычного сеанса предприятия. Когда вы запускаете отладку, конфигуратор открывает клиентское приложение в специальном режиме: весь исполняемый код «виден» отладчику, и вы управляете его выполнением из окна конфигуратора.

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

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

Как включить отладку в файловой базе

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

Запуск отладки в файловой базе
  1. 1
    Откройте базу в конфигураторе под пользователем с правами администратора или разработчика
  2. 2
    Убедитесь, что конфигурация открыта (Конфигурация → Открыть конфигурацию)
  3. 3
    В меню выберите «Отладка → Начать отладку» или нажмите F5
  4. 4
    Выберите тип клиента (тонкий, толстый, веб), если платформа спросит
  5. 5
    Дождитесь запуска клиентского приложения — оно откроется под управлением отладчика
  6. 6
    Выполните в клиенте действия, которые приводят к нужному коду, — отладчик остановится на точке останова

Если клиент 1С уже запущен в обычном режиме, его можно подключить к отладчику без перезапуска: в конфигураторе выберите «Отладка → Подключение», найдите нужный сеанс в списке и подключитесь. При этом в свойствах подключения должен быть установлен флажок «Искать объекты для отладки автоматически» либо сеанс должен быть запущен с ключом отладки.

Обратите внимание: пользователь, под которым выполняется отладка, должен иметь право «Режим отладки» (в ролях это право «Отладка»). Без него запуск под отладчиком будет отклонен платформой.

Отладка в клиент-серверном варианте

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

Чтобы отлаживать серверный код, сервер приложений нужно запустить с ключом -debug. Обычно это делает администратор: в свойствах службы агента сервера 1С добавляется параметр -debug в строку запуска, после чего служба перезапускается. Для сервера на Linux параметр указывается в скрипте запуска агента.

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

Точки останова и пошаговое выполнение

Точка останова — это метка на строке кода, где отладчик должен приостановить выполнение. Ставится она щелчком по левому полю редактора модуля или клавишей F9 на нужной строке. Красный кружок слева означает, что точка активна. Точки можно делать условными: остановка произойдет только если выполняется заданное условие, например Контрагент = ВыбранныйКонтрагент — это удобно в циклах с сотнями итераций.

Когда выполнение остановилось, доступны основные команды управления, каждая со своей горячей клавишей:

  • Шаг через (F10) — выполнить текущую строку, не заходя внутрь вызываемых процедур;
  • Шаг внутрь (F11) — войти в вызываемую процедуру или функцию;
  • Шаг из (Shift+F11) — завершить текущую процедуру и остановиться в вызвавшем коде;
  • Продолжить (F5) — выполнять дальше до следующей точки останова;
  • Остановить — прервать отладку и завершить сеанс.

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

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

Не весь код исполняется в интерактивном сеансе: регламентные задания, фоновые процедуры, обработчики веб-сервисов и HTTP-сервисов работают в отдельных сеансах на сервере. Чтобы их отладить, нужно заранее включить автоматическое подключение таких сеансов к отладчику.

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

Для веб-сервисов дополнительно потребуется, чтобы в файле публикации (default.vrd) был разрешен режим отладки — параметр debug в соответствующем элементе. Без него сеанс веб-сервиса не станет доступен отладчику, даже если сервер запущен с ключом.

Маршрут решения

Как выбрать способ отладки

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

Типичные ошибки при работе с отладкой

Типичные ошибки
01
Точка останова стоит в коде, который не выполняется — например, в ветке условия, которая никогда не истинна. Проверьте логику условий до установки точек
02
Отладка серверного кода без ключа -debug на сервере — отладчик «проскакивает» серверные вызовы, и кажется, что процедура не вызывается
03
Отладка на рабочей базе с реальным проведением документов — тестовые действия остаются в данных и искажают учет
04
Снятая с поддержки конфигурация с измененным кодом без копии — при отладке легко потерять исходное состояние модулей
05
Забытые точки останова в коде при передаче работы коллегам — сеансы внезапно останавливаются, если кто-то подключен отладчиком
06
Попытка отладить код под пользователем без права «Отладка» — платформа отклоняет запуск без ясного объяснения причины

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

При отладке внешних обработок и отчетов помните: открытая в режиме предприятия обработка — это отдельный объект. Правки в файле обработки нужно переоткрывать в сеансе, иначе отлаживается устаревшая версия.

Как проверить, что отладка работает

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

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

Запуск отладки из конфигуратора
Норма

Клиентское приложение открылось, в заголовке или статусе видно, что сеанс под отладкой

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

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

Срабатывание точки останова
Норма

При выполнении действия в клиенте конфигуратор активизируется и показывает останов на строке

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

Код выполнился до конца без остановки — точка в недостижимой ветке или код не тот

Отладка серверного кода
Норма

При входе в серверную процедуру отладчик переходит в модуль и показывает переменные

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

F11 на серверном вызове просто выполняет строку без входа внутрь — сервер без ключа -debug

Значения переменных
Норма

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

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

Переменные пустые или недоступны — возможно, смотрите не тот контекст выполнения

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

Ограничения и безопасные практики

Режим отладки — инструмент разработчика, и у него есть ограничения. Отлаживать можно только тот код, к которому у пользователя есть доступ; модули с защищенным паролем кодом (поставка без исходных текстов) отладчик покажет как недоступные. Длительная остановка выполнения в клиент-серверной базе держит транзакции и блокировки — на рабочей базе это может мешать другим пользователям.

Основные правила безопасной работы:

  • Отлаживайтесь на копии базы, особенно если сценарий включает запись и проведение документов;
  • Не оставляйте сервер с ключом -debug в продуктивной среде дольше, чем нужно для диагностики;
  • После завершения убирайте точки останова и отключайте автоподключение сеансов;
  • Перед отладкой убедитесь, что конфигурация БД обновлена и вы смотрите актуальный код;
  • Фиксируйте найденную причину ошибки и изменения, чтобы не потерять контекст при передаче задачи.
Итог

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

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

Частые вопросы

Почему точка останова не срабатывает, хотя код точно выполняется?

Чаще всего причины три: конфигурация базы данных не обновлена после правки модуля (обновите через F7), код исполняется на сервере без ключа -debug, либо выполняется другая версия объекта — например, старая открытая копия внешней обработки. Проверьте также, что точка стоит в достижимой ветке условий.

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

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

Как отладить регламентное задание, которое запускается по расписанию?

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

Нужны ли особые права для запуска отладки?

Да. У пользователя должно быть право «Отладка» (в типовых ролях оно обычно есть у администраторов и разработчиков). Без этого права платформа не позволит запустить сеанс под отладчиком.

Чем отладка отличается от замера производительности?

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

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

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