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