В какой то момент пропали настройки журнала изменений по контакту.
Как можно отследить изменение настроек аудита? Кто, когда?
Нравится
Егор, добрый день!
Обычно такие задачи решаются с помощью самого журнала аудита (не журнала изменений). Но сейчас в системе не логируется изменение настроек журнала изменений (я создала соответствующую идею в беклоге профильной команды). Список логируемых операций можно посмотреть тут: https://academy.terrasoft.ru/documents/studio/7-12/razdel-zhurnal-audita
В качестве обходного решения можно сделать следуюшее:
1. Для анализа текущей ситуации проанализировать логи приложения (там должны быть видны соответсвующие запросы) и сравнить с данными по сессиям пользователей.
2. На будущее реализовать собственный тригер на уровне БД, который будет писать в лог, если кто-то будет менять настройки журнала изменений.
Юлия, можете еще подсказать на какую таблицу вешать триггер чтобы отследить изменение настроек журнала изменений?
Настройка - по каким полям ведется логирование в таблицу SysContactLog.
Егор, как оказалось, все не так просто (как это бывает). Настроки журнала хранятся непосредственно в метаданных таблицы, которая логируется. Причем в слабочитаемом виде. Система умеет их парсить. Например, открыв в конфигурации метаданные логируемого объекта вы можете увидеть читабельный текст со свойствами всех колонок объекта:
{ "UId": "736c30a7-c0ec-4fa9-b034-2552b319b633", "Name": "Name", "CreatedInSchemaUId": "11ab4bcb-9b23-4b6d-9c86-520fae925d75", "ModifiedInSchemaUId": "4cbdc6f3-625d-4639-92bf-bb19d4c9d58e", "CreatedInPackageId": "66e9e705-64b4-4dda-925e-d1e05a389eb6", "DataValueTypeUId": "ddb3a1ee-07e8-4d62-b7a9-d0e618b00fbd", "RequirementType": 1, "IsTrackChangesInDB": true, "IsLocalizable": true },
Но вот на уровне базы данных это уже хранится в колонке MetaData таблицы SysSchema в не таком удобном виде. Там следует искать код Е16, чтобы понять, колонка с каким UID логируется:
Таким образом, триггер нужно вешать на таблицу SysSchema на колонку MetaData по тому объекту, который вы хотите отследить. И сохранять весь текст метаданных, а потом уже анализировать его вручную. Наверное, можно даже посмотреть, какой запрос отправляет система в БД при открытии страницы настроек журнала изменений - там наверняка есть встроенные механизмы парсинга этих данных.
В общем я постараюсь повысить приоритет реализации логирования этих изменений через журнал аудита средствами системы :)