Аудит открытия форм и выполнения операций#

Аудит открытия форм и выполнения операций предназначен для фиксации взаимодействия пользователя с интерфейсом системы.

Фиксируются:

  • открытие и закрытие форм;

  • выполнение операций;

  • ошибки, возникшие в процессе работы.

Для каждой записи сохраняются:

  • пользователь;

  • системное имя выборки и отображения;

  • время открытия и закрытия;

  • идентификатор объекта;

  • тип взаимодействия;

  • параметры запуска;

  • результат выполнения;

  • текст ошибки при наличии.

Просмотр записей доступен:

  • из карточки объекта через операцию Информация > Расширенный аудит по объекту;

  • из общего раздела Приложение «Настройка системы» > Аудит > Аудит открытия форм и выполнения операций.

Интерфейс аудита#

Форма Btk_SelAuditAvi.List используется для просмотра истории открытия выборок, форм, вложенных вкладок и выполнения операций.

Данные читаются из таблицы aud.selOpenHistory.

Интерфейс формы состоит из:

  • панели фильтрации;

  • основного списка открытий форм и выполненных операций;

  • детализации выбранной записи.

Панель фильтрации#

В верхней части формы расположены фильтры:

Поле

Описание

flt_DFROM

Период с. Фильтрация выполняется по полю dStart

flt_DTO

Период по. Фильтрация выполняется по полю dEnd

flt_SUSER

Пользователь. Поиск выполняется по полю sUser, доступна кнопка выбора пользователя

flt_SSEL

Выборка. Поиск выполняется по полю sSel

flt_GIDOBJ

GID объекта

flt_BMAINSEL

Чекбокс Только главные выборки

Явной проверки обязательности фильтров нет. Для рабочей базы рекомендуется всегда задавать хотя бы фильтр flt_DFROM, так как таблица может быстро расти.

Для анализа действий конкретного пользователя дополнительно указывают flt_SUSER. Для анализа конкретной формы — flt_SSEL. Для анализа открытия карточки объекта — flt_GIDOBJ.

Примечание

Фильтр flt_DTO применяется по полю dEnd. Для операций dEnd обычно не заполняется, поэтому при разборе операций не следует полагаться только на дату по. Лучше задавать дату с и дополнительные ограничения по пользователю, выборке или объекту.

Особенности фильтрации по объекту#

Фильтр flt_GIDOBJ работает по-разному в зависимости от значения flt_BMAINSEL.

Если чекбокс Только главные выборки не установлен, форма ищет все сессии, в которых любой элемент был открыт по указанному объекту.

Если чекбокс Только главные выборки установлен, фильтр применяется только к главной строке формы.

Если форма открыта из контекста объекта и передан параметр gidObj_dz, метод Btk_SelAuditAvi.beforeOpen() автоматически заполняет flt_GIDOBJ и делает этот фильтр доступным только для просмотра.

Основной список#

В основной таблице отображаются записи открытия форм, выборок и выполнения операций.

Колонка

Описание

Выборка

Системное имя выборки

Отображение

Отображение или представление формы

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

Наименование формы, выборки или операции

Пользователь

Пользователь, выполнивший действие

ФИО пользователя

ФИО пользователя

Дата открытия

Дата и время открытия формы или начала действия

Дата закрытия

Дата и время закрытия формы, если значение было зафиксировано

ID объекта

Идентификатор объекта, с которым связано действие

Тип формы

Тип открытой формы или действия

Параметры формы

Параметры, с которыми была открыта форма или выполнена операция

Результат

Результат выполнения

Детализация записи#

В нижней части формы отображается детализация выбранной записи.

Доступны вкладки:

  • Дерево элементов формы — иерархия элементов, открытых в рамках выбранной сессии;

  • Список элементов формы — плоский список вложенных элементов формы;

  • Текст ошибки — текст ошибки, если действие завершилось неуспешно.

На вкладках детализации отображаются сведения о связанных формах, вкладках и операциях: выборка, отображение, наименование, операция, пользователь, дата открытия, объект, тип формы, параметры и результат.

Настройка аудита#

Аудит открытия форм и выполнения операций включается настройками выборки Btk_SelSetting, а данные записываются в таблицу aud.selOpenHistory.

Настройка выполняется индивидуально для каждой выборки.

Чтобы включить аудит:

  1. Откройте Приложение «Настройка системы» > Обозреватель проектов.

  2. Найдите и выберите нужную выборку.

  3. Перейдите на вкладку Настройка.

  4. В настройках класса Btk_SelSetting выберите режим аудита открытия выборки или операций.

Основные поля настройки:

  • idAuditSelType — тип аудита открытия выборки или формы;

  • idAuditOperType — тип аудита операций.

Возможные значения Btk_SelSettingAudType:

  • NoAud — не вести аудит;

  • AudOnlySuccess — аудит успешных операций;

  • FullAud — полный аудит с сохранением ошибок.

Практический порядок настройки:

  1. Найдите настройку нужной выборки в Btk_SelSetting или создайте ее через Btk_SelSettingApi.registerBySel(<SimpleAviName>).

  2. Для аудита открытия формы задайте idAuditSelType = FullAud или idAuditSelType = AudOnlySuccess.

  3. Для аудита операций задайте idAuditOperType = FullAud или idAuditOperType = AudOnlySuccess.

  4. Переоткройте форму, чтобы метаинформация и обработчики аудита были перечитаны.

Доступные режимы:

  • Не вести аудит — аудит отключен. Значение используется по умолчанию.

  • Аудит только успешного открытия/выполнения — фиксируются только успешные действия.

  • Аудит с сохранением ошибок — фиксируются все действия, включая ошибки с текстом исключения.

Также существует глобальная настройка модуля btk:

  • bEnableFullAuditForAllFormsByDefault — включает полный аудит для всех выборок по умолчанию;

  • значение по умолчанию — false.

Если настройка bEnableFullAuditForAllFormsByDefault включена, для выборок без индивидуальной записи в Btk_SelSetting аудит считается включенным по умолчанию. Для точечного включения рекомендуется использовать запись Btk_SelSetting по конкретной выборке.

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

select *
from aud.selOpenHistory
order by idSession desc, id;

Примечание

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

События формирования записей#

Запись аудита создается при следующих событиях:

  • Открытие формы — успешное открытие формы фиксируется в EntityAvi#onShow().

  • Неудачное открытие формы — подписка на события выполняется в EntityAvi#onLoadMeta().

  • Закрытие формы — фиксируется в EntityAvi#beforeCloseForm().

  • Вызов операции — подписка на события выполнения операций выполняется в EntityAvi#onLoadMeta().

Примечание

Если выборка с включенным аудитом открывается как детальный фрейм, в аудит автоматически записываются все ее мастер-выборки. Это позволяет восстановить полный контекст действия пользователя.

Запись выполняется в автономной транзакции.

Хранимые поля#

Таблица selopenhistory содержит следующие поля:

Поле

Описание

id

ID записи аудита

suser

Имя пользователя

ssel

Системное имя выборки

srep

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

scaption

Наименование отображения

dstart

Время открытия

dend

Время закрытия

gidobject

Глобальный идентификатор объекта взаимодействия

stype

Тип взаимодействия Btk_SelAuditPkg.SelAuditType

sparam

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

sresult

Результат взаимодействия SelAuditResult

soper

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

sopercaption

Наименование операции

serrortext

Текст ошибки

Программная логика#

Для работы с аудитом доступны методы:

  • Btk_SelAuditPkg.dataInstall() — регистрирует таблицу аудита;

  • Btk_SelAuditPkg.audInsert(...) — добавляет запись в аудит.