Опубликован: 14.07.2011 | Уровень: специалист | Доступ: платный
Лекция 2:

Разработка справочной системы, отладка

< Лекция 1 || Лекция 2: 1234 || Лекция 3 >

2.4. Исследование программы в отладчике

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

Мы разместили точку останова в модуле документа НачислениеЗарплаты, рис. 2.22.

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

увеличить изображение
Рис. 2.22. Точка останова в модуле

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

Просмотр переменной в окне Выражение

Рис. 2.23. Просмотр переменной в окне Выражение

Мы видим, что команда ДанныеБазы=Движение.ПолучитьБазу(Ресурсы, Измерения) записала в переменную ДанныеБазы некую таблицу значений. В окне Выражение можно просмотреть внутреннюю структуру этой таблицы, разворачивая свернутые группировки.

Для того, чтобы увидеть содержимое таблицы, можно воспользоваться кнопкой Показать значение в отдельном окне, или нажать на клавишу F2, рис. 2.24.

Просмотр переменной в окне Выражение

увеличить изображение
Рис. 2.24. Просмотр переменной в окне Выражение

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

В окне Выражение можно выполнять команды встроенного языка. Например, выполним такую команду: ТипЗнч(Ресурсы). В окне мы увидим тип значения переменной Ресурсы, а именно - это массив.

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

Для того чтобы оценить функциональность этого инструмента, заполним документ Начисление зарплаты так, как показано на рис. 2.25.

Заполнение документа Начисление зарплаты

Рис. 2.25. Заполнение документа Начисление зарплаты

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

Включим в табло следующие показатели ( рис. 2.26):

ДанныеБазы[0].Результат
Движение.ВидРасчета
Движение.ИсходныеДанные

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

Значения переменных в табло, первая итерация

увеличить изображение
Рис. 2.26. Значения переменных в табло, первая итерация

Здесь мы видим, что на текущей итерации расчета в качестве данных базы используется 10000 (оклад первого сотрудника), в качестве исходных данных для расчета премии - 10% (опять же, данные по исходному сотруднику). Эти данные нас устраивают, поэтому переходим к анализу следующей итерации цикла, выполнив команду Отладка > Продолжить отладку. Видим, как данные в Табло обновились, рис. 2.27.

Значения переменных в табло, вторая итерация

увеличить изображение
Рис. 2.27. Значения переменных в табло, вторая итерация

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

Еще один полезный инструмент, которым можно пользоваться при отладке, можно вызвать по команде Отладка > Стек вызовов. Она открывает окно Стек вызовов, которое содержит последовательность вызовов, которая привела к исполняемой строке. В нашем случае, рис. 2.28 здесь можно видеть лишь одну информационную строку.

Стек вызовов

увеличить изображение
Рис. 2.28. Стек вызовов

Щелкнув мышью по строке с именем процедуры в окне Стек вызовов, можно перейти к строке в этой процедуре.

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

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

Для того, чтобы оценить "узкие места" в разрабатываемой конфигурации, можно воспользоваться инструментом Замер производительности ( Отладка > Замер производительности ). Активируем режим замера производительности и запустим конфигурацию в режиме отладки. Выполним различные действия (например, проведем документ НачислениеЗарплаты ). После завершения отладки мы получим подробный отчет, рис. 2.29.

Отчет о производительности

увеличить изображение
Рис. 2.29. Отчет о производительности

В частности, нас интересует время, которое заняло выполнение операций. Сделав щелчок по строке отчета, можно перейти в модуль, в котором было выполнено действие, описанное в данной строке, рис. 2.30. Здесь можно видеть информацию о времени выполнения каждой из строк.

Просмотр модуля после замера производительности

увеличить изображение
Рис. 2.30. Просмотр модуля после замера производительности

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

2.6. Выводы

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

< Лекция 1 || Лекция 2: 1234 || Лекция 3 >
Евгений Орлов
Евгений Орлов
Кундуз Сабаева
Кундуз Сабаева

Ошибка при выполнении обработчика - 'ОбработкаПроведения'
по причине:
{Документ.НачислениеЗарплаты.МодульОбъекта(45)}: Деление на 0
        Движение.Результат= Движение.ИсходныеДанные*Факт[0].РабочийДень/План[0].РабочийДень;

Андрей Нейман
Андрей Нейман
Россия
Илья Климов
Илья Климов
Россия, Пермь, ПНИПУ, 2013