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

23.09.14

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

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

Скачать исходный код

Наименование Файл Версия Размер
Пример логирования обьектов через ЖР
.rar 7,41Kb
2
.rar 7,41Kb 2 Скачать
 

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

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

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

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

 

 

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

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

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

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

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

 

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

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

 

 

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

 

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

 



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

См. также

Журнал изменений с восстановлением состояния ссылочных объектов и архивацией по HTTP / COM (расширение + конфигурация, 8.3.14+, ЛЮБАЯ конфигурация)

Архивирование (backup) Журнал регистрации Поиск данных Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 1С:Управление торговлей 11 Платные (руб)

База данных «сама» меняет данные в документах/справочниках? Тогда данный журнал изменений для Вас! Практически не влияет на скорость записи объектов за счет быстрого алгоритма! Скорость работы почти в 2 раза выше типового механизма "История изменений"! Позволяет следить за изменениями и удалением в любых ссылочных объектах конфигурации, с возможностью архивации по HTTP(!) или COM, и сверткой данных. А так же, может восстановить состояние реквизитов (значения) до момента изменения или удаления объекта из базы. Есть ДЕМО-база где можно самостоятельно протестировать часть функционала! Работает на любых платформах выше 8.3.14+ и любых конфигурациях! Версия 3.1 от 24.08.2023!

21600 руб.

15.05.2017    42646    10    24    

38

Версионирование объектов для Альфа-авто, ред 4 и 5.

Оптовая торговля Розничная торговля Журнал регистрации Платформа 1С v8.3 Конфигурации 1cv8 Автомобили, автосервисы Управленческий учет Платные (руб)

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

4800 руб.

03.09.2016    42314    33    24    

37

LogManager - Внешний журнал регистрации в SQL

Журнал регистрации Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Журнал регистрации платформы 1С в SQL. Общая база хранения всех журналов. Через com-подключение регламентным заданием периодически догружает журналы регистраций из рабочих баз. Предоставляет настраиваемый доступ к журналам по правам подразделений. Формирует отчеты по пользователям и данным.

10000 руб.

23.05.2014    55596    52    16    

47

Мониторинг баз и серверов 1С

Журнал регистрации Мониторинг Платформа 1С v8.3 Платные (руб)

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

9000 руб.

28.08.2019    31134    14    21    

66

LogiCH - хранение и анализ журнала регистрации в сверхбыстрой СУБД ClickHouse

Журнал регистрации Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

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

5000 руб.

28.11.2018    19635    13    6    

37

Регламентное сокращение журнала регистрации

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

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

1 стартмани

29.12.2023    1399    15    dima_gsv    1    

12

Магия преобразований: ЖР, ТЖ, RAS/RAC, логи - универсальное решение Vector

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

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

1 стартмани

13.11.2023    3151    4    AlexSTAL    0    

42

Мониторинг состояния с отправкой в telegram

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

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

3 стартмани

26.09.2023    1839    11    doom2good    10    

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