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