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

23.09.14

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

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

Скачать файл

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

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

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

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

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

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

 

 

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

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

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

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

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

 

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

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

 

 

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

 

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

 



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

См. также

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

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

6000 руб.

28.11.2018    21171    17    7    

42

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

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

20.11.2024    1606    user1913000    12    

20

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

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

21.10.2024    3643    leemuar    8    

24

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

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

1 стартмани

29.12.2023    2482    39    dima_gsv    3    

14

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

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

1 стартмани

19.11.2023    1725    5    AlexSTAL    0    

8

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

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

1 стартмани

13.11.2023    5309    11    AlexSTAL    0    

47

Журнал регистрации Инструменты администратора БД Мониторинг Мессенджеры и боты Системный администратор Программист Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Управление холдингом 1С:Комплексная автоматизация 2.х Абонемент ($m)

Внешняя обработка для БСП-конфигураций с простым программным интерфейсом. Предназначена для мониторинга состояния системы. Базово реализована отправка ошибок из журнала регистрации, но можно легко добавить мониторинг других журналов, каких-либо действий пользователей, состояния системы (например закрытие месяца).

3 стартмани

26.09.2023    3142    22    doom2good    16    

14
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
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мя строками кода ..
ojiojiowka; +1 Ответить
4. ojiojiowka 23.09.14 20:20 Сейчас в теме
Может автор расскажет чем этот способ лучше типового (есть отчёты и возможность отката)? Может это размер получаемых логов или скорость записи? Что то мне кажется проигрыш будет и там и там, осталось тестами определить во сколько раз.
Оставьте свое сообщение