Разработка справочной системы, отладка
2.4. Исследование программы в отладчике
При пошаговом выполнении программы можно воспользоваться некоторыми полезными инструментами для контроля значений переменных. В частности, речь идет об окне Выражение ( Отладка > Вычислить выражение ).
Мы разместили точку останова в модуле документа НачислениеЗарплаты, рис. 2.22.
Вызвав окно Выражение, мы можем, например, посмотреть, что находится внутри переменной ДанныеБазы. Для этого введем в поле Выражение имя переменной, рис. 2.23.
Мы видим, что команда ДанныеБазы=Движение.ПолучитьБазу(Ресурсы, Измерения) записала в переменную ДанныеБазы некую таблицу значений. В окне Выражение можно просмотреть внутреннюю структуру этой таблицы, разворачивая свернутые группировки.
Для того, чтобы увидеть содержимое таблицы, можно воспользоваться кнопкой Показать значение в отдельном окне, или нажать на клавишу F2, рис. 2.24.
Здесь мы видим содержимое таблицы. Она содержит одну строку с индексом 0, поле Результат этой строки содержит значение 10000. В нашей программе эта строка содержит данные базы для расчета премии.
В окне Выражение можно выполнять команды встроенного языка. Например, выполним такую команду: ТипЗнч(Ресурсы). В окне мы увидим тип значения переменной Ресурсы, а именно - это массив.
Если мы хотим контролировать некоторый набор переменных (или свойств объектов), которые мы просматривали в окне Выражение, мы можем воспользоваться кнопкой этого окна Включить в табло. Табло - это отдельный инструмент отладчика, который выводит сведения о переменных, включенных в него. Причем, их можно включать в табло напрямую, минуя окно Выражение. Делается это вводом имени переменной в пустую строку Табло.
Для того чтобы оценить функциональность этого инструмента, заполним документ Начисление зарплаты так, как показано на рис. 2.25.
Вспомним, что точка останова размещена в участке кода, который отвечает за расчет премии. Здесь мы ввели Оклад для двух сотрудников, и, для них же, размеры премий.
Включим в табло следующие показатели ( рис. 2.26):
ДанныеБазы[0].Результат Движение.ВидРасчета Движение.ИсходныеДанные
Ввести эти данные в табло можно как заранее, так и при первом срабатывании точки останова (она сработает при попытке проведения документа).
Здесь мы видим, что на текущей итерации расчета в качестве данных базы используется 10000 (оклад первого сотрудника), в качестве исходных данных для расчета премии - 10% (опять же, данные по исходному сотруднику). Эти данные нас устраивают, поэтому переходим к анализу следующей итерации цикла, выполнив команду Отладка > Продолжить отладку. Видим, как данные в Табло обновились, рис. 2.27.
Результаты нас так же устроили - они соответствуют ожидаемым. Если бы программа функционировала неверно - здесь могли бы быть другие данные, второй итерации цикла могло бы вообще не быть, возможны и многие другие ошибочные ситуации.
Еще один полезный инструмент, которым можно пользоваться при отладке, можно вызвать по команде Отладка > Стек вызовов. Она открывает окно Стек вызовов, которое содержит последовательность вызовов, которая привела к исполняемой строке. В нашем случае, рис. 2.28 здесь можно видеть лишь одну информационную строку.
Щелкнув мышью по строке с именем процедуры в окне Стек вызовов, можно перейти к строке в этой процедуре.
Еще одна полезная возможность отладчика заключается в замере производительности разрабатываемого решения.
2.5. Замер производительности
Для того, чтобы оценить "узкие места" в разрабатываемой конфигурации, можно воспользоваться инструментом Замер производительности ( Отладка > Замер производительности ). Активируем режим замера производительности и запустим конфигурацию в режиме отладки. Выполним различные действия (например, проведем документ НачислениеЗарплаты ). После завершения отладки мы получим подробный отчет, рис. 2.29.
В частности, нас интересует время, которое заняло выполнение операций. Сделав щелчок по строке отчета, можно перейти в модуль, в котором было выполнено действие, описанное в данной строке, рис. 2.30. Здесь можно видеть информацию о времени выполнения каждой из строк.
Если какие-либо команды занимают слишком много времени - можно задуматься об их оптимизации, о поиске альтернативных, более быстрых способов решения тех же задач.
2.6. Выводы
В этой лекции мы ознакомились с приемами создания справочной системы, которая должна сопровождать прикладное решение. Справочные материалы привязаны к объектам конфигурации, их можно включать в общую справку программы. Мы рассмотрели пример программного заполнения регистра сведений - подобные приемы позволяют экономить время при выполнении рутинных операций. Так же в данной лекции был рассмотрен вопрос отладки прикладных решений с использованием режима отладки, установки точек останова и других методов отладки. Методика замера производительности, рассмотренная в конце лекции, позволяет оптимизировать прикладные решения, находя участки кода, которые могут повлиять на скорость работы программы.