Внедрение истории данных

11.06.21

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

Рассматривается решение задачи начального заполнения истории и блокировки записи истории, если данные неизменны.

Скачать файлы

Наименование Файл Версия Размер
 УправлениеИОчисткаИсторииДанных.epf :
.epf 8,08Kb
1
.epf 8,08Kb 1 Скачать

1. Начальное заполнение истории по всем данным нерационально, предлагается вместо этого выполнять запись в историю только при первом изменений объекта. 

2. Если объект сохраняется при отсутствии изменений, тогда прсто выполняем отказ от записи. Объект для сравнения объекта записывается в регистр сведения для временного хранения данных.

3. Обновление истории в ФормаИсторииИзмененийИсторииДанных отключаем и выполняем обновление через регламентное задание.

4. Для скачивания размещена  обработка УправлениеИОчисткаИсторииДанных.epf позволяет управлять механизмом истории в режиме 1С Предприятии. Полезно для включения/отключать механизм истории данных, очистки истории. Полезно также для отключения историии в подчиненных узлах РИБ (если этот механизм не нужен).

Проверено на платформе 1С:Предприятие 8.3 (8.3.13.1809).

Для примера запись истории для справочника (используется подписка на события):
 

// Вставляем в подписку на события: Справочник Объект, ПередЗаписью
Процедура Справочники_ПередЗаписью(Источник, Отказ) Экспорт
    Попытка
        Если Источник.Метаданные().ИсторияДанных =Метаданные.СвойстваОбъектов.ИспользованиеИсторииДанных.Использовать Тогда
            Настройки = ИсторияДанных.ПолучитьНастройки(Источник.Метаданные());
            Если Настройки = Неопределено Тогда
                Использование=Истина;
            Иначе
                Использование=Настройки.Использование;
            КонецЕсли;
            Если НЕ Источник.ЭтоНовый () И НЕ Отказ И Использование Тогда
                ЗаписьJSON = Новый ЗаписьJSON;
                ЗаписьJSON.УстановитьСтроку();
                СериализаторXDTO.ЗаписатьJSON(ЗаписьJSON, Источник.Ссылка.ПолучитьОбъект(), НазначениеТипаXML.Явное);
                СериализованныйОбъект=ЗаписьJSON.Закрыть();    
                
                ЗапРег=РегистрыСведений.ОбъектВХранилище.СоздатьМенеджерЗаписи();
                ЗапРег.СсылкаОбъекта=Источник.Ссылка;
                ЗапРег.ОбъектВХранилище=Новый ХранилищеЗначения(СериализованныйОбъект);
                ЗапРег.Записать();
                
                Отбор = Новый Структура;
                Отбор.Вставить(    "Данные", Источник.Ссылка);
                Версии = ИсторияДанных.ВыбратьВерсии(Отбор,    "НомерВерсии, Дата",,1);
                
                Если Версии.Количество()=0 Тогда
                    ТекущийПользовательИБ=ПользователиИнформационнойБазы.ТекущийПользователь();
                    
                    ЗапРег=РегистрыСведений.РегистрацияВерсииИсторииДанных.СоздатьМенеджерЗаписи();
                    ЗапРег.СсылкаОбъекта=Источник.Ссылка;
                    ЗапРег.ОбъектВХранилище=Новый ХранилищеЗначения(СериализованныйОбъект);
                    ЗапРег.Дата=ТекущаяДата();
                    ЗапРег.ВидИзмененияДанных=Строка(ВидИзмененияДанных.Добавление);
                    ЗапРег.Комментарий="Начальное заполнение истории данных";
                    ЗапРег.ТекущийПользователь=Новый ХранилищеЗначения (ТекущийПользовательИБ);
                    ЗапРег.Записать();                     
                КонецЕсли;
            Иначе
                Если  НЕ Отказ Тогда
                    
                КонецЕсли;
            КонецЕсли;
            
        КонецЕсли;
    Исключение
        Сообщить ( ОписаниеОшибки());    
    КонецПопытки;
    
КонецПроцедуры

// Вставляем в подписку на события: Справочник Объект, ПриЗаписи
Процедура Справочники_ПриЗаписи(Источник, Отказ) Экспорт
    
    Попытка         
        Если  Источник.Метаданные().ИсторияДанных =Метаданные.СвойстваОбъектов.ИспользованиеИсторииДанных.Использовать Тогда
            
            Настройки = ИсторияДанных.ПолучитьНастройки(Источник.Метаданные());
            Если Настройки = Неопределено Тогда
                Использование=Истина;
            Иначе
                Использование=Настройки.Использование;
            КонецЕсли;
            
            Если НЕ Источник.ЭтоНовый () И НЕ Отказ И Использование Тогда
                ЗапРег=РегистрыСведений.ОбъектВХранилище.Получить( Новый Структура("СсылкаОбъекта",Источник.Ссылка));
                ЗапРег=РегистрыСведений.ОбъектВХранилище.СоздатьМенеджерЗаписи();
                ЗапРег.СсылкаОбъекта= Источник.Ссылка;
                ЗапРег.Прочитать();
                
                Если ЗапРег.Выбран() Тогда
                    ОбъектПередЗаписью =ЗапРег.ОбъектВХранилище.Получить();
                    ЗаписьJSON = Новый ЗаписьJSON;
                    ЗаписьJSON.УстановитьСтроку();
                    СериализаторXDTO.ЗаписатьJSON(ЗаписьJSON, Источник, НазначениеТипаXML.Явное);
                    ОбъектПриЗаписи=ЗаписьJSON.Закрыть();
                    
                    СравнениеСтр= Новый СравнениеЗначений  ;
                    Если СравнениеСтр.Сравнить(ОбъектПередЗаписью, ОбъектПриЗаписи)= 0 Тогда 
                        Отказ=Истина;
                    КонецЕсли; 
                    ЗапРег.ОбъектВХранилище= Неопределено;
                    ЗапРег.Удалить();
                Иначе
                    Источник.УстановитьКомментарийВерсииИсторииДанных("создание нового объекта");
                КонецЕсли;
                
            КонецЕсли;
        Иначе
            Если  НЕ Отказ Тогда
                    //Источник.УстановитьКомментарийВерсииИсторииДанных("новый объект");
            КонецЕсли;
        КонецЕсли;
    Исключение
        Сообщить ( ОписаниеОшибки());    
    КонецПопытки;
КонецПроцедуры

//Процедуроа стандартной формы ФормаИсторииИзмененийИсторииДанных
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    Перем МетаданныеДанных, ЭтоПодчиненныйРегистрСведений;
    МетаданныеДанных = Параметры.Данные.Метаданные();
    Если Не ПравоДоступа("ПросмотрИсторииДанных", МетаданныеДанных) Тогда
        Отказ = Истина;
        Возврат;
    КонецЕсли;
    Отбор.Вставить("Данные", Параметры.Данные);
    
    Элементы.ВерсииКомментарий.ТолькоПросмотр = Не ПравоДоступа("РедактированиеКомментарияВерсииИсторииДанных", МетаданныеДанных);
    
    ЭтоПодчиненныйРегистрСведений = Метаданные.РегистрыСведений.Содержит(МетаданныеДанных) 
        И МетаданныеДанных.РежимЗаписи = Метаданные.СвойстваОбъектов.РежимЗаписиРегистра.ПодчинениеРегистратору;
        
    Если ЭтоПодчиненныйРегистрСведений 
        Или Не ПравоДоступа("ПереходНаВерсиюИсторииДанных", МетаданныеДанных) Тогда
        Элементы.ФормаПерейтиНаВерсию.Видимость = Ложь;
        Элементы.ВерсииКонтекстноеМенюПерейтиНаВерсию.Видимость = Ложь;
    КонецЕсли;
    
    Заголовок = 
        ПолучитьПредставлениеДанных(МетаданныеДанных, Параметры.Данные) +  " (" + 
        NStr("ru = 'История изменений'; SYS = 'DataHistory.VersionsTitle'", "ru")
         + ")";        
    //ИсторияДанных.ОбновитьИсторию(Параметры.Данные);
    ВыбратьВерсии();
    ОбновитьДоступностьОтключенияОтбора();
    КоманднаяПанель.ПодчиненныеЭлементы.ФормаОбновитьРучками.Видимость= РольДоступна("ПолныеПрава");
КонецПроцедуры

 

См. также

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

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

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

10000 руб.

23.05.2014    54988    50    16    

43

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

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

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

9000 руб.

28.08.2019    29682    13    21    

59

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

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

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

5000 руб.

28.11.2018    19244    12    6    

35

Версионирование справочников, документов и регистров сведений на SQL-сервере

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

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

19200 руб.

22.02.2018    34701    60    53    

54

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

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

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

1 стартмани

13.11.2023    1832    2    AlexSTAL    0    

33

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

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

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

3 стартмани

26.09.2023    1199    5    doom2good    10    

11

История фоновых заданий

Журнал регистрации Статистика базы данных HighLoad оптимизация Конфигурации 1cv8 Абонемент ($m)

Удобный отчет по выполнению фоновых заданий в 1С с разбивкой по разным критериям, например по срокам, в какой последовательности, выполнение дольше всех, сколько одновременно и так далее.

5 стартмани

04.09.2023    445    5    Maxiko    0    

7

Перенаправление вывода журнала регистрации

Linux Журнал регистрации Платформа 1С v8.3 Бесплатно (free)

Экспериментируем с реализацией драйвера текстового устройства под Linux для перенаправления вывода журнала регистрации.

07.08.2023    993    Lars Ulrich    1    

16
Оставьте свое сообщение