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

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

Как запустить отладку в 1С: практическое руководство

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

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

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

Материал ориентирован на платформу 1С:Предприятие 8.3. Интерфейс конфигуратора в разных версиях платформы практически одинаков, поэтому инструкции применимы и к более ранним, и к более новым релизам линейки 8.3.

Что нужно проверить перед запуском отладки

Прежде чем нажимать F5, убедитесь, что выполнены три условия. Первое — у вас есть права на конфигуратор в данной базе (роль с правом «Конфигуратор» или полные права). Второе — конфигурация не находится в режиме полной поддержки без возможности изменения, если вы планируете ставить точки в коде, который требует обновления конфигурации базы данных. Третье — отладка разрешена на уровне базы или сервера.

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

Точка останова не активируетсяКод не выполняется или отладка запрещена

Разрешена ли отладка в свойствах базы и на сервере

Конфигуратор не видит сеансПредмет отладки не подключён

Список предметов отладки: «Отладка → Подключение»

Останавливается не в том местеВыполняется другой экземпляр кода

Какой клиент и какой сеанс реально выполняет операцию

Быстрый запуск отладки из конфигуратора

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

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

Дальше доступны стандартные команды пошагового выполнения: F10 — шаг через вызов процедуры, F11 — шаг с заходом внутрь, Shift+F11 — выйти из текущей процедуры, F5 — продолжить выполнение до следующей точки. Значения переменных смотрите в окне «Локальные переменные» или через «Вычислить выражение» (Shift+F9).

Порядок действий
  1. 1
    Откройте конфигуратор и модуль с нужным кодом
  2. 2
    Поставьте точку останова клавишей F9
  3. 3
    Нажмите F5 — запустится клиентское приложение
  4. 4
    Выполните в приложении действие, вызывающее код
  5. 5
    Дождитесь остановки и проверьте переменные через Shift+F9

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

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

Чтобы разрешить отладку на сервере, службу агента сервера 1С нужно запускать с ключом отладки. На Windows это делается через параметры запуска службы: в строке запуска агента добавляется параметр -debug (а для отладки по HTTP в новых версиях платформы — -debug -http). После изменения параметров службу необходимо перезапустить — учтите, что это разорвёт сеансы всех пользователей рабочего сервера.

В конфигураторе дополнительно откройте «Отладка → Подключение» и убедитесь, что в списке предметов отладки виден серверный предмет с нужной базой. Если в свойствах информационной базы в консоли кластера отключён флаг «Разрешена отладка», включите его и укажите используемый протокол отладки (TCP или HTTP) — он должен совпадать с настройкой в конфигураторе.

Подключение к уже запущенному сеансу

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

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

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

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

Тонкий клиент отлаживается так же, как толстый: выберите его в параметрах запуска («Сервис → Параметры → Запуск 1С:Предприятия») и начните отладку через F5. Учтите, что в тонком клиенте недоступен ряд серверных возможностей, поэтому часть кода выполняется иначе, чем в толстом клиенте, — это нормально и отражает реальное поведение системы у пользователей.

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

Сравнение вариантов

Запуск через F5 из конфигуратора

Подходит для большинства задач на файловой базе; сеанс подключается автоматически, но воспроизводит только ваши действия

Подключение к работающему сеансу

Нужен, когда ошибка возникает у конкретного пользователя или в специфических условиях; требует, чтобы сеанс допускал отладку

Отладка на сервере 1С

Обязательна для серверных процедур в клиент-серверном режиме; требует перезапуска службы с ключом -debug

Типовые ошибки и как их исправить

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

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

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

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

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

Быстрый тест: поставьте точку останова в обработчике, который гарантированно выполняется, — например, в обработчике «ПриСозданииНаСервере» любой формы или в начале процедуры проведения документа. Запустите отладку через F5 и выполните соответствующее действие. Если конфигуратор остановился на точке и показал стек вызовов — отладка настроена корректно.

Если остановки нет, двигайтесь по цепочке: выполняется ли код вообще → виден ли сеанс в списке предметов отладки → разрешена ли отладка в свойствах базы и на сервере → совпадает ли протокол отладки (TCP/HTTP) в настройках кластера и конфигуратора. Такая последовательная проверка локализует проблему за несколько минут.

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

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

Точка останова в конфигураторе
Норма

Красный маркер, при выполнении кода происходит остановка

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

Маркер с восклицательным знаком или остановки нет

Список предметов отладки
Норма

Виден сеанс клиента и серверный предмет для вашей базы

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

Список пуст или нет нужного типа сеанса

Свойства базы в консоли кластера
Норма

Флаг «Разрешена отладка» включён, протокол совпадает с конфигуратором

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

Отладка выключена или протоколы различаются

Итог

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

Базовый сценарий: точка останова (F9) → запуск (F5) → воспроизведение действия → анализ переменных. Если точка не срабатывает, ищите причину в разрешении отладки на сервере, в подключении к нужному сеансу или в фоновом выполнении кода.

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

Почему точка останова отображается с восклицательным знаком?

Такой маркер означает, что конфигуратор не может связать точку с исполняемым кодом: модуль изменён после установки точки, код относится к предмету отладки, который не подключён (например, к серверу при запрещённой серверной отладке), или конфигурация базы данных не обновлена после изменений. Обновите конфигурацию базы (F7) и перепроверьте подключение.

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

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

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

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

Чем отличается отладка по протоколу HTTP от отладки по TCP?

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

Отладка замедляет работу системы — это нормально?

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

Можно ли изменить значение переменной прямо во время отладки?

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