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. Дерево выборок

Отображает все выборки текущей сессии в виде иерархии мастер–деталь. Выборки самого окна отладки в дерево не включаются.

Колонки дерева

Системное имя

Заголовок

Описание

SSEL

Выборка

Короткое имя выборки: Gs3_SomeAvi для GTK-выборок, SEL_SOME_NAME для Oracle-выборок.

SREP

Отображение

Имя отображения. По умолчанию Default / DEFAULT.

SCAPTION

Наименование

Заголовок выборки, заданный в метаданных.

BACTIVECLASSLOADER

Загрузчик активен

Флаг: true, если SBT-загрузчик класса выборки не устарел (горячая перезагрузка).

BHASDBTRANSACTION

Транзакция ORM

Флаг: true, если для соединения выборки открыта транзакция.

BHASCHANGES

Есть изменения

Флаг: true, если выборка содержит несохранённые изменения.

Note

Для Oracle-выборок (BISGTK == false) колонка «Загрузчик активен» всегда показывает true — SBT-классовая инфраструктура применима только к GTK-выборкам.

7.1.4.2. Карточка деталей

Расположена под деревом выборок. Отображает расширенные сведения о выделенной выборке.

Поля карточки

Поле

Описание

Системное имя

Полное имя выборки с отображением, например gtk-ru.bitec.app.gs3.Gs3_SomeAvi#List.

Проектное переопределение

Флаг: true, если Avi-класс отображения отличается от класса, следующего из имени выборки (перекрытие в проекте).

Avi-класс

Полное имя Avi-класса с учётом проектных перекрытий.

Rep-класс

Полное имя Rep-класса текущего отображения.

Класс фрейма

Канонический класс первого найденного фрейма выборки.

AcObject

Текущее значение acObject контекста отображения (права доступа объекта).

AcObjectItem

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

Режим редактирования

Значение ReadOnlyType: ReadOnly, Edit и др.

Редактирование / Вставка / Удаление

Флаги доступности операций редактирования для текущей записи выборки (группа «Доступны»).

7.1.5. Вкладки инспектора

Набор вкладок зависит от типа решения и прав пользователя.

Состав вкладок

ID

Вкладка

PostgreSQL

Oracle

Условие

1

Атрибуты

Да

Да

2

Параметры фильтра

Да

Да

3

Параметры выборки

Да

Да

4

Операции

Да

Да

5

Отладочный макрос

Да

Да

6

Выполнить запрос

Да

Да

canExecScripts

7

Выполнить Jexl-скрипт

Да

Нет

canExecScripts

8

Отладочные переменные

Да

Да

9

Выполнить Pascal-скрипт

Нет

Да

canExecScripts

Note

В колонке «ID» указан стабильный идентификатор вкладки. Визуальный порядок в Oracle-решении: 1–6, 9, 8 («Выполнить Pascal-скрипт» появляется до «Отладочных переменных»).

Право canExecScripts в Oracle-решении всегда равно true — проверка Btk_ManagementPkg.canExecScriptInDebugRep выполняется только в PostgreSQL-решении. Таким образом, вкладки «Выполнить запрос» и «Выполнить Pascal-скрипт» в Oracle доступны всегда.

7.1.5.1. Атрибуты

Список атрибутов выборки с их текущими значениями.

Колонки

Системное имя

Заголовок

Описание

SNAME

Системное имя

Системное имя атрибута.

SCAPTION

Наименование

Заголовок атрибута из метаданных.

SDBTYPE

Тип данных

Тип данных в нотации Delphi-типов (например, ftString, ftInteger).

SVALUE

Значение

Текущее значение атрибута в текущей записи выборки.

BREADONLY

Только чтение

Флаг isReadOnly атрибута.

BVISIBLE

Видимость

Флаг isVisible атрибута.

NORDER

Порядковый №

Порядок атрибута.

NWIDTH

Ширина

Ширина колонки в пикселях.

Фильтр «Только присутствующие в запросе» (fltOnlyFields, по умолчанию включён) — при включении отображаются только поля из DataStore, а не весь список атрибутов из метаданных. При выключении показываются все атрибуты менеджера атрибутов, включая те, которых нет в текущем запросе.

Операции

Операция

Горячая клавиша

Описание

Обновить

F12

Перечитать данные с сервера.

Предыдущая запись

Перейти к предыдущей записи в мастер-выборке и обновить список атрибутов. Недоступна, если текущая запись является первой.

Следующая запись

Перейти к следующей записи в мастер-выборке и обновить список атрибутов. Недоступна, если текущая запись является последней.

Показать текст запроса

Открывает нижнюю панель с SQL-текстом, который вернул метод onRefresh выбранной выборки (выполняет onRefresh через OperationManager и отображает результат в memo-поле).

Note

Операции «Предыдущая запись» и «Следующая запись» перемещают указатель записи в мастер-выборке приложения — это влияет на живое приложение.

7.1.5.2. Параметры фильтра

Список параметров фильтра (FilterAttributeManager) с их текущими значениями.

Колонки

Системное имя

Заголовок

Описание

SNAME

Системное имя

Системное имя параметра фильтра.

SCAPTION

Наименование

Заголовок параметра фильтра.

SDBTYPE

Тип данных

Тип данных в нотации Delphi-типов.

SVALUE

Значение

Текущее значение параметра из DataScope фильтра.

BREADONLY

Только чтение

Флаг isReadOnly параметра.

BVISIBLE

Видимость

Флаг isVisible параметра.

Операции: Обновить (F12).

7.1.5.3. Параметры выборки

Список параметров выборки (ParameterManager) с их текущими значениями.

Колонки

Системное имя

Заголовок

Описание

SNAME

Системное имя

Системное имя параметра.

SDBTYPE

Тип данных

Тип данных в нотации Delphi-типов.

SVALUE

Значение

Текущее значение параметра.

Операции: Обновить (F12).

7.1.5.4. Операции

Список операций, зарегистрированных в OperationManager и MetaOperationMap выборки. Итерируется объединение: сначала операции из OperationManager, затем — мета-операции, отсутствующие в нём.

Колонки

Системное имя

Заголовок

Описание

SNAME

Системное имя

Системное имя операции.

SCAPTION

Наименование

Заголовок операции.

BPASCAL

Паскаль-операция

Зарезервировано. В текущей реализации значение не заполняется — колонка отображается пустой.

BACTIVE

Активность

Флаг: true, если операция активна (видна и доступна для вызова).

BTBVISIBLE

Видимость на ТБ

Флаг видимости операции на панели инструментов.

BCLONE

Клон

Флаг: true, если операция является клоном другой операции.

NORDER

Порядковый №

Порядок операции.

NIMAGEINDEX

№ иконки

Индекс иконки операции.

При выборе операции в нижней панели отображаются вкладки со скриптом:

  • Скрипт — Pascal-текст операции (OPERATIONTEXT).

  • JS скрипт — транслированный JavaScript-текст операции (JSOPERATIONTEXT).

Операции: Обновить (F12).

7.1.5.5. Отладочный макрос

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

Поля

Поле

Описание

Действие (SMACROKIND)

Тип макроса. Выбирается из списка: open, openModal, doLookup, call.

Скрипт (SMACROVALUE)

Значение макроса — имя выборки/отображения для форм, или имя метода для call.

Типы макросов:

  • open — открыть форму (CoreFormManagerItem.open).

  • openModal — открыть форму как модальный диалог (CoreFormManagerItem.openModal).

  • doLookup — открыть форму выбора (CoreFormManagerItem.openLookup).

  • call — вызвать метод библиотечного класса. Аргументы задаются в таблице ниже.

Таблица аргументов (отображается при call):

Колонки таблицы аргументов

Поле

Описание

SNAME

Имя аргумента.

SVALUE

Значение аргумента в строковом представлении.

STYPE

Тип данных аргумента. Допустимые значения: NString, NLong, NNumber, NDate.

Операции таблицы аргументов: Обновить (F12), Добавить, Удалить.

7.1.5.6. Выполнить запрос

Note

Вкладка отображается при наличии права canExecScripts (для обоих типов решений — PostgreSQL и Oracle).

Позволяет выполнить произвольный SQL-запрос в контексте соединения выделенной выборки.

Редактор содержит текстовое поле для ввода SQL-запроса. При изменении текста запрос выполняется автоматически (если панель результатов уже открыта).

Операции

Операция

Горячая клавиша

Описание

Выполнить запрос

F8

Выполнить SQL-запрос. При первом нажатии открывает панель результатов внизу экрана. При последующих — обновляет результат в панели.

Детализация

F11

Показать / скрыть панель результатов запроса.

Шаблоны

Выпадающее меню с предустановленными шаблонами запросов. Содержит шаблон pg_stat_activity — активные сессии PostgreSQL.

Панель результатов («Результат запроса») открывается снизу и отображает результат запроса в виде таблицы. Все возвращаемые колонки автоматически становятся видимыми.

Операции панели результатов: Обновить (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

Транслировать и выполнить скрипт через OperationManager.executeDebugScriptText с соединением выделенной выборки.

Поддерживаются три формы записи:

  • 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.

Колонки

Поле

Описание

SNAME

Имя переменной. Обязательное поле; дублирование имён не допускается.

SVALUE

Значение переменной в строковом представлении.

Операции

Операция

Горячая клавиша

Описание

Обновить

F12

Перечитать список переменных из Debug.vars.

Создать

Добавить новую переменную. После ввода имени и значения запись сохраняется в Debug.vars.

Удалить

Удалить текущую переменную из Debug.vars.

Warning

Переменные являются отладочным инструментом и предназначены исключительно для временного изменения поведения сервера во время разработки. Их использование в продуктивной среде не предусмотрено.