Работа с отладчиком. Инструкция для «чайников»

Попытка в 1С |

1с ошибка компиляции при вычислении выражения или выполнении фрагмента кода

Работа с отладчиком. Инструкция для «чайников»

В статье речь пойдет об «азах» работы с отладчиком 1С.

1. Варианты запуска отладки

Возможные режимы: «тонкий клиент», «веб-клиент», «мобильный клиент», «мобильное приложение», толстый клиент», «толстый клиент (обычное приложение)».

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

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

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

Часто требуется «отловить» ошибку, которая возникает только у пользователей, не имеющих полных прав, или проверить, как работает добавленный функционал у пользователей с «неполными» правами.

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

3. Установка точек останова 1С

Точка останова 1С без условий: позиционируемся на нужной строке кода и затем либо нажимаем «F9», либо выполняем двойной щелчок мышью на затемненной полосе слева от белой области с кодом. Еще можно в контекстном меню (нажатие правой кнопки мыши) выбирать пункт «Точка останова в 1С». На полосе слева от области с кодом появится значок установленной точки останова 1С в виде кружочка розового цвета.

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

На полосе слева от области с кодом появится значок установленной точки останова (по условию в виде синего кружочка со знаком вопроса).

Если требуется отключить/включить срабатывание точки останова в 1С (как простой, так и с условием): позиционируемся на нужной строке и затем либо нажимаем сочетание «Ctrl+Shift+F9», либо в контекстном меню (нажатие правой кнопки мыши) выбираем пункт «Включить/отключить точку останова». При этом отключенная точка останова в 1С будет обозначена кружочком серого цвета, а включенная в зависимости от типа: розовым кружочком либо синим кружочком со знаком вопроса.

Замечу, что возможные действия с точками останова в 1С отображаются в соответствующих группах контекстного меню (нажатие правой кнопки мыши) и пункте меню «Отладка» главного меню.

Чтобы открыть список всех установленных точек, нужно либо нажать сочетание «Alt+F9», либо выбрать пункт меню «Отладка»→»Список точек останова» главного меню. Откроется окно со списком точек останова 1С, в котором у активных точек останова взведен флаг «Вкл./выкл.». Доступные действия с точками останова отображаются справа над списком. По двойному щелчку по любой из точек в списке либо при нажатии кнопки «Перейти к исходному коду» над списком происходит открытие («переключение на») соответствующего модуля с позиционированием на соответствующей строке с установленной точкой останова.

4. Остановка по ошибке при выполнении отладки

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

5. Пошаговая отладка

Пошаговая отладка выполняется следующим образом.

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

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

Следующее действие в Пошаговой отладке: «шагнуть из» (сочетание «Shift+F11» или соответствующий пункт в панели «Отладка конфигурации» панели инструментов, или соответствующий пункт в меню «Отладка» главного меню). Если курсор отладки находился на строке кода в теле текущей процедуры (функции), происходит выполнение оставшегося кода тела текущей процедуры (функции), включая вызовы из нее других процедур (функций), и так далее без ограничения по уровню вложенности. После чего курсор отладки позиционируется на строке после той, из которой произошел вызов данной процедуры (функции).

«Идти до курсора» (сочетание «Shift+F10», или соответствующий пункт в панели «Отладка конфигурации» панели инструментов, или соответствующий пункт в меню «Отладка» главного меню). Выполняется весь код от текущего положения курсора отладки до строки, на которой находится курсор редактора кода, включая вызовы из нее других процедур (функций), и так далее без ограничения по уровню вложенности. После чего курсор отладки позиционируется на строке, на которой находится курсор редактора кода.

6. Вычисление выражений при выполнении отладки

При паузе во время отладки можно просматривать значения переменных. Для этого можно просто навести курсор редактора на нужную переменную и в небольшом всплывающем окне отобразится ее текущее значение. А можно выделить курсором название переменной и нажать «Shift+F9». Еще вариант: выбрать соответствующий пункт в контекстном меню (нажатие правой кнопки мыши), на панели инструментов «Отладка конфигурации либо в меню «Отладка» главного меню.

7. Окно «Табло» при выполнении отладки (открывается внизу окна конфигурации в 1С)

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

8. Окно «Локальные переменные» (также открывается внизу окна конфигурации в 1С)

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

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

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

9. Окно «Стек вызовов» (также открывается внизу окна конфигурации в 1С)

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

10. Восстановление связи с предметом отладки

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

Попытка в 1С

В чем суть этого оператора? В ходе выполнения программы часто могут возникать ошибки, такие как деление на ноль, корень из отрицательного числа и прочие. Эти ошибки приводят к «крушению» программы – это значит, что программа прекратит свою работу и ни какие операторы после ошибки выполняться не будут. Чтобы обойти исключительную ситуацию и продолжить выполнение программы, в языке программирования 1С существует оператор Попытка…Исключение.

Рассмотрим его синтаксис.

Попытка

//операторы попытки

Исключение

//операторы исключения.

КонецПопытки

Разберем этот синтаксис.

Ключевое слово Попытка открывает список операторов, выполнение которых может привести к исключительной ситуации, все операторы между ключевыми словами Попытка и Исключение это Операторы попытки.

Ключевое слово Исключение открывает список операторов, которые будут выполняться в том случае, если вызвана исключительная ситуация операторами попытки. Т. е. если во время выполнения программы один из операторов попытки вызвал ошибку выполнения программы (исключительную ситуацию), то выполнение данного оператора прерывается и управление передается на первый Оператор исключения. Причем обращаю Ваше внимание, что управление будет передано и в том случае, если исключительную ситуацию вызвали функции и процедуры, разработанные программистом и применяемые в качестве операторов попытки. Естественно, что если ошибка произошла в процедуре или функции, то ее выполнение будет прервано.

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

Таким образом, в примере выше вычисление квадратного корня и вывод сообщения являются операторами попытки. Между словом Исключение и КонецПопытки располагаются операторы исключения. На эти операторы перейдет программа после вызова исключения (когда число под корнем меньше нуля). Операторы попытки, следующие после строки, где была инициализирована ошибка, исполняться не будут, т. е. сообщение чему равен квадратный корень из числа мы не увидим, если оно отрицательное.

Описание ошибки в 1С

В коде выше я использовал собственное выражение для описания ошибки, но можно использовать метод ОписаниеОшибки(), который возвращается описание ошибки с точки зрения разработчиков платформы 1С. Это функция, которая возвращает текст с описанием ошибки. Например, код выше можно переделать так:

Тогда, при выполнении выйдет «стандартизированное» описание ошибки.

Оператор ВызватьИсключение в 1С

Если мы всё сделаем правильно, то никакой ошибки не возникнет, просто выйдет сообщение о корне из отрицательного числа. А что если нам нужно, чтобы все-таки ошибка вышла? Для этого есть оператор ВызватьИсключение.

Если сейчас мы попробуем посчитать корень из отрицательного числа, то выйдет следующее сообщение:

Оператор ВызватьИсключение можно использовать отдельно для «эмуляции» вызова исключение. Например, при выполнении этой команды формы:

Будет вызвано исключение.

Причём, в открывавшемся окне можно посмотреть место в коде, где было вызвано исключение.

Попытка внутри попытки в 1С

В платформе 1С 8.3 можно один оператор попытки разместить в другом операторе. Например, на управляемой форме обработки разместим несколько реквизитов с типом Число.

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

И результат работы этой обработки:

Более подробно и основательно начальные вопросы программирования в 1С есть вы можете изучить вКнига «Программировать в 1С за 11 шагов»

Изучайте программирование в 1С в месте с моей книгой «Программировать в 1С за 11 шагов»

Книга написана понятным и простым языком — для новичка.

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

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

Промо-код на скидку в 15% — 48PVXHeYu

Эти книги, плюс книга по программированию оперативного учета имеются в едином комплекте: комплект книг по разработке в 1С. Только для читателей моего блога, промо-код на скидку в 300 рублей на весь комплект: blog

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

можно оплатить вручную:

Яндекс. Деньги — 410012882996301Web Money — R955262494655

Источники:
https://www. koderline. ru/expert/instruktsii/article-rabota-s-otladchikom-instruktsiya-dlya-chaynikov/https://www.1s-up. ru/popytka-v-1s/
Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: