Для настройки логирования любых изменений в БД Абонемент используется утилита IBHistory.

Рис.1 Внешний вид утилиты IBHistory

Описание интерфейса

Внешний вид окна утилиты представлен на рис.1.

Кнопки:
    Сохранить конфигурацию базы
        Служит для внесения изменений в базу данных по завершению настройки логируемых полей
    Загрузить конфигурацию из cfg-файла
        Необходима для загрузки ранее сохраненной конфигурации
    Сохранить конфигурацию в cfg-файле
        Используется для сохранения текущих настроек, для дальнейшего экспорта.
    Обновить (перезагрузить из базы)
        Назначение не нуждается в комментариях.

В интерфейс так же имеются две таблицы, в которых перечислены все имеющиеся в выбранной БД таблицы в левой части, и их поля в правой.

В левой таблице имеется колонка «Включить лог», при установке флажка в которой будет включено логирование таблицы.

Рядом с ней расположена колонка «Показывать все», включение флага в которой приведет к включению логирования всех полей этой таблицы.

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

Рис.2 Внешний вид утилиты IBHistory в процессе настройки

Колонка «название для отображения» служит для определения названия в колонке «параметр истории изменений» при просмотре истории.

В колонке «SQL-запрос для подмены» можно добавить sql-запросы, для преобразования значений, выводимых в лог в легко читаемом виде.

Например, при изменении скидки на абонемент (поле DISCOUNTID таблицы PACKAGE_KINDS) в полях старое и новое значение отобразятся ID скидки, не имеющие ничего общего с ее реальным размером.
Если же добавить в подмену запрос: 

select name from discounts where id=:param

То результатом будет не ID, а наименование скидки, что гораздо удобнее.
:param – переменная, которой присваивается изначальное значение (в данном примере ей присвоился DISCOUNTID)

 

Настройка логирования

Алгоритм настройки следующий:

  • В файле ibhistory.ini указать путь к базе.
  • Выставить флаги на таблицах, которые требуется логировать и их полях. Настроить названия для отображения, и при необходимости sql-запросы для подмены.
  • Если имеется готовый конфигурационный файл, то нажать кнопку "загрузить конфигурацию из cfg-файла" и выбрать его.
  • После завершения настройки нужно нажать кнопку "сохранить конфигурацию базы" и дождаться сообщения об успешном сохранении конфигурации.

С этого момента будет вестись логирование выбранных полей.

 

Просмотр лога

Есть несколько вариантов просмотра лога.
Он ведется в таблице SYS$LOG. Таким образом, первый вариант – смотреть изменения в IBExpert. Конечно, он не годится для обычного пользователя.

Второй вариант – кнопка «История изменений» в Абонементе.

Рис.3 Кнопка "Показать историю изменений"  в интерфейсе основного модуля Абонемент

ВАЖНО

История отображается только для выбранного объекта (т.е выбрав, например, тип абонемента, и нажав на кнопку "Показать историю изменений" мы видим только его историю, не других).

Рис.4 Просмотр лога изменений, на примере изменения названия объекта в общих параметрах

 

 

К сведению

К сожалению подробного описания соответствия таблиц и полей их назначения в Абонемент нет. Большая часть таблиц минимально описаны в данной вики.

Не рекомендуется включать логирование частоизменяемых таблиц (например: ACCESS_CONTROL_LOG), поскульку логирование изменения данных таблиц приведёт к увеличению скорости роста БД.