Логирования объектов ИБ через журнал регистрации

23.09.14

База данных - Журнал регистрации

В любой организации чаще всего возникает проблема манипуляции с документами и  справочниками, целью которого чаще становиться покрыть рабочие косяки или по неосторожности. Но последствия таких действии приводят к разным серьезным проблемам от некорректных остатков до разбирательств на суде и в таких случаях обычно стандартные записи журнала регистрации не показывают детальные изменении. Чтобы в данном случае не усердствовать как Шерлок Холмс, предлагаю свой механизм логирования.  Логирование сохраняет все данные объекта и можно легко вытащить для просмотра

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Пример логирования обьектов через ЖР
.rar 7,41Kb
2
2 Скачать (1 SM) Купить за 1 850 руб.
 

Процедуру логирования сделал только для справочников и документов:

Процедура СоздатьЛогНажатие()
    
    Мета=Ссылка.Метаданные();
    
    Табл=Новый ТаблицаЗначений;
    Для Каждого Реквизит  Из Мета.Реквизиты Цикл
        Если  Табл.Колонки.Найти(Реквизит.Имя)=Неопределено Тогда
        Табл.Колонки.Добавить(Реквизит.Имя);
        
        КонецЕсли;
    КонецЦикла;
    
    Для Каждого ТЧ  Из Мета.ТабличныеЧасти Цикл
        Если  Табл.Колонки.Найти(ТЧ.Имя)=Неопределено Тогда
        Табл.Колонки.Добавить(ТЧ.Имя);
        
        КонецЕсли;
    КонецЦикла;

    НоваяСтрока=Табл.Добавить();
    
    Для Каждого Реквизит  Из Мета.Реквизиты Цикл
        
            
            НоваяСтрока[Реквизит.Имя]= Ссылка[Реквизит.Имя];
        
    
    КонецЦикла;

    
    Для Каждого ТЧ  Из Мета.ТабличныеЧасти Цикл
        
            НоваяСтрока[ТЧ.Имя]= Ссылка[ТЧ.Имя].Выгрузить();     
    КонецЦикла;
        
    СтрДанные=ЗначениеВСтрокуВнутр(Табл); 
    
    Если Справочники.ТипВсеСсылки().СодержитТип(ТипЗнч(Ссылка)) Тогда
        ИмяОб="Справочники."+Мета.Имя+"."+Строка(Ссылка.УникальныйИдентификатор());
    Иначе
        ИмяОб="Документы."+Мета.Имя+"."+Строка(Ссылка.УникальныйИдентификатор());
    КонецЕсли;
        
    //ЗаписьЖурналаРегистрации("Лог изменении",,Мета,СтрДанные);
    ЗаписьЖурналаРегистрации("ЗаписьЛогов",УровеньЖурналаРегистрации.Информация,Мета,СтрДанные,ИмяОб);
КонецПроцедуры

 

 

Когда нам нужно будет прочитать эти логи нужно использовать:

Процедура ПрочитатьЛог()
    

Мета=Ссылка.Метаданные(); //Ссылка это конкретный значение по которому надо прочитать лог

    Если Справочники.ТипВсеСсылки().СодержитТип(ТипЗнч(Ссылка)) Тогда
        ИмяОб="Справочники."+Мета.Имя+"."+Строка(Ссылка.УникальныйИдентификатор());
    Иначе
        ИмяОб="Документы."+Мета.Имя+"."+Строка(Ссылка.УникальныйИдентификатор());
    КонецЕсли;
    
    ТЗ=Новый ТаблицаЗначений;
    

   //сперва выгржаем ЖР в таб.значения с фильтром по периодам, по событиям "ЗаписьЛогов"
    ВыгрузитьЖурналРегистрации(ТЗ,Новый Структура("ДатаНачала,ДатаОкончания,Пользователь,Событие",НачалоМесяца(НачПериода),КонецМесяца(КонПериода),ПользователиИнформационнойБазы.НайтиПоИмени("administrator"),"ЗаписьЛогов"),"Дата,ИмяПользователя,Компьютер,Данные,Комментарий");
    
    ТаблицаЛогов=ТЗ.Скопировать(Новый Структура("Комментарий",ИмяОб));
    для Каждого стрДанные Из ТаблицаЛогов  Цикл
        
        Попытка
            ТЗДанных=ЗначениеИзСтрокиВнутр(стрДанные.Данные);
            стрДанные.Данные=ТЗДанных;
        Исключение
        КонецПопытки;
        
    КонецЦикла;
    
    ЭлементыФормы.ТаблицаЛогов.СоздатьКолонки(); //з
КонецПроцедуры

 

Такой вариант хотя и покажется банальный но очень действенный главное ЖР вовремя очищать, сделать регламентное задание или при очередном логирования, код очистки будет таков:

 ОчиститьЖурналРегистрации(Новый Структура("ДатаНачала,ДатаОкончания,Пользователь,Событие",НачалоМесяца(НачПериода),КонецМесяца(КонПериода),ПользователиИнформационнойБазы.НайтиПоИмени("administrator"),"ЗаписьЛогов"));

 

 

Если логи надо хранить на продолжительный период и ЖР не увеличивал базу, можно хранить данные в файл или в отдельную базу данных например на mssql или в базе 1с. Но это дело необходимости!

 

Спасибо за внимания!

 



журнал регистрации логирования документы справочники

См. также

Журнал регистрации Системный администратор Платформа 1С v8.3 Управляемые формы 1C:Бухгалтерия Россия Платные (руб)

История изменений реквизитов и табличных частей справочников, документов, независимых регистров сведений, возможность отката изменения, восстановление удаленных объектов, сбор статистики использования базы 1С. Альтернативный журнал регистрации.

22800 руб.

22.02.2018    35956    59    54    

57

Журнал регистрации Системный администратор Платформа 1С v8.3 1C:Бухгалтерия Платные (руб)

Конфигурация LogiCH эффективно решает проблему хранения и анализа записей журналов регистрации. Разработка использует столбцовую СУБД ClickHouse, одну из самых быстрых Big Data OLAP СУБД. Любой анализ журнала можно выполнить в одном отчете, в котором доступны все возможности СКД с учетом ограничений RLS. Количество подключаемых баз не ограничено и не влияет на скорость построения анализа.

6000 руб.

28.11.2018    21330    18    7    

44

Журнал регистрации Программист Россия Бесплатно (free)

В материале рассматривается сравнение двух инструментов для работы с журналом регистрации 1С: утилиты ibcmd и платформы Vector. Описаны их функциональные возможности, тестирование производительности и практическое применение для преобразования логов в формат JSON.

20.11.2024    1955    user1913000    13    

20

Журнал регистрации Тестирование QA Программист Бесплатно (free)

Поговорим про логирование в приложениях на базе 1С, рассмотрим проблемы, которые возникают при сборе информации из этих систем, и обсудим практический опыт применения внутренних и внешних инструментов для анализа логов.

21.10.2024    3999    leemuar    8    

24

Инструменты администратора БД Журнал регистрации Системный администратор Платформа 1С v8.3 1С:Управление торговлей 11 Абонемент ($m)

Внешняя обработка для регламентного сокращения журнала регистрации для конфигураций на базе БСП и платформы 8.3.20+

1 стартмани

29.12.2023    2636    43    dima_gsv    3    

14

Журнал регистрации Мониторинг Системный администратор Программист Абонемент ($m)

Как легко и быстро с помощью специализированных решений собирать, парсить и передавать логи и метрики.

1 стартмани

19.11.2023    1838    6    AlexSTAL    0    

8

Мониторинг Журнал регистрации Технологический журнал Системный администратор Программист Абонемент ($m)

Как легко и быстро с помощью специализированных решений собирать, парсить и передавать логи и метрики.

1 стартмани

13.11.2023    5642    11    AlexSTAL    0    

47
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. AlX0id 23.09.14 10:17 Сейчас в теме
Сохранять данные объектов в ЖР и
главное ЖР вовремя очищать

Что-то как-то противоречат друг другу ) Может проще уж сразу в отдельный текстовый файл феячить эти писульки и не трогать ЖР? Раз уж он вам не нужен - проще отключить вовсе, нежели бодягу с регламентниками устраивать..
2. slazzy 42 23.09.14 11:02 Сейчас в теме
Чем система версионирования не угодила? Даже если сама как таковая не угодила, почему не сделать по её принципу через сериализацию?
alexeyvs77; DrAku1a; ojiojiowka; +3 Ответить
3. AllexSoft 23.09.14 11:19 Сейчас в теме
По поводу версионирования... для тех у кого пухнет регистр ВерсииОбъектов, есть неплохой выход сократить объемы базы..
можно зайти в регистр, там есть реквизит Комментарий Тип строка 1024. фиксированная.. этот реквизит не используется. Поэтому берем и задаем ему тип Строка,100, переменная. Заходим в конфигуратор - Администрирование - ТИИ - Сжатие базы.. радуемся )
ПС: удалять дубли версионирования тоже полезно..
ПС2: по поводу сей поделки автору надо бы посмотреть в сторону сериализации, ибо то что он написал делается 3мя строками кода ..
116hrus; ojiojiowka; +2 Ответить
4. ojiojiowka 23.09.14 20:20 Сейчас в теме
Может автор расскажет чем этот способ лучше типового (есть отчёты и возможность отката)? Может это размер получаемых логов или скорость записи? Что то мне кажется проигрыш будет и там и там, осталось тестами определить во сколько раз.
Оставьте свое сообщение