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

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

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

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

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

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

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

Для чего нужен режим отладки на практике

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

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

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

Непонятная ошибкаТекст ошибки не указывает причину

Отладка покажет строку и контекст сбоя

Неверный результатКод работает, но данные неправильные

Пошагово проверить расчёты и значения переменных

Чужой кодНеясно, какие процедуры вызываются

Точки останова покажут реальный маршрут выполнения

Проверка доработкиНовый код перед сдачей

Прогнать сценарий с контролем граничных значений

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

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

Для клиент-серверного варианта предварительно нужно разрешить отладку на сервере 1С:Предприятия. Это делается в консоли кластера: в свойствах рабочего сервера устанавливается признак «Отладка разрешена» и при необходимости указывается диапазон портов отладки. После изменения настройки службу сервера 1С требуется перезапустить — без перезапуска отладка серверных вызовов работать не будет.

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

Как запустить отладку в файловой базе
  1. 1
    Откройте конфигуратор нужной базы
  2. 2
    Установите точку останова: щёлкните слева от строки кода или нажмите F9
  3. 3
    Нажмите F5 (Отладка → Начать отладку)
  4. 4
    В открывшемся клиенте выполните действие, которое вызывает нужный код
  5. 5
    Когда выполнение остановится, проходите код клавишами F10 (шаг через) и F11 (шаг в)
  6. 6
    Проверьте значения переменных через табло (Ctrl+Alt+W) или всплывающие подсказки

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

Точка останова — базовый инструмент. Она ставится на строку кода, и исполнение останавливается перед её выполнением. Точки бывают условными: например, остановиться только когда переменная «Контрагент» равна конкретному значению. Это незаменимо, когда процедура вызывается в цикле сотни раз, а проблема возникает только на одной записи.

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

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

Отладка серверного кода и фоновых заданий

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

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

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

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

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

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

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

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

Альтернативы отладке: когда проще без неё

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

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

Что выбрать вместо отладки

Сообщить / журнал регистрации

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

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

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

Замер производительности

Для поиска медленных участков кода; не помогает при логических ошибках

Полная отладка

Универсальный способ найти причину ошибки; требует прав и осторожности в рабочей базе

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

Отладка считается завершённой не тогда, когда вы «прошли код глазами», а когда воспроизводимое условие ошибки однозначно связано с конкретной строкой и конкретным значением. Например: «проверка на строке 42 срабатывает, потому что реквизит Склад не заполнен для номенклатуры типа Услуга». Такая формулировка позволяет сделать точечное исправление, а не менять код «наугад».

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

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

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

Причина локализована
Норма

Известна конкретная строка и значение, вызвавшее сбой

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

Есть только общее подозрение на модуль

Исправление работает
Норма

Исходный сценарий выполняется без ошибки

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

Ошибка ушла, но результат данных неверный

Смежные сценарии
Норма

Проведение, отмена, другие типы данных работают

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

Исправление ломает соседнюю логику

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

Все временные точки сняты

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

Забытые точки останавливают сеансы

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

Почему точка останова не срабатывает?

Чаще всего код выполняется на сервере, а отладка сервера не включена или не подключены серверные предметы отладки. Также проверьте, что клиент запущен именно из отладки (F5), база в конфигураторе и в клиенте одна и та же, а у пользователя есть право «Отладка».

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

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

Чем отличается F10 от F11 при пошаговой отладке?

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

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

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

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

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

Отладка замедляет работу базы?

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

Итог

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

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