Разработка и Конфигурация · 14 мин
Отладка в 1С 8.3 в конфигураторе: что это и для чего нужна
Что такое отладка в конфигураторе 1С 8.3, для чего она нужна, как запустить отладчик, поставить точку останова, посмотреть переменные и найти ошибку в коде.
Отладка в 1С 8.3 — это режим пошагового выполнения программного кода встроенного языка, при котором разработчик может наблюдать, как реально работает конфигурация: какие значения получают переменные, в какие процедуры и функции заходит программа, на какой строке возникает ошибка. Отладчик встроен прямо в конфигуратор и не требует установки отдельных программ.
Главная задача отладки — найти причину неправильного поведения программы. Код может не выдавать явной ошибки, но при этом неправильно рассчитывать сумму документа, не проводить документ, не заполнять отчёт или записывать неверные данные в регистры. Простым чтением кода такие дефекты находить долго, а пошаговое выполнение показывает реальную картину на каждой строке.
Отладчик нужен не только для исправления ошибок. Его используют, чтобы разобраться в чужом или давно написанном коде, понять порядок вызова обработчиков событий, проверить логику перед переносом доработки в рабочую базу. Для специалиста по 1С умение работать с отладкой — базовый навык, без которого серьёзная доработка конфигурации практически невозможна.
Что такое отладка и как она устроена в 1С
Технически отладка в 1С работает через протокол HTTP: конфигуратор подключается к отладочному серверу, который взаимодействует с исполняемым клиентским приложением или сервером 1С. Когда выполнение кода доходит до точки останова, программа приостанавливается, и управление переходит разработчику в конфигураторе.
В момент остановки доступны основные инструменты анализа: просмотр значений переменных и реквизитов объектов, табло выражений, стек вызовов процедур и функций, а также команды пошагового выполнения — шаг с заходом в процедуру, шаг без захода, выполнение до конца текущей процедуры и продолжение до следующей точки останова.
Важно понимать, что отладка выполняется на живых данных конкретной информационной базы. Если в процессе отладки код записывает документ или изменяет регистр, изменения реально сохраняются. Поэтому эксперименты с отладкой корректно проводить на копии базы, а не в рабочей базе пользователей.
Для чего нужна отладка на практике
Первая и самая частая задача — локализация ошибки. Когда пользователь сообщает «документ не проводится» или «в отчёте неверная сумма», отладчик позволяет пройти весь путь выполнения кода и увидеть, на каком именно шаге логика расходится с ожиданием: не заполнился реквизит, запрос вернул пустую выборку, условие не сработало из-за типа данных.
Вторая задача — проверка новой доработки. Прежде чем переносить изменения в рабочую конфигурацию, разработчик прогоняет код под отладкой на тестовых данных, убеждается, что все ветки алгоритма отрабатывают корректно, и только после этого обновляет конфигурацию базы.
Третья задача — изучение типовой конфигурации. В типовых решениях логика разнесена по десяткам общих модулей и подписок на события. Отладка показывает реальный порядок вызовов: какие обработчики срабатывают при проведении документа, в какой момент вызывается та или иная функция, откуда берётся конкретное значение.
Отладка особенно эффективна, когда ошибка воспроизводится стабильно. Если дефект плавающий — зависит от данных или порядка действий, сначала зафиксируйте точные шаги воспроизведения, иначе отладчик окажется бесполезен: код будет выполняться корректно просто потому, что условия ошибки не наступили.
Как запустить отладку в конфигураторе
Для запуска отладки откройте конфигуратор нужной базы и выполните команду меню «Отладка — Начать отладку» или нажмите клавишу F5. Конфигуратор запустит клиентское приложение в режиме отладки, и все сеансы, запущенные из него, будут автоматически подключены к отладчику.
Если приложение уже запущено, можно подключить его к отладке через меню «Отладка — Подключение». В окне подключения выберите нужный сеанс и тип отлаживаемого кода. Это удобно, когда ошибку воспроизводит пользователь в уже открытом сеансе.
Для отладки кода, выполняемого на сервере (серверные процедуры, фоновые задания, веб-сервисы), сервер 1С должен быть запущен в отладочном режиме — с ключом -debug в параметрах запуска службы агента сервера. Без этого флага серверный код отладчик не увидит, и точки останова в серверных модулях срабатывать не будут.
- 1Откройте конфигуратор нужной информационной базы
- 2Убедитесь, что для серверной базы сервер запущен с ключом -debug
- 3Установите точки останова на нужных строках кода (F9 или клик по полю слева от строки)
- 4Нажмите F5 или выберите «Отладка — Начать отладку»
- 5В открывшемся клиентском приложении выполните действие, вызывающее нужный код
- 6Дождитесь остановки на точке и проанализируйте значения переменных
Точки останова и пошаговое выполнение
Точка останова ставится кликом по серому полю слева от строки кода или клавишей F9. Красный кружок означает активную точку. Точку можно сделать условной: в свойствах точки останова задаётся выражение, и остановка произойдёт только когда оно истинно. Это незаменимо в циклах — например, остановиться только на итерации, где номенклатура равна конкретному значению.
После остановки код выполняется по шагам. Клавиша F11 — «шагнуть в»: выполнение заходит внутрь вызываемой процедуры или функции. F10 — «шагнуть через»: процедура выполняется целиком, остановка происходит на следующей строке текущего модуля. Shift+F11 — «шагнуть из»: код довыполняется до конца текущей процедуры. F5 — продолжить выполнение до следующей точки останова.
Стек вызовов (окно «Стек вызовов» в меню «Отладка») показывает цепочку процедур, которая привела к текущей строке. Это критически важно в типовых конфигурациях: по стеку видно, какой обработчик события или общий модуль инициировал выполнение, и можно перейти на любой уровень стека, чтобы посмотреть значения переменных там.
Как смотреть значения переменных и выражений
Быстрый способ — навести курсор мыши на переменную в остановленном коде: конфигуратор покажет всплывающую подсказку со значением. Для постоянного наблюдения используется табло (меню «Отладка — Табло»): в него добавляют переменные и произвольные выражения, и их значения обновляются на каждом шаге.
В табло можно вписывать не только имена переменных, но и выражения встроенного языка: вызовы функций, обращения к свойствам объектов, например ДокументОбъект.Товары.Количество() или Запрос.Выполнить().Пустой(). Для объектов со сложной структурой (документы, таблицы значений, выборки из запроса) доступно разворачивание дерева свойств.
Через команду «Вычислить выражение» (Shift+F9) можно выполнить произвольный код в контексте остановленной программы — это позволяет проверить гипотезу, не меняя исходный код модулей. Учтите, что вычисляемые выражения реально выполняются: если выражение изменяет данные, изменения произойдут по-настоящему.
Отладка серверного кода, фоновых заданий и веб-сервисов
Серверный код — самая частая причина «неработающей» отладки: точка останова стоит в серверной процедуре, но не срабатывает. Причина почти всегда одна — сервер не запущен в отладочном режиме. Проверьте параметры запуска службы агента сервера 1С и наличие ключа -debug, после изменения параметров службу нужно перезапустить.
Фоновые задания отлаживаются через подключение: в окне «Отладка — Подключение» выберите тип предмета отладки «Фоновое задание» и нужный сеанс. Аналогично подключаются сеансы веб-сервисов и HTTP-сервисов — они появляются в списке, когда приходит внешний вызов.
Для файловых баз всё проще: клиент и «серверный» код выполняются в одном процессе, отдельная настройка не требуется, достаточно запуска отладки из конфигуратора. Поэтому первичную проверку доработок удобно делать на файловой копии базы, а серверную специфику проверять уже на тестовом сервере.
Как выбрать действие
Типичные ошибки при работе с отладчиком
Самая распространённая ошибка — отладка неактуальной версии кода. Разработчик изменил модуль, но не обновил конфигурацию базы данных (F7), и отлаживает старый код: точки останова «съезжают», строки не совпадают с логикой. Признак — конфигуратор сообщает о расхождении конфигурации базы данных и конфигурации разработчика.
Вторая ошибка — попытка отлаживать код, который физически не выполняется: процедура стоит в ветке условия, которое никогда не истинно, или обработчик отключён в подписке на событие. Если точка останова не срабатывает, первым делом проверьте, доходит ли выполнение вообще до этого модуля — поставьте точку выше по стеку вызовов.
Третья ошибка — забытые точки останова и отладочный режим сервера после завершения работы. Точки с условиями в циклах замедляют выполнение, а сервер в режиме -debug работает медленнее и открывает дополнительный порт. После завершения анализа снимите все точки («Отладка — Отключить все точки останова») и верните рабочие параметры сервера.
Ограничения отладчика и альтернативные способы анализа
Отладчик не всесилен. Он не показывает, что происходит внутри запроса на уровне СУБД — для анализа медленных запросов используют консоль запросов и план запроса. Не подходит отладка и для поиска проблем производительности в целом: здесь нужен замер производительности (меню «Отладка — Замер производительности»), который показывает, какие строки кода заняли больше всего времени.
Некоторые ситуации вообще невозможно остановить: код в момент обрыва соединения, ошибки платформы, падения рабочего процесса. Для таких случаев применяют технологический журнал — он фиксирует события на уровне платформы и помогает понять контекст сбоя.
Простую проверку значений иногда быстрее сделать без отладки: вывести сообщение через Сообщить(), записать в журнал регистрации или воспользоваться внешней обработкой «консоль кода». Но как только логика становится нетривиальной — ветвления, циклы, вызовы между модулями — полноценная отладка окупается многократно.
Способы поиска ошибок в 1С
Универсальный инструмент для пошагового анализа логики. Ограничение: требует воспроизведения ситуации и останавливает выполнение
Для поиска медленных участков кода. Не показывает логику, только время выполнения строк
Для простых проверок и анализа на рабочей базе, где отладку запускать нельзя. Не даёт пошаговой картины
Для ошибок платформы, взаимоблокировок, обрывов соединения. Требует настройки и навыков чтения логов
Как проверить, что ошибка исправлена
После исправления кода обновите конфигурацию базы данных и повторите под отладкой тот же сценарий, на котором ошибка воспроизводилась. Убедитесь, что проблемная строка теперь получает ожидаемые значения, а результат выполнения — проведённый документ, заполненный отчёт, корректная сумма — совпадает с эталонным.
Проверьте не только исходный сценарий, но и смежные: если менялся общий модуль, доработка могла затронуть другие документы и отчёты, которые его вызывают. Минимальный контроль — прогнать основные прикладные операции, зависящие от изменённого кода.
Как проверить результат
Ошибка не возникает, значения в табло соответствуют ожидаемым
Ошибка повторяется или появляется в другом месте кода
Работают как до доработки
Появились новые ошибки в документах или отчётах
Все точки сняты, сервер возвращён в рабочий режим
Остались активные точки или сервер работает с -debug
Что важно запомнить
Отладка в 1С 8.3 — встроенный в конфигуратор инструмент пошагового выполнения кода с просмотром переменных и стека вызовов. Запускается по F5, для серверного кода требует ключ -debug у службы сервера. Работайте на копии базы, обновляйте конфигурацию БД после изменений и снимайте точки останова по завершении анализа.
Частые вопросы по отладке в 1С 8.3
Почему точка останова не срабатывает, хотя код точно выполняется?
Наиболее вероятные причины: конфигурация базы данных не обновлена после изменения модуля, сервер запущен без ключа -debug (для серверного кода), либо сеанс не подключён к отладчику. Также проверьте, что точка стоит на исполняемой строке — на комментариях и объявлениях переменных она не сработает.
Можно ли отлаживать код на рабочей базе, где работают пользователи?
Технически можно через подключение к сеансу, но делать это следует крайне осторожно: остановленный на точке код удерживает блокировки и транзакции, что может остановить работу других пользователей. Для анализа логики безопаснее снять копию базы и отлаживаться на ней.
Как отладить код, который выполняется только на сервере?
Служба агента сервера 1С должна быть запущена с параметром -debug. После этого в конфигураторе в настройках отладки (меню «Отладка — Подключение — Настройка») отметьте нужные типы предметов отладки, включая серверные. После изменения параметров службы её необходимо перезапустить.
Чем отличаются клавиши F10 и F11 при пошаговом выполнении?
F11 («шагнуть в») заходит внутрь вызываемой процедуры или функции, позволяя проследить её выполнение построчно. F10 («шагнуть через») выполняет вызов целиком и останавливается на следующей строке текущего модуля — так пропускают заведомо корректные процедуры, чтобы не терять время.
Можно ли изменить значение переменной прямо во время отладки?
Да. В табло или через «Вычислить выражение» (Shift+F9) можно присвоить переменной новое значение и продолжить выполнение уже с ним. Это удобно для проверки гипотезы без изменения кода, но помните: если дальше по коду идёт запись в базу, она выполнится с подменёнными данными.
Что делать, если ошибка не воспроизводится под отладкой?
Сначала зафиксируйте точные условия возникновения: пользователь, данные, последовательность действий. Плавающие ошибки часто связаны с конкретными данными или правами — воспроизводите сценарий под той же учётной записью и на тех же документах. Если ошибка на уровне платформы, подключите технологический журнал.