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

11.06.21

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

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

Скачать файл

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

Наименование По подписке [?] Купить один файл
 УправлениеИОчисткаИсторииДанных.epf :
.epf 8,08Kb
2
2 Скачать (5 SM) Купить за 3 050 руб.

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")
         + ")";        
    //ИсторияДанных.ОбновитьИсторию(Параметры.Данные);
    ВыбратьВерсии();
    ОбновитьДоступностьОтключенияОтбора();
    КоманднаяПанель.ПодчиненныеЭлементы.ФормаОбновитьРучками.Видимость= РольДоступна("ПолныеПрава");
КонецПроцедуры

 

См. также

Журнал регистрации Мониторинг Системный администратор Программист Бизнес-аналитик Руководитель проекта Платформа 1С v8.3 Платные (руб)

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

9000 руб.

28.08.2019    34405    22    21    

76

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

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

6000 руб.

28.11.2018    21041    17    7    

42

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

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

20.11.2024    1324    user1913000    11    

20

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

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

21.10.2024    3335    leemuar    8    

24

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

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

1 стартмани

29.12.2023    2333    36    dima_gsv    3    

13

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

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

1 стартмани

19.11.2023    1592    5    AlexSTAL    0    

8

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

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

1 стартмани

13.11.2023    5053    9    AlexSTAL    0    

47

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

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

3 стартмани

26.09.2023    2982    19    doom2good    16    

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