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

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

Отладка в 1С 8.3 в конфигураторе: что это и для чего нужна

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

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

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

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

Что такое отладка и как она устроена в 1С

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Как смотреть значения переменных и выражений

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

В табло можно вписывать не только имена переменных, но и выражения встроенного языка: вызовы функций, обращения к свойствам объектов, например ДокументОбъект.Товары.Количество() или Запрос.Выполнить().Пустой(). Для объектов со сложной структурой (документы, таблицы значений, выборки из запроса) доступно разворачивание дерева свойств.

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

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

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

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

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

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

Как выбрать действие

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

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

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

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

Третья ошибка — забытые точки останова и отладочный режим сервера после завершения работы. Точки с условиями в циклах замедляют выполнение, а сервер в режиме -debug работает медленнее и открывает дополнительный порт. После завершения анализа снимите все точки («Отладка — Отключить все точки останова») и верните рабочие параметры сервера.

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

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

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

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

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

Способы поиска ошибок в 1С

Отладчик конфигуратора

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

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

Для поиска медленных участков кода. Не показывает логику, только время выполнения строк

Журнал регистрации и Сообщить()

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

Технологический журнал

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

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

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

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

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

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

Воспроизведение исходного сценария
Норма

Ошибка не возникает, значения в табло соответствуют ожидаемым

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

Ошибка повторяется или появляется в другом месте кода

Смежные операции, использующие изменённый код
Норма

Работают как до доработки

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

Появились новые ошибки в документах или отчётах

Состояние точек останова и режима сервера
Норма

Все точки сняты, сервер возвращён в рабочий режим

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

Остались активные точки или сервер работает с -debug

Итог

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

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

Частые вопросы по отладке в 1С 8.3

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

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

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

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

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

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

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

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

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

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

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

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