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

23.09.14

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

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

Файлы

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

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

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой
 

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

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

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

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

 

 

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

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

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

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

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

 

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

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

 

 

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

 

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

 



Вступайте в нашу телеграмм-группу Инфостарт

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

См. также

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

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

22800 руб.

22.02.2018    37173    61    55    

58

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

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

12000 руб.

23.05.2014    57845    53    17    

48

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

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

20.11.2024    4312    user1913000    13    

22

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

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

21.10.2024    6037    leemuar    8    

24

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

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

1 стартмани

29.12.2023    3709    52    dima_gsv    4    

14

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

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

1 стартмани

19.11.2023    2874    7    AlexSTAL    0    

8

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

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

1 стартмани

13.11.2023    7519    12    AlexSTAL    0    

48

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

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

3 стартмани

26.09.2023    4395    28    doom2good    16    

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

Что-то как-то противоречат друг другу ) Может проще уж сразу в отдельный текстовый файл феячить эти писульки и не трогать ЖР? Раз уж он вам не нужен - проще отключить вовсе, нежели бодягу с регламентниками устраивать..
2. slazzy 43 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 Сейчас в теме
Может автор расскажет чем этот способ лучше типового (есть отчёты и возможность отката)? Может это размер получаемых логов или скорость записи? Что то мне кажется проигрыш будет и там и там, осталось тестами определить во сколько раз.
Для отправки сообщения требуется регистрация/авторизация