Отладчик в NAV 2013: что за ширмой
Началось все с банального - хотел смотреть что происходит при работе с формами. Для этого обратился к новому отладчику.
Р?Р· Development Environment запустил Tools – Debugger – Debug Session.
Запустилось окно со списком сессий, в моем случае сессия одна, но мне этого хватает.
Выбрал сессию. Нажал Debug. Запустилось окно отладчика. Активировал 1 кодеюнит и пощелкал в ролевом центре. Остановился на триггере.
Надо сказать – работает. Как пользоваться – есть статья в MSDN. Меня же заинтересовало кое-что на первом скриншоте. Если быть точнее – триггер LaunchDebugger.
После этого погрузился в изучение и выяснил следующее:
В NAV 2013 отладчик реализован внутренними средствами Dynamics NAV, в частности следующими объектами:
Страницы:
- 9500 Debugger
- 9502 Debugger Callstack FactBox
- 9503 Debugger Watch Value FactBox
- 9504 Debugger Code Viewer
- 9505 Debugger Breakpoint List
- 9506 Session List
- 9507 Debugger Breakpoint Condition
- 9508 Debugger Variable List
- 9509 Debugger Break Rules
Программный модуль 9500 Debugger Management
Чтобы они заработали были расширены возможности встроенного языка следующими функциями:
А для отображения отлаживаемого кода используется подключаемый компонент
Microsoft.Dynamics.NAV.CodeViewerControl;PublicKeyToken=31bf3856ad364e35
Со следующими методами:
Р? СЃРїРёСЃРєРѕРј доступных событий:
При работе отладчика активно используется новые виртуальные таблицы:
Вооружившись такими технологиями немедленно кое-что соорудил, но использовать не удалось из-за досадного технического ограничения:
Жаль, очень было интересно посмотреть, что происходит в текущей сессии в online-режиме.
Вместо этого решил внимательнее поиграть с подключаемым компонентом.
Для этого сделал страницу типа CardPart довольно примитивного вида. Основной интерес – в свойствах поля:
Весь интеллектуальный код поместил в функцию
Затем создал основную страницу на базе таблицы Object настроил связи через триггер OnAfterGetCurrRecord()
Результатом можно насладиться на скриншоте ниже. Хотя красота довольно сомнительная, есть куда развивать и улучшать.
Кстати, запустить созданную карточную форму напрямую из дизайнера объектов не получилось – настойчиво преследовала ошибка:
—————————
The control add-in on control Code Viewer on page Debugger Code Viewer has not been instantiated.
—————————
Метки: Andrey Panko, Андрей Панько