Как работать с отладкой в 1С 8.3 и 8.2
Отладка 1С — очень мощный и функциональный механизм платформы 1С 8.3, позволяющий быстро найти ошибки в программном коде (в других языках программирования это называется «дебаг», от английского «debug»).
Ниже рассмотрим основные методы использования механизма отладки в виде практической инструкции на конкретном примере.
Внимание! Если Вы используете клиент-серверный режим работы (на сервере), Вам необходимо включить отладку на сервере 1С Предприятия.
Содержание
Запуск отладки в 1С
Самый простой способ запустить отладку в 1С — открыть 1С в режиме конфигуратор и из него запустить режим отладки в нужном режиме работы (тонком/толстом, управляемом/обычном):
Рекомендуем при рядовой разработке использовать режим отладки «Толстого клиента». Но в чистовом варианте всегда прогонять в режиме «тонкого» и «веб-клиента».
Отладка фоновых заданий 1С
Для того чтобы иметь возможность отладки фоновых заданий, необходимо зайти в меню «Отладка — Подключение». В открывшемся окне нажать кнопку «Автоматическое подключение»:
Если вы только начинаете программировать в 1С или просто хотите систематизировать свои знания - попробуйте Школу программирования 1С нашего друга Владимира Милькина. Пошаговые и понятные уроки даже для новичка с поддержкой учителя.
Попробуйте бесплатно по ссылке >>
В этом окне Вы можете установить соответствующий флаг.
Помимо фоновых заданий, в данном окне Вы можете включить отладку внешних соединений, http и web-сервисов.
Установка точки останова (брейкпойнта)
Вторым этапом при отладке является установка точки останова (в других языках программирования — брейкпойнт).
Для примера я выбрал для отладки обработчик «При изменении» на форме документа Доверенность:
Для того чтобы установить точку останова, необходимо найти нужный программный код и кликнуть дважды на поле, слева от поля ввода кода (или нажать кнопку F9):
Чтобы увидеть список всех установленных, необходимо зайти в меню Отладка — Список точек останова (alt + F9):
Точка останова 1С с условием (синяя)
Помимо обычной точки останова в 1С есть еще один вид точек останова — с условием. Графически такая точка отображается синим цветом. Такая точка останова очень полезна, когда нужно отловить какую-либо определенную итерацию при обходе в цикле. Отладка включится в тот момент, когда выполнится определенное условие.
Например, остановим цикл на строке с номером 25:
Неактивная точка останова (серая)
Серая точка останова означает, что она не активна, система не будет останавливаться на такой точке. Сделать не активной её можно, нажав специальную кнопку на панели «Отключить точку останова» (shift+ctrl+F9):
Точка останова по ошибке
Система может остановиться по вызванной ошибке, для этого необходимо в меню Отладка — Остановка по ошибке установить соответствующий флаг:
Также остановка по ошибке имеет функционал, аналогичный точке остановки с условием, — она позволяет отфильтровать исключения с определенным текстом ошибки.
Пошаговое перемещение по программному коду 1С
После установки точки останова необходимо инициировать выполнение нужного программного кода, чтобы система вошла в пошаговое исполнения кода. Отображение стрелки свидетельствует о запуске режима пошагового выполнения кода:
Для того чтобы сделать шаг к следующей строке, необходимо нажать кнопку «F11″(Шагнуть в).
Если Вы пошагово проходите по строчкам программного кода и на строке присутствует процедура или функция, то Вы «провалитесь» внутрь этой процедуры (или функции).
Чтобы не «проваливаться», достаточно вместо F11 (Шагнуть в) выполнять переход по строкам кнопкой F10 (Шагнуть через), эта кнопка позволяет перешагивать через процедуры в программном коде.
Чтобы перейти с текущего положения курсора к нужному, минуя промежуточные строчки кода, необходимо установить курсор на нужной строке и нажать shift + F10 (Идти до курсора).
Анализ значений в режиме отладки 1С
Посмотреть значения определенных значений можно разными способами:
Отображение значения при наведении курсора
При наведении на переменную система «подсвечивает» значения переменной:
Использование «Вычислить выражение» или «Табло»
- Форму Вычислить выражение можно вызвать с помощью контекстного меню или нажатия быстрых клавиш — (Shift + F9), или меню (Отладка — Вычислить выражение).
- Табло вызывается с помощью быстрых клавиш Ctrl + Alt +W или из меню (Отладка — Табло).
Эти два метода анализа очень похожи, основные отличия в интерфейсе. Табло удобнее использовать для группы показателей, выражения — для одиночных.
Использовать эти методы очень просто. Достаточно ввести в табло имя нужной переменной. Большой плюс произвольных вычислений — Вы можете добавить в выражение свои данные.
Например:
Очень полезно использовать вычисление выражения и выполнить запрос, выгрузить в таблицу значений и посмотреть её.
Как узнать откуда вызвана процедура в отладке — Стек вызовов
Очень часто требуется понять, откуда была вызвана та или иная процедура или функция и с какими параметрами. Для этого в 1С предусмотрена специальная функция — «Стек вызовов». Для запуска Стека вызовов необходимо нажать горячие клавиши — Ctrl + Alt + C или через меню (Отладка — Стек вызовов).
С помощью него Вы можете подробно узнать, откуда была вызвана процедура и с какими параметрами:
Если Вас интересует оценка производительности при отладке — Замер производительности при отладке.
Смотрите также обзорное видео по отладке в 1С:
Другие статьи по 1С:
- Администрирование (обновление 1С, резервные копии и т.д);
- Программирование 1С
- Обучение 1С
Если Вы начинаете изучать 1С программирование, рекомендуем наш бесплатный курс (не забудьте подписаться на YouTube — регулярно выходят новые видео):
К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.
СПРОСИТЕ в комментариях!
igor:
Замечательно написано
Кирилл:
спасибо)))
Аноним:
в чем отличие работы в режиме предприятия при отладке и без нее? Тоесть у меня в ут 11.3 некоторые действия в режиме отладки выполняются в несколько раз быстрее чем в обычном режиме.
Валерьян:
Какая же это полная инструкция, если про отладку по http написано всего одно слово, ничуть не отражающее реалии?
Аноним:
спасибо — про стек очень выручило)
Ицхак:
Спасибо
Кирилл:
Здравствуйте,на форуме 1с мне написали про отладчик и штрих коды такую фразу «Разве штрихкоды пишут не в Отладчике, чтобы потом их отлаживать? )».Встал вопрос- как писать в отладчике штрих коды)
Ноунэйм:
Вы не упомянули одну важную вещь.
Если в Табло помещаем какую-нибудь функцию/процедуру, то надо учитывать, что она выполняется параллельно с нашим кодом в модуле. И соответственно влияет на наш результат.
erlsm:
Здравствуйте, в клиент-серверном варианте не останавливается в точке останова в процедурах &НаСервере и не проваливается в такие процедуры. Можно ли настроить отладчик чтобы это работало.
аноним:
-debug включите в реестре
Аноним:
А почему в Табло объект с типом массив не разворачивается как дерево (как Структура)
Дмитрий:
В отладчике хочу посмотреть json ответ от сайта (строка), он показывается обрезанным. Какие ограничения по длине строк в отладчике? Настраивается ли это?
Андр:
Как включить режим отладки в работающем зависшем сеансе, чтоб не останавливать и запускать заново, а предположительно поменять флаг через переменную, памяти, чтоб режим отладки стал разрешён на этого сеанса
Анастасия:
Доброго дня.
Я не могу понять, как заполняется стек вызова- в нём нет никаких данных.
Я сделала замер производительности, информация есть.
Роман:
Добрый день. Неплохая статья. Расскажите еще про функцию «Установить значение» в форме «Вычислить выражение».
Аноним:
У меня не запускалась Отладка, покуда я не зашел в Отладка- Подключение ; и выбрал там доступный сеанс.