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

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

Отладка в 1С: для чего она нужна и как работать с ней на практике

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

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

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

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

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

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

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

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

СимптомОшибка «Метод объекта не обнаружен» или «Поле не найдено»

Проверить в отладчике реальный тип объекта и состав его свойств

СимптомОтчёт показывает неверные итоги

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

СимптомКод «молча» не выполняется

Проверить условия: какая ветка Если...Тогда на самом деле срабатывает

Как включить отладку и запустить сеанс

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

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

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

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

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

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

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

Просмотр переменных, табло и стек вызовов

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

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

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

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

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

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

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

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

Ещё одна распространённая ситуация — попытка отладить то, что проще проверить иначе. Если нужно просто посмотреть значение в одном месте, иногда быстрее временно вывести сообщение через Сообщить() или записать значение в журнал регистрации. Отладка оправдана, когда нужно понять логику, а не получить единичное значение.

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

Инструменты диагностики в 1С

Отладчик

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

Журнал регистрации

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

Сообщить() и замеры

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

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

Итог

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

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

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

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

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

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

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

Как отладить обмен данными или веб-сервис?

Для веб-сервисов и HTTP-сервисов отладка выполняется через подключение к сеансу, который создаётся при обращении к сервису. Удобно временно добавить в код остановку, чтобы сеанс успел появиться в списке подключений конфигуратора.

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

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

Нужна ли отладка, если есть журнал регистрации?

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