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

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

Как запустить 1С:Предприятие в режиме отладки

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

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

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

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

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

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

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

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

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

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

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

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

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

В клиент-серверном режиме код делится на клиентский и серверный. Клиентский код отлаживается сразу, а вот серверный — только если сервер 1С запущен в режиме отладки. Это самая частая причина ситуации, когда точка останова в серверном модуле «не работает».

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

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

bash
"C:\Program Files\1cv8\8.3.x.xxxx\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -debug -http

Настройка точек останова и пошаговое выполнение

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

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

Значения переменных смотрят через табло (Shift+F9), окно «Вычислить выражение» или простым наведением курсора на переменную. В табло можно добавить сложные выражения, например обращение к свойствам объекта или вызов функции — но учитывайте, что вычисление выражения с вызовом функции фактически выполняет её код.

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

Внешние обработки и отчёты

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

Фоновые задания и регламентные операции

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

HTTP- и веб-сервисы

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

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

Типичные проблемы и их решения

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

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

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

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

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

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

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

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

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

Панель «Предметы отладки» в конфигураторе
Норма

Виден подключённый сеанс клиентского приложения

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

Список пуст — отладка не запущена или сеанс не подключён

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

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

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

Точка игнорируется — проверьте обновление конфигурации

Точка останова в серверном модуле
Норма

Остановка происходит при вызове серверной процедуры

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

Не останавливается — сервер запущен без ключа -debug

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

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

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

Итог

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

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

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

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

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

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

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

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

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

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

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

Работает ли отладка в веб-клиенте?

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

Что делать, если конфигуратор зависает при остановке на точке?

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