Встроенный язык. Встроенный язык Что такое отладчик в 1с


Ключевые слова: отладчик, отладка, управление, точка останова, пошаговое выполнение

Те, кто хоть раз работал с отладчиком VBA, мечтают о том, чтобы и в 1С можно было изменять значения переменных и переходить на любую точку кода.

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

Применение этих функций основано на том, что в табло отладчика в режиме Конфигуратора или 1С:Предприятия можно вызывать доступные в контексте точки останова функции. Примеры нужно вводить в табло Ctrl+Alt+W или в окно просмотра значения выражения Shift+F9 и сразу же получать результат.

Функция ДУ

Эта функция позволяет в любой момент выполнить любой код на языке 1С над любыми данными, переданными ей.

Функция Ду(Код, П=Неопределено, П1 =Неопределено, П2 =Неопределено, П3 =Неопределено, П4 =Неопределено) Экспорт Перем Р; Выполнить(Код); Возврат Р; КонецФункции

Примеры:
= Сообщает некий текст
Ду("Сообщить(1) ")
= Присваивает переменной Отказ значение истина
Ду("П=истина ", Отказ)
= Закрывает форму
Ду("П.Закрыть() ", ЭтаФорма)
= В отладчике нельзя вызвать процедуру, но можно это сделать через ДУ:
Ду("ЗавершитьРаботуСистемы() ");

Функция Присвоить

Всем известно, что в 1С80 нельзя по хоту отладки менять значения переменных.
Однако есть выход!
В общем модуле объявите функцию:

Функция Присвоить(А,Б) Экспорт А=Б; Возврат А; КонецФункции

Теперь вы можете в любой момент присвоить значение переменной.

Примеры:
Присвоить(флПродолжать, ложь ); Присвоить(Остаток, ОстатокНаСкладе()-11 );

Отладка в типовой конфигурации

А что же делать, если вам досталась отладка конфигурации, в которой нет этих замечательных функций?

Все очень просто. Создайте внешнюю обработку, занесите в ее модуль эти функции с ключевым словом экспорт и вызывайте их например так:

ВнешниеОбработки.Создать("C:\debug.epf ").Присвоить(А, Неопределено);

Манипуляции со стеком.

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

Нужно открыть окно стека (Ctrl+F3), перейти на нужны уровень и ввести в табло имя переменной.
Лучше всего это рассмотреть на примере рекурсивной функции:
Функция Тест(А) Если А>10 Тогда Возврат ложь ; Иначе Возврат Тест(А+1 ); КонецЕсли; КонецФункции

Поставьте в этой функцию точку останова и вы увидите что на разных уровнях стека переменная А принимает разные значения.

Прерывание работы программы

К сожалению, в 1С 80 можно прекратить работу некоторого кода только прекратив работу всего 1С:Предприятия. Так сказать, для борьбы с головной болью нужно отрубить голову. :)
Но не все так плохо.

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

А=1 ; Если Спр.Код>А Тогда Возврат Неопределено; КонецЕсли;

Используйте вызов:
Присвоить(Спр,0 );

Теперь, как только выполнение кода дойдет до строки с "Если", возникнет ошибка и выполнение прекратится.

Упреждающий просмотр

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

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

Изменение кода на лету

Если у вас много кода выполняется в операторе Выполнить, то лучше этот код занести в некоторую переменную, чтобы при случае можно было изменить этот код. Расскажу случай из практики.

Отлаживал я как-то одну обработку по обмену данными - там было много кусков кода, выполняющихся через Выполнить. Вот беда случилась - загружали мы большой файл (многометровый) и так обидно, если грузится он час, а потом вылетает на какой-нибудь мелкой ошибке в коде, которая была не выявлена на этапе отладки, всегда в самых неожиданных местах.

Маялись мы маялись, а потом придумали - все вызовы Выполнить были вынесены в одну функцию, куда передавался код для выполнения и параметры. Это нам и сослужило хорошую службу.

Мы вставили Выполнить в Попытка-Исключение и если происходило исключение, предлагали программисту вживую изменить код. Если он соглашался, открывался диалог ввода кода, где он мог заменить старый код на новый. И перед выполнение кода мы проверяли, имеется ли он в списке замен. Если имеется, то мы перед выполнением подменяли старый код на новый. Так нам удалось быстро загрузить данные.

Отладка на сервере

Чтобы съэкономить вам нервы, сообщаю, что отлаживать код, который выполняется на сервере (в трехзвенке), невозможно. Поэтому если у вас программа в файловом варианте останавливается на точке останова, а в серверном - нет, не пугайтесь, так и задумано. Ведь код выполняется на сервере приложений и не может поэтому отлаживаться на клиенте.

Условная точка останова

Не все знают, что в 1С 80 есть условная точка останова - точка останова по условию. Однако это очень полезный механизм.

Трассировка

Иногда возникает необходимость в трассировке кода программы - т.е. в выдаче в окошко сообщений значений переменных на каждом проходе через точку кода.

Для этих целей в 1С можно использовать условную точку останова, т.к. условие проверяется на каждом проходе кода через условную точку останова.

Рассмотрим код:
С=0 ; Для Инд=1 по 10 Цикл С=С+Инд; КонецЦикла; //Здесь ставим условную точку останова

На указанной строке ставим точку останова с условием:
ДУ("Сообщить(""Сумма:""+П) ", С)

Теперь при отладке программы в окошке сообщения трассируется выполнение кода:

Сумма:1
Сумма:3
Сумма:6
Сумма:10
Сумма:15
Сумма:21
Сумма:28
Сумма:36
Сумма:45
Сумма:55

Естественно, можно использовать условия и выводить не все сообщения, а только при интересующих нас значениях переменных:
ДУ("Если Сумма>10 Тогда Сообщить(""Сумма:""+П) КонецЕсли ", С)

Метод удобен тем, что не нужно вносить изменения в конфигурацию.
Удобно ловить ошибки, когда 1С "вылетает", если записывать сообщения в файл.

Управление кодом

Предположим у нас есть такой код:
Если А=0 Тогда ИначеЕсли А=1 Тогда ИначеЕсли А=2 Тогда КонецЕсли;
В таком случае мы можем применять программное управление кодом.
На начале оператора Если ставим условную точку останова:
?(А=1 , Присвоить(А,2 ), Присвоить(А, 1 ))
Т.е. если А=1 то мы присваиваем А значение 2, и присваиваем 1 в противоположном случае.
Это позволяет, не меняя конфигурацию, постоянно перенаправлять код на нужную нам ветку.
Можно просто поставить условную точку останова, которая будет присваивать А нужное значение:
Присвоить(А,2 )

Обозримая трассировка

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

Предлагаю оформлять такие вызовы так, чтобы перед вызовом сообщения стояла точка с запятой:
;Сообщить("Сумма= "+Сумма);

Если трассировка временно не нужна, ее нужно убрать так:
//;Сообщить("Сумма="+Сумма);

Тогда все активные трассировки можно найти по строке ";Сообщить", а все неактивные - по строке "//;Сообщить".

Интерфейс для отладки

Честно говоря, когда мне надоело постоянно после перезапуска 1С заходить через Операции-Документы в список нужных мне документов, я создал себе интерфейс "Отладчик" и в его меню воткнул нужные мне команды. Теперь после перезапуска я оказывался в нужном мне журнале/форме с одного клика.

Другой вариант - создать себе целый отладочный десктоп - т.е. сразу открыть все нужные формы и документы. Для этого лучше всего создать внешнюю обработку, назвать ее например "Открывалка" и в форме этой обработки написать, что нужно открывать:
Процедура ПередОткрытием(Отказ, СтандартнаяОбработка) Документы.ПриходнаяНакладная.ПолучитьФормуСписка().Открыть(); Отказ=истина ; КонецПроцедуры
Теперь достаточно открыть эту внешнюю обработку и десктоп настроится. В следующий раз эта обработка уже будет в списке недавно открытых файлов.

Более простой вариант для ленивых - в табло написать вычисление выражений (например с помощью ДУ), которые откроют нужные документы и журналы. Легко и быстро!

Еще один простой вариант - использование истории отборов. Тогда вам нужно только сделать отбор по нужному документу, обязательно закрыть 1С крестиком, а не через прекращение отладки (чтобы сохранились условия отбора), а затем после запуска 1с зайти в нужный список и нажать историю отбора.

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

Известно, что код на сервере не отлаживается.
Поэтому варианты отладки:
1. Трассировка (вставка диагностических сообщений).
2. Выгрузить базу в файловую копию и там отлаживать.
3. Поставить галочку "Клиент" на интересующем вас модуле и отлаживать. Потом вернуть галочку обратно.
Примечание: В 1С v 8.1 появилась возможность отлаживать код на сервере. Для этого сервер нужно запустить в режиме отладки, можно из командной строки: ragent.exe /debug

Использование внешней обработки

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

Подсовывание тестовых данных

Иногда в базе сложно получить пример, при котором выполняется некое экзотическое условие.
В таком случае проще подсунуть тестовые данные.
Например, если в коде обрабатывается некоторая таблица значений, можно прямо в коде прописать очистку этой таблицы значений и заполнение ее новыми данными, при которых выполняется это экзотическое условие.
Для тех, кто не любит портить код ради отладки, можно посоветовать с помощью функции ДУ вызвать внешнюю обработку, которая заполнит таблицу значений как нам надо (например считает ее из макета).

Отладка блокировок

Иногда нужно посмотреть, как ведут себя два параллельных процесса.
Простейший способ отладки таких ситуаций - вставить в коде вызов процедуры Предупреждение().
Например, в событии ПриЗаписи объекта вставляем вызов Предупреждение("Идет запись объекта!!!").
Тогда если открыть другую сессию и попытаться записать объект, выдастся предупреждение, что объект заблокирован.

Если такая отладка вызывается часто, рекомендую такой способ вызова сразу двух сессий 1С.
Из отладчика нажимаете F5 (Запустить отладку), запускается 1С:Предприятие. Отключаетесь от отладки этого 1С Предприятия - "Отладка"->"Отключиться", затем еще раз нажимаете Ф5. В итоге вторая сессия у вас подключена к отладчику. Запускаете код с предупреждением в первой сессии и отлаживаетесь во второй.

Ускорение отладки

Отладчик снижает скорость работы программы.
Поэтому можно поступить так - отключить отладчик, а в нужном месте вывести Предупреждение();
Когда выведется предупреждение, можно опять подключить отладчик, поставить точку останова и начать отладку.

Поиск точки останова

Иногда сложно найти, в какую процедуру заходит программа по нажатию кнопки. В таком случае выбирайте команду отладчика "Остановить" и нажимайте кнопку. Программа остановится на первой же строке кода. У метода есть недостаток - если подключен обработчик ожидания, то программа может остановиться на нем, а не на коде кнопки, если код обработчика ожидания сработает раньше. ;-)

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

Ниже рассмотрим основные методы использования механизма отладки в виде практической инструкции на конкретном примере.

Внимание! Если Вы используете клиент-серверный режим работы (на сервере), Вам необходимо .

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

Отладка фоновых заданий 1С

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

В этом окне Вы можете установить соответствующий флаг.

Помимо фоновых заданий, в данном окне Вы можете включить отладку внешних соединений, http и .

Установка точки останова (брейкпойнта)

Вторым этапом при отладке является установка точки останова (в других языках программирования — брейкпойнт).

Для примера я выбрал для отладки обработчик «При изменении» на форме документа :

Для того чтобы установить точку останова, необходимо найти нужный программный код и кликнуть дважды на поле, слева от поля ввода кода (или нажать кнопку F9):

Чтобы увидеть список всех установленных, необходимо зайти в меню Отладка — Список точек останова (alt + F9):

Получите 267 видеоуроков по 1С бесплатно:

Точка останова 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С

Имеющиеся в наличии инструменты отладки собраны в меню - «Отладка» можно вызвать соответствующими горячими клавишами или из меню «Отладка».

Меню «Отладка»

Точки останова

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


Работе с точками останова посвящена секция меню «Отладка»:

  • Точка останова (F9) - устанавливает/удаляет точку останова в строке на которой стоит курсор;
  • Точка останова с условием - устанавливает точку останова и открывает окно для ввода условия - логического выражения, повторное использование команды в этой же строке откроет окно для редактирования условия. Останов в указанной точке будет выполнен только если условие истинно;
  • Включить/отключить точку останова (Ctrl+Shift+F9) - включает/отключает точку останова;
  • Удалить все точки останова - удаляет все точки останова во всех модулях;
  • Отключить все точки останова - отключает все точки останова во всех модулях;
  • Список точек останова (Alt+F9) - открывает окно для просмотра и управления точками останова, о нем ниже.

Кроме этого пункт меню «Отладка» - «Остановка по ошибке…» также можно отнести к работе с точками останова, так как эта команда позволяет останавливать выполнение кода при возникновении ошибки и переходит к строке которая вызвала ошибку.

Команда «Список точек останова» (Alt+F9) открывает окно для просмотра и управления точками останова:


Окно «Точки останова»

В окне показаны все точки останова во всех модулях, их расположение (модуль и номер строки) и условие (если есть). Имеется возможность включить/отключить/удалить точки останова, перейти к месту установки точек останова, сохранить и загрузить список точек останова.

Пошаговое выполнение

После того как сработает какая-либо точка останова и управление перейдет к отладчику обычно следует пошаговое выполнение кода модуля. Для пошагового выполнения в меню «Отладка» (и на панели отладки) имеется соответствующая группа команд - они появляются в момент подключения первого из предметов отладки.

В режиме пошаговой отладки исполнение кода приостанавливается после каждой команды и ждет инструкций от отладчика. А инструкции бывают следующими:

  • Шагнуть в (F11) - если следующая команда это процедура/функция, то начинается пошаговая отладка этой функции, иначе отладчик просто переходит к следующей команде;
  • Шагнуть через (F10) - если следующая команда это процедура/функция, то она полностью выполняется (не пошагово) и отладчик переходит к следующей команде;
  • Шагнуть из (Shift+F11) - прерывает пошаговое выполнение процедуры/функции и останавливается на первом операторе после выхода из нее;
  • Идти до курсора (Shift+F10) - выполняются все операторы до строки на которой стоит курсор;
  • Текущая строка - перемещает курсор в ту строку, на которой остановился отладчик;
  • Продолжить отладку (F5) - прерывает пошаговую отладку и продолжает свободное исполнение модуля.

Управление отладкой осуществляется при помощи соответствующих команд меню «Отладка»:

  • Перезапустить (Ctrl+Shift+F5) - прекращает выполнение конфигурации и производить повторyый запуск в режиме «1С:Предприятия»;
  • Завершить (Shift+F5) - прекращает выполнение модуля и завершает работу текущего предмета отладки;
  • Остановить - останавливает выполнение модуля на текущем операторе и позволяет начать отладку со следующей исполняемой строки.
  • Остановка по ошибке - открывает окно настройки остановки по ошибке:

Окно «Выражение» (Shift+F9)


Окно «Выражение»

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

Табло (Ctrl+Clt+W)


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

Окно «Локальные переменные»


Окно «Локальные переменные»

Специальное окно, которое во время отладки показывает список локальных переменных текущего метода. Редактировать таблицу переменных нельзя.


Когда управление находится у отладчика имеется возможность изменять значения переменных и свойства объектов (доступные для записи). Доступ к этой функции можно получить из окна выражений (подчеркнутая кнопка на рисунке выше), а также из контекстного меню в окне локальных переменных и в табло (такой же значок как и в окне выражений).

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

После нажатия кнопки «Установить» в нижней части появится сообщение, которое проинформирует нас - удалось изменить значение переменной или нет.

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


Показывает последовательность вызовов процедур и функций, которая привела к отлаживаемой в данный момент строке кода. Колонки таблицы содержат название метода, номер строки модуля и предмет отладки.

Замер производительности

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

Полученная информация позволяет, например, выбрать наиболее оптимальный (по быстродействию) вариант решения какой-либо задачи или отыскать «узкие», в плане быстродействия, места конфигурации. При этом нужно учитывать, что какие-либо сравнения скорости выполнения нужно проводить в одинаковых условиях.

Включить режим замера производительности можно соответствующей командой из меню «Отладка»:

Команда «Замер производительности»

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

Результаты замера

Результаты замера производительности отображаются в виде таблицы со следующими столбцами:

  • Модуль - название модуля;
  • Номер строки - номер строки;
  • Строка - участок кода;
  • Кол. - количество вызовов данного участка кода за все время замера;
  • Врем. - суммарное время выполнения (в секундах) данного участка кода за все время замера;
  • %(Врем.) - процент суммарного времени выполнения данного участка кода к общему времени замера (общее время замера - это суммарное время выполнения кода конфигурации);
  • Клиент - отметка участков кода выполняющихся на клиенте;
  • Сервер - отметка участков кода выполняющихся на сервере;
  • Обр. сервер - отметка участков кода в которых происходит вызов сервера.

Таблица с результатами замера производительности может выглядеть, например, так:


Если в строке вызывается процедура/функция то система может показывать время выполнения строки как с учетом времени выполнения вызываемой процедуры/функции и без учета этого времени. Флажок «Для вызова процедур и функций включать время выполнения» служит для выбора способа подсчета времени выполнения строки.

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

Программа пишется в режиме Конфигуратора 1С. Программа выполняется в режиме Предприятия 1С.

А как выполняется программа?

Как выполняется программа?

Во-первых, при первом обращении к модулю, выполняются строки программы, расположенные в самом конце модуля, не заключенные в функцию или процедуру (если таковые есть).

Во-вторых, должен произойти вызов функции или процедуры. Это может быть сделано при выполнении какого-нибудь другого модуля. Если это модуль формы или модуль объекта – то в модуле есть обработчики. Обработчики – это такие функции, которые вызываются платформой 1С автоматически при возникновении определенного события. Например «при открытии формы» выполняется соответствующий обработчик (если он был назначен).

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

Исключение – если вызвана другая функция, тогда платформа переходит к выполнению нее и только потом возвращается обратно, откуда пришла.

Что такое отладка 1С?

Когда программа пишется – программист может только предположить как она должна работать. Когда она начинает работать по-настоящему, пользователь вводит в поля формы какие-то данные, начинают действовать определенные условия и настройки и программа внезапно может начать работать не совсем так, как предполагал программист.

При этом интересны конкретные решения, принимаемые программой, результаты сравнения в условиях «Если» и так далее.

Для этих целей используется отладка 1С. Ее общая идея состоит в том, что программист может поставить точку останова на нужной строке программы и программа остановит выполнение на ней – на паузу. В это время можно посмотреть какие значения приняли переменные и другие параметры.

Программист может нажать кнопку в отладчике 1С и программа продолжит свое выполнение, но не целиком, а только на одну строчку. И далее снова станет на паузу.

Таким образом можно отлавливать проблемные места программы.

Запуск отладки 1С

Так как программа пишется (и находится) в конфигураторе, а выполняется в режиме Предприятия, то для использования отладки 1С нужно иметь 1 конфигуратор и 1 отлаживаемый режим Предприятия:

  • запущенными
  • связанными.

Режим Предприятия можно сразу запустить с отладкой 1С. Для этого в конфигураторе можно использовать соответствующую кнопку как на картинке.

Или использовать меню Отладка/Начать отладку или Отладка/Начало отладки/Выбрать вариант клиента 1С.

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

2) В конфигураторе выберите пункт меню Отладка/Подключение
3) В открывшемся окне выделите курсором нужный клиент и нажмите кнопку Подключиться.

Точка останова 1С (брейкпоинт)

После того, как Вы связали конфигуратор и запущенный клиент отладкой 1С (то есть «подключились отладчиком 1С») – все действия программ из модулей этого клиента выполняются под контролем этого конфигуратора.

Чтобы начать смотреть как происходит выполнение – необходимо установить в нужно месте точку останова (брейкпоинт).

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

  • Щелкнуть левой кнопкой мыши на серую полосу слева от текстов модулей
  • Нажать F9
  • Выбрать пункт меню Отладка/Точка останова.

В результате появится красный кружок, как на картинке. Это и есть точка останова. Как только программа, выполняющаяся в режиме Предприятие, дойдет до этой строчки, она перестанет выполняться и остановится на паузу.

Когда это произошло (программа остановилась на паузу) – на строчке, на которой сейчас «находится выполнение» будет стоять желтая стрелочка.

Чтобы просмотреть значение переменной в этот момент – выделите курсором требуемую переменную и нажмите Shift + F9.

Чтобы выполнить одну строку (то есть перейти на следующую строку) – нажмите соответствующую кнопку как на картинке или выберите пункт из меню Отладка 1С.

Точка останова с условием

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

Например, в программе есть цикл, который повторяется множество раз. Мы можем поставить точку останова, которая сработает на определенном повторении цикла («итерации цикла»).

Точка останова по ошибке

Для подобных целей есть точка останова, которая срабатывает когда при работе «в отладчике 1С» происходит любая ошибка или ошибки определенного вида.

Обратите внимание, что такая точка остановки отлавливает даже те ошибки, которые происходят в .

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

Включение режима отладки на сервере 1С

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

Включить отладку в 1С вы сможете по следующему алгоритму:

  • Перейдите на сервер 1С и откройте регистр через функцию «Выполнить» из меню «Пуск». Также можно воспользоваться одновременным нажатием клавиш Windows и R на клавиатуре. Введите команду открытия регистра - «regedit»;
  • В открывшемся окне в дереве слева пройдите по пути: «HKEY_LOCAL_MACHINE», «SYSTEM», «ControlSet001», «services», «1C:Enterprise 8.3 Server Agent»;
  • Выделив нижний пункт, в правой части находим реквизит с именем «ImagePath» и меняем его с помощью контекстного меню. Чтобы подключить отладку на сервере, к существующему пути добавляем строку « -debug»;
  • Осталось лишь перезапустить агент сервера 1С и можно использовать режим отладки на сервере.

Чтобы запустить отладку через клиентское приложение, заходим в 1С в режиме конфигуратора и выбираем в меню «Отладка» нужный режим. Большинство современных конфигураций работают в режиме тонкого клиента, соответственно, и отлаживать работоспособность лучше в данном виде клиента. Если в вашей конфигурации используются различные виды клиентов, то для большего спокойствия протестировать функционал можно во всех режимах. В момент запуска режима отладки 1С открывает режим «Предприятие».


Как только запуск 1С в режиме отладки произошел, вы увидите практически аналогичное окно программы. Единственное отличие будет снизу – 1С показывает статистику по количествам вызовов на сером фоне. Но если вы переключитесь в этот момент в конфигуратор, то заметите, что верхняя панель изменилась. Появились новые кнопки, с помощью которых вы и будете управлять режимом отладки.

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

Среди тех возможностей режима отладки «Предприятия», которыми разработчики 1С пользуются регулярно, можно выделить следующие:

  • Точки останова;
  • Пошаговая отладка кода;
  • Просмотр значений;
  • Стек вызовов.

Функции отладки 1С

Основная возможность отладки заключается в том, чтобы при работе в режиме Предприятия 1С запустить отладку и проверить, как отрабатывает код. Для этого разработчики 1С устанавливают точку останова на строке алгоритма. Чтобы это сделать, необходимо выделить мышкой строку и нажать кнопку с изображением красного круга. Также вы можете щелкнуть дважды на полосе слева от текста модуля или воспользоваться «горячей» клавишей F9.

Чтобы увидеть установленные точки останова, воспользуйтесь меню «Отладка». Там вы сможете убрать все точки, отключить их, добавить новую и ознакомиться с «горячими» клавишами. Также в этом меню можно установить точку останова с условием (в виде синего круга). Она пригодится в ситуациях, когда вам нужно проверять код при выполнении условия, которое вам придется прописать при установке точки.


Еще один полезный механизм из этого меню – «Остановка по ошибке», позволяющий останавливаться только в недопустимых ситуациях. После остановки вы попадаете в конфигуратор и можете использовать другие возможности отладки. К примеру, перемещаться по строкам кода с помощью специальных клавиш, описанных в меню «Отладка», где сверху выведены более популярные функции. Разница между F10 и F11 заключается в том, что в первом случае вы будете попадать во вложенные функции и процедуры.


Серверная отладка в 1С хороша еще и тем, что вы можете посмотреть значение переменных после выполнения каждой строки кода. Простейший вариант – просто навести курсор мыши, и 1С высветит значение в выплывающем окне. Но в платформе, в меню «Отладка», встроены еще два инструмента:

  • При вызове открывается окно, в котором можно перетащить переменные, выделив их двойным нажатием в коде. В окне показывается их значение и тип на протяжении всей отладки – можно следить за изменением в процессе выполнения алгоритма;

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


Иногда разработчикам необходимо узнать последовательность вызова процедур в алгоритме. Для этого им пригодится механизм стека вызовов из меню «Отладка». При его вызове открывается окно, в котором вы можете увидеть, из какой процедуры была вызвана та, где находится курсор отладки.


Знать и применять все эти инструменты важно для проведения тестов, перед тем как перенести свои доработки на рабочую базу. Вышеперечисленного набора механизмов более чем достаточно для успешной продуктивной работы разработчика в 1С. Но также важно следить за новым функционалом, так как отладка на сервере 1С 8.3 через несколько лет может приобрести новые возможности.