В работе бывают задачи, когда необходимо быстро понять, что реально происходит в информационной базе при выполнении каких-либо действий пользователя. Без долгого погружения в код. Просто выполняем действие в пользовательском режиме и получаем данные для анализа.
Простой механизм для аналитиков и разработчиков, помогающий отследить реальные изменения в базе. Был создан как внутренний инструмент.
Расширение предназначено для отслеживания изменений в справочниках, регистрах накопления и регистрах сведений 1С.
Оно перехватывает события перед записью для справочников и подчиненных регистратору регистров и при записи (для всех регистров), сохраняет данные во внешний лог на сервере и позволяет сформировать наглядный HTML-отчет для анализа изменений.
Расширение создано с помощью AI, как эксперимент по повышению скорости разработки. Все основные функции проверены и безопасны, но глубокий рефакторинг не проводился.
## Особенности работы расширения
При работе расширение фиксирует события `ПередЗаписью` и `ПриЗаписи` для регистров и `ПередЗаписью` для справочников:
- для регистров накопления и регистров сведений, подчиненных регистратору `ПередЗаписью` сохраняется предыдущее состояние записей (`beforeState`)
- для всех регистров `ПриЗаписи` сохраняется новое состояние записей (`afterRows`)
- для регистров накопления и подчиненных регистратору регистров сведений опеределяется, были ли изменения между было-стало
- для всех справочников `ПередЗаписью` с сохранением состояния как было (для существующих) и как стало
- каждая запись лога сохраняется как отдельная JSON-строка (`JSONL`), что упрощает разбор и ускоряет построение отчета
## Зачем это нужно
Расширение помогает разбирать сложные сценарии движения данных, когда стандартного анализа недостаточно:
- поиск причин расхождений в регистрах
- анализ перепроведения документов
- контроль очистки и повторной записи движений
- сравнение состояния регистра до и после записи
- аудит действий пользователей и регистраторов
- разбор спорных ситуаций по остаткам, потребностям и движениям
Особенно полезно в конфигурациях, где при проведении документа сначала удаляются старые движения, а затем записываются новые. В таком случае отчет показывает не промежуточный шум, а итоговое изменение состояния регистра.
## Формат и хранение лога
Лог хранится во внешнем файле на сервере.
Формат лога: одна строка = одно JSON-событие.
Это дает несколько преимуществ:
- простой append-режим записи
- меньше проблем с совместным доступом к файлу
- высокая скорость последовательного чтения
- удобство последующей обработки и экспорта
## Отчет по логу
По данным файла лога формируется HTML-отчет, в котором:
- события сгруппированы по пользователю и регистру
- внутри секции показаны все события записи
- выводятся `time` и `stamp`
- показывается признак `Замещение`
- для подчиненных регистров рассчитывается итоговая дельта:
- что было до первой записи
- что стало после последней записи
- какие строки добавлены
- какие строки удалены
- для справочников не новых (измененных) выводится итоговая дельта и как было как стало, для новых только как стало
- предусмотрена навигация по секциям и сохранение HTML-отчета в файл
## Доп. функции
- открытие файла лога и формирование по нему HTML-отчета - Еще-Файл-Открыть файл
- сохранение HTML-отчета в файл на диске - Еще-Файл-Сохранить файл
## Ограничения и предостережения
- расширение рассчитано на технический анализ, а не на полноценный пользовательский аудит
- файлы логов создаются на комбинацию Дата-Пользователь-Компьютер, если пользователи работают одновременно - будет создано несколько файлов, что может привести к неконтролируемому росту объема
- следите за ростом размера папки логов
- логи дописываются в соотв. файл, при необходимости нового лога - старый файл необходимо удалить или переименовать.
- при многопоточной записи в единый файл лога могут возникать блокировки, это приведет к пропуску каких-то событий, но основной поток продолжится
Код расширения открыт, можно дорабатывать под собственные нужды )
добавил логирование Задач и Бизнес процессов
Проверено на следующих конфигурациях и релизах:
- Управление торговлей, редакция 11, релизы 11.5.25.112
Вступайте в нашу телеграмм-группу Инфостарт