7.1. Отладчик¶
Веб инструмент разработчика во фреймворке для упрощения отладки приложения обеспечивающий доступ к скрытым от пользователя состояниям объектов в сессии пользователя.
7.1.1. Возможности¶
Просмотр дерева выборок текущей пользовательской сессии с отношениями мастер–деталь.
Инспекция атрибутов, параметров фильтра и параметров выборки с их текущими значениями.
Просмотр метаданных операций: текст скрипта, JS-скрипт, порядок, иконка, видимость.
Отображение SQL-текста запроса
onRefreshдля выбранной выборки.Выполнение произвольных SQL-запросов в контексте выбранной выборки.
Выполнение Jexl-скриптов в контексте выбранной выборки (только PostgreSQL решение).
Выполнение Pascal-скриптов в контексте выбранной выборки (только Oracle решение).
Управление отладочными переменными сессии.
Запуск отладочных макросов: открытие формы, модальный диалог, вызов lookup, вызов библиотечного метода.
7.1.2. Доступ¶
Окно открывается с помощью нажатия горячих клавиш (глобальные в рамках веб-приложения).
7.1.2.1. Требования¶
Наличие роли разработчика у текущего пользователя.
В PostgreSql решении метод
Btk_ManagementPkg.canOpenDebugRepдолжен вернутьtrue(при отсутствии пакетаBtk_ManagementPkgограничение не применяется).В Oracle решении дополнительные прикладные проверки не выполняются — действуют только Oracle-роли.
Note
В PostgreSql решении вкладки выполнения скриптов («Выполнить запрос», «Выполнить Jexl-скрипт»)
отображаются только при Btk_ManagementPkg.canExecScriptInDebugRep == true;
вкладка «Выполнить Pascal-скрипт» не отображается.
В Oracle решении право canExecScripts всегда равно true,
поэтому вкладки «Выполнить запрос» и «Выполнить Pascal-скрипт» отображаются всегда;
вкладка «Выполнить Jexl-скрипт» не отображается.
7.1.3. Компоновка¶
Окно разделено на две области:
Левая панель — дерево выборок сессии.
Правая панель — набор вкладок инспектора для выборки, выделенной в дереве.
При переходе на запись в дереве выборок инспектор немедленно переключается на соответствующую выборку.
7.1.4. Панель выборок¶
7.1.4.1. Дерево выборок¶
Отображает все выборки текущей сессии в виде иерархии мастер–деталь. Выборки самого окна отладки в дерево не включаются.
Системное имя |
Заголовок |
Описание |
|---|---|---|
|
Выборка |
Короткое имя выборки: |
|
Отображение |
Имя отображения. По умолчанию |
|
Наименование |
Заголовок выборки, заданный в метаданных. |
|
Загрузчик активен |
Флаг: |
|
Транзакция ORM |
Флаг: |
|
Есть изменения |
Флаг: |
Note
Для Oracle-выборок (BISGTK == false) колонка «Загрузчик активен» всегда показывает true —
SBT-классовая инфраструктура применима только к GTK-выборкам.
7.1.4.2. Карточка деталей¶
Расположена под деревом выборок. Отображает расширенные сведения о выделенной выборке.
Поле |
Описание |
|---|---|
Системное имя |
Полное имя выборки с отображением, например |
Проектное переопределение |
Флаг: |
Avi-класс |
Полное имя Avi-класса с учётом проектных перекрытий. |
Rep-класс |
Полное имя Rep-класса текущего отображения. |
Класс фрейма |
Канонический класс первого найденного фрейма выборки. |
AcObject |
Текущее значение |
AcObjectItem |
Текущее значение |
Режим редактирования |
Значение |
Редактирование / Вставка / Удаление |
Флаги доступности операций редактирования для текущей записи выборки (группа «Доступны»). |
7.1.5. Вкладки инспектора¶
Набор вкладок зависит от типа решения и прав пользователя.
ID |
Вкладка |
PostgreSQL |
Oracle |
Условие |
|---|---|---|---|---|
1 |
Атрибуты |
Да |
Да |
|
2 |
Параметры фильтра |
Да |
Да |
|
3 |
Параметры выборки |
Да |
Да |
|
4 |
Операции |
Да |
Да |
|
5 |
Отладочный макрос |
Да |
Да |
|
6 |
Выполнить запрос |
Да |
Да |
|
7 |
Выполнить Jexl-скрипт |
Да |
Нет |
|
8 |
Отладочные переменные |
Да |
Да |
|
9 |
Выполнить Pascal-скрипт |
Нет |
Да |
|
Note
В колонке «ID» указан стабильный идентификатор вкладки. Визуальный порядок в Oracle-решении: 1–6, 9, 8 («Выполнить Pascal-скрипт» появляется до «Отладочных переменных»).
Право canExecScripts в Oracle-решении всегда равно true — проверка
Btk_ManagementPkg.canExecScriptInDebugRep выполняется только в PostgreSQL-решении.
Таким образом, вкладки «Выполнить запрос» и «Выполнить Pascal-скрипт» в Oracle доступны всегда.
7.1.5.1. Атрибуты¶
Список атрибутов выборки с их текущими значениями.
Системное имя |
Заголовок |
Описание |
|---|---|---|
|
Системное имя |
Системное имя атрибута. |
|
Наименование |
Заголовок атрибута из метаданных. |
|
Тип данных |
Тип данных в нотации Delphi-типов (например, |
|
Значение |
Текущее значение атрибута в текущей записи выборки. |
|
Только чтение |
Флаг |
|
Видимость |
Флаг |
|
Порядковый № |
Порядок атрибута. |
|
Ширина |
Ширина колонки в пикселях. |
Фильтр «Только присутствующие в запросе» (fltOnlyFields, по умолчанию включён) —
при включении отображаются только поля из DataStore, а не весь список атрибутов из метаданных.
При выключении показываются все атрибуты менеджера атрибутов, включая те, которых нет в текущем запросе.
Операция |
Горячая клавиша |
Описание |
|---|---|---|
Обновить |
F12 |
Перечитать данные с сервера. |
Предыдущая запись |
Перейти к предыдущей записи в мастер-выборке и обновить список атрибутов. Недоступна, если текущая запись является первой. |
|
Следующая запись |
Перейти к следующей записи в мастер-выборке и обновить список атрибутов. Недоступна, если текущая запись является последней. |
|
Показать текст запроса |
Открывает нижнюю панель с SQL-текстом, который вернул метод |
Note
Операции «Предыдущая запись» и «Следующая запись» перемещают указатель записи в мастер-выборке приложения — это влияет на живое приложение.
7.1.5.2. Параметры фильтра¶
Список параметров фильтра (FilterAttributeManager) с их текущими значениями.
Системное имя |
Заголовок |
Описание |
|---|---|---|
|
Системное имя |
Системное имя параметра фильтра. |
|
Наименование |
Заголовок параметра фильтра. |
|
Тип данных |
Тип данных в нотации Delphi-типов. |
|
Значение |
Текущее значение параметра из |
|
Только чтение |
Флаг |
|
Видимость |
Флаг |
Операции: Обновить (F12).
7.1.5.3. Параметры выборки¶
Список параметров выборки (ParameterManager) с их текущими значениями.
Системное имя |
Заголовок |
Описание |
|---|---|---|
|
Системное имя |
Системное имя параметра. |
|
Тип данных |
Тип данных в нотации Delphi-типов. |
|
Значение |
Текущее значение параметра. |
Операции: Обновить (F12).
7.1.5.4. Операции¶
Список операций, зарегистрированных в OperationManager и MetaOperationMap выборки.
Итерируется объединение: сначала операции из OperationManager, затем — мета-операции, отсутствующие в нём.
Системное имя |
Заголовок |
Описание |
|---|---|---|
|
Системное имя |
Системное имя операции. |
|
Наименование |
Заголовок операции. |
|
Паскаль-операция |
Зарезервировано. В текущей реализации значение не заполняется — колонка отображается пустой. |
|
Активность |
Флаг: |
|
Видимость на ТБ |
Флаг видимости операции на панели инструментов. |
|
Клон |
Флаг: |
|
Порядковый № |
Порядок операции. |
|
№ иконки |
Индекс иконки операции. |
При выборе операции в нижней панели отображаются вкладки со скриптом:
Скрипт — Pascal-текст операции (
OPERATIONTEXT).JS скрипт — транслированный JavaScript-текст операции (
JSOPERATIONTEXT).
Операции: Обновить (F12).
7.1.5.5. Отладочный макрос¶
Позволяет сформировать и запустить макрос открытия формы или вызова библиотечного метода. Значения макроса сохраняются в пользовательском реестре и восстанавливаются при следующем открытии окна.
Поле |
Описание |
|---|---|
Действие ( |
Тип макроса. Выбирается из списка: |
Скрипт ( |
Значение макроса — имя выборки/отображения для форм, или имя метода для |
Типы макросов:
open— открыть форму (CoreFormManagerItem.open).openModal— открыть форму как модальный диалог (CoreFormManagerItem.openModal).doLookup— открыть форму выбора (CoreFormManagerItem.openLookup).call— вызвать метод библиотечного класса. Аргументы задаются в таблице ниже.
Таблица аргументов (отображается при call):
Поле |
Описание |
|---|---|
|
Имя аргумента. |
|
Значение аргумента в строковом представлении. |
|
Тип данных аргумента. Допустимые значения: |
Операции таблицы аргументов: Обновить (F12), Добавить, Удалить.
7.1.5.6. Выполнить запрос¶
Note
Вкладка отображается при наличии права canExecScripts (для обоих типов решений — PostgreSQL и Oracle).
Позволяет выполнить произвольный SQL-запрос в контексте соединения выделенной выборки.
Редактор содержит текстовое поле для ввода SQL-запроса. При изменении текста запрос выполняется автоматически (если панель результатов уже открыта).
Операция |
Горячая клавиша |
Описание |
|---|---|---|
Выполнить запрос |
F8 |
Выполнить SQL-запрос. При первом нажатии открывает панель результатов внизу экрана. При последующих — обновляет результат в панели. |
Детализация |
F11 |
Показать / скрыть панель результатов запроса. |
Шаблоны |
Выпадающее меню с предустановленными шаблонами запросов.
Содержит шаблон |
Панель результатов («Результат запроса») открывается снизу и отображает результат запроса в виде таблицы. Все возвращаемые колонки автоматически становятся видимыми.
Операции панели результатов: Обновить (F12) — повторно выполнить запрос.
Warning
Запрос выполняется в рамках соединения выбранной выборки. Транзакции, открытые в этом соединении, включают и результаты выполненного запроса — будьте внимательны при использовании DML-операторов.
7.1.5.7. Выполнить Jexl-скрипт¶
Note
Вкладка отображается только в PostgreSQL решении при наличии права canExecScripts.
Позволяет выполнить произвольный Jexl-скрипт в контексте выделенной выборки.
Редактор содержит текстовое поле для ввода скрипта.
Операция |
Горячая клавиша |
Описание |
|---|---|---|
Выполнить скрипт |
F8 |
Выполнить Jexl-скрипт в контексте выделенной выборки и её сессией. |
7.1.5.8. Выполнить Pascal-скрипт¶
Note
Вкладка отображается только в Oracle решении.
Право canExecScripts в Oracle-решении всегда равно true.
Позволяет выполнить произвольный скрипт в контексте выделенной выборки. Содержимое редактора сохраняется в пользовательский реестр при закрытии окна и восстанавливается при следующем открытии.
Операция |
Горячая клавиша |
Описание |
|---|---|---|
Выполнить скрипт |
F8 |
Транслировать и выполнить скрипт через |
Поддерживаются три формы записи:
Pascal-блок, обёрнутый в тег
<pascal>…</pascal>.SQL-блок, обёрнутый в тег
<sql>…</sql>.Чистый SQL без тегов.
Пример Pascal-блока:
<pascal>
begin
showMessage('Привет, мир!');
end.
</pascal>
Диагностика ошибок применяется только в контексте этой вкладки:
Синтаксическая ошибка в
<pascal>-блоке — сообщение с номером строки и колонки.Незакрытый тег
<pascal>— «Блок “Pascal” не закрыт».Тег
<javascript>— явный запрет: «Тег <javascript> не поддерживается. Используйте тег <pascal>».Скрипт содержит теги, но ни
<pascal>, ни<sql>— «Операция не содержит исполняемый код».Ошибка трансляции Pascal→JS — текст ошибки из транслятора.
7.1.5.9. Отладочные переменные¶
Управление глобальными отладочными переменными сессии.
Переменные доступны из любого кода сессии через Debug.vars.
Поле |
Описание |
|---|---|
|
Имя переменной. Обязательное поле; дублирование имён не допускается. |
|
Значение переменной в строковом представлении. |
Операция |
Горячая клавиша |
Описание |
|---|---|---|
Обновить |
F12 |
Перечитать список переменных из |
Создать |
Добавить новую переменную. После ввода имени и значения запись сохраняется в |
|
Удалить |
Удалить текущую переменную из |
Warning
Переменные являются отладочным инструментом и предназначены исключительно для временного изменения поведения сервера во время разработки. Их использование в продуктивной среде не предусмотрено.