Запись в журнал регистрации изменений дополнительных сведений

04.05.17

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

Небольшая доработка программы "Управление торговлей 11" для записи информации в журнал регистрации изменений дополнительных сведений (регистр сведений) по объектам. Должна работать на всех релизах.

Периодически от пользователей появлялись вопросы типа: "как найти, кто поставил галочку в документе"? Версионирование объектов включено, есть журнал регистрации, да вот незадача - галочка эта находится не в реквизитах документа, а в Дополнительных свойствах, привязанных к этому документу. В журнале регистрации запись такая, конечно же фиксируется, но информации по ней - практически ноль, только то, что Метаданные = РегистрСведений.ДополнительныеСведения, а хотелось бы видеть сам объект, свойство и новое значение. Причем по объекту желательно сделать возможность поиска (=отбора).

Повозившись немного, реализовал-таки этот механизм, получилось по-моему довольно удобно. Чтобы другим не изобретать велосипед, поделюсь своим решением.
Итак, во-первых, создаем Подписку на событие "ПередЗаписью" источника "РегистрСведенийНаборЗаписей.ДополнительныеСведения":
______________________________________________________________________________________________________________________
____________________________________________________________________________________________
указываем место расположение обработчика, код обработчика со вспомогательной процедурой следующий:
_____________________________________________________________________________________________
Процедура ПриЗаписиДополнительныхСведенийПередЗаписью(Источник, Отказ, Замещение) Экспорт
    
    Объект = Источник.Отбор.Объект.Значение;
    
    НаборЗаписей = РегистрыСведений.ДополнительныеСведения.СоздатьНаборЗаписей();
    НаборЗаписей.Отбор.Объект.Установить(Объект);
    НаборЗаписей.Прочитать();
    
    СтарыеЗначения = НаборЗаписей.Выгрузить();
    МассивОбработанныхСвойств = Новый Массив;
    
    Для каждого Запись Из Источник Цикл
        СделатьЗапись = Ложь;
        НайденнаяСтрока = СтарыеЗначения.Найти(Запись.Свойство, "Свойство");
        Если НайденнаяСтрока = Неопределено Тогда
            СделатьЗапись = Истина;
        Иначе    
            Если НайденнаяСтрока.Значение <> Запись.Значение Тогда
                СделатьЗапись = Истина;
            КонецЕсли; 
        КонецЕсли; 
        
        Если СделатьЗапись Тогда
            СделатьЗаписьЖурналаРегистрацииОбИзмененииДопСведения(Объект, Запись.Свойство, Запись.Значение);
        КонецЕсли; 
        МассивОбработанныхСвойств.Добавить(Запись.Свойство);    
    КонецЦикла; 
    
    // отдельно обработаем те свойства, значения которых выставлено в Ложь (они не попадают в Источник)
    Для каждого ТекСтрока Из СтарыеЗначения Цикл
        Если МассивОбработанныхСвойств.Найти(ТекСтрока.Свойство) = Неопределено Тогда
            СделатьЗаписьЖурналаРегистрацииОбИзмененииДопСведения(Объект, ТекСтрока.Свойство, Ложь);
        КонецЕсли; 
    КонецЦикла; 
    
КонецПроцедуры

Процедура СделатьЗаписьЖурналаРегистрацииОбИзмененииДопСведения(Объект, Свойство, Значение)

    ЗаписьЖурналаРегистрации("Данные.Изменение", 
        УровеньЖурналаРегистрации.Информация,
        Метаданные.РегистрыСведений.ДополнительныеСведения,
        Объект,
        "У свойства: """ + Свойство + """ установлено новое значение: """ + Значение + """");

КонецПроцедуры
Пример результата из журнала:
___________________________________________________________________
___________________________________________________________________
Данное решение применимо и для других конфигураций, в которых указанный регистр сведений имеет аналогичную структуру. В противном случае, текст процедуры нужно поправить, подставив "свои" имена реквизитов.

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

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

См. также

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

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

22800 руб.

22.02.2018    37421    61    55    

58

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

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

12000 руб.

23.05.2014    58154    53    17    

48

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

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

20.11.2024    4855    user1913000    13    

24

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

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

21.10.2024    6430    leemuar    8    

24

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

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

1 стартмани

29.12.2023    4010    53    dima_gsv    4    

14

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

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

1 стартмани

19.11.2023    3149    9    AlexSTAL    0    

8

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

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

1 стартмани

13.11.2023    7920    13    AlexSTAL    0    

48

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

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

3 стартмани

26.09.2023    4704    29    doom2good    16    

15
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. necropunk 11 04.05.17 17:15 Сейчас в теме
Хе-хе, буквально месяц назад абсолютно такую же задачу решал и абсолютно тем же способом. Хотя, мне очень не нравится нагружать журнал регистрации - на больших базах искать в нем что-то вменяемое бывает довольно мучительно. Видел базу, в которой если период поиска ставишь больше месяца - база вообще падает, приходится сервер рестартить.
2. Mortiferus 367 04.05.17 19:46 Сейчас в теме
(1) Согласен, с журналом бывает такое... В данном случае хотелось по-быстрому, не создавая лишних регистров.
3. v.l. 437 10.08.18 09:01 Сейчас в теме
(1) Это решено на платформе начиная с релиза 8.3.5. Там ЖР представлен в базе SQLite.
5. crash-16 3 20.03.20 08:18 Сейчас в теме
(3) только вроде такой журнал еще хуже - 1с признали это )
4. vkozak 03.03.20 16:16 Сейчас в теме
Качественная и полезная шпаргалка.
Спасибо!!
Для отправки сообщения требуется регистрация/авторизация