Обновлено 2024-09-14
Зачем это нужно
Штатный механизм платформы(журнал регистрации) не фиксирует какая именно запись регистра сведений была сделана в базу данных. Механизм версионирования объектов позволяет версионировать изменений в объектах ссылочного типа(и то не во всех: только Справочники и Документы).
рис. 1. Запись фиксирующая изменения в регистре сведений, созданная платформой
Если в вашей базе активно используют свойства и категории объектов и периодически возникают вопросы "кто изменил?" — стоит задуматься как такую информацию фиксировать
Код подписки ПриЗаписи
// Крынецкий 14.01.13
// Журналирование изменения свойств и категорий
Процедура у_ПриЗаписиСвойствКатегорийПриЗаписи(Источник, Отказ, Замещение) Экспорт
мМетаданные = Источник.Метаданные();
мДанные = Источник.Отбор.Объект.Значение;
мКомментарий = "";
НаборЗаписей = Источник;
Если ТипЗнч(Источник)=Тип("РегистрСведенийНаборЗаписей.ЗначенияСвойствОбъектов") Тогда
Событие = "Запись свойств";
Если НаборЗаписей.Количество()>0 Тогда
Для Каждого Запись Из НаборЗаписей Цикл
мКомментарий = мКомментарий + ?(мКомментарий = "", "", Символы.ПС) + Запись.Свойство + Символы.Таб + Запись.Значение;
КонецЦикла;
Иначе
Событие = "Удаление свойств";
мКомментарий = НаборЗаписей.Отбор;
Если НаборЗаписей.Отбор.Найти("Объект") <> Неопределено Тогда
мДанные = НаборЗаписей.Отбор["Объект"].Значение;
КонецЕсли;
КонецЕсли;
ИначеЕсли ТипЗнч(Источник)=Тип("РегистрСведенийНаборЗаписей.КатегорииОбъектов") Тогда
Событие = "Запись категорий";
НаборЗаписей = Источник;
Если НаборЗаписей.Количество()>0 Тогда
Для Каждого Запись Из НаборЗаписей Цикл
мКомментарий = мКомментарий + ?(мКомментарий = "", "", Символы.ПС) + Запись.Категория;
КонецЦикла;
КонецЕсли;
Иначе
Событие = "Неопознанное событие";
КонецЕсли;
ЗаписьЖурналаРегистрации(Событие, УровеньЖурналаРегистрации.Информация, мМетаданные, мДанные, мКомментарий);
КонецПроцедуры
Как объединить конфигурации
- Создаем общий модуль или используем уже существующий. У модуля должны стоять свойства: Сервер, Внешнее соединение, Клиент(обычное приложение)
- Объединяем конфигурации, берем только подписку на событие у_ПриЗаписиСвойствКатегорий
- После объединения у подписки на событие у_ПриЗаписиСвойствКатегорий указываем, что обработчик должен располагаться в указанном модуле
- Из конфигурации берем текст процедуры у_ПриЗаписиСвойствКатегорийПриЗаписи()
Что в итоге
В результате доработки при измении значений свойств и категорий в журнал регистрации будет сделана запись о том, что изменена запись с определенным свойством и значением (информация выводится в поле комментарий журнала регистрации). Плюс в поле Данные будет записан объект, которому принадлежит данное свойство/категория
рис.2. Запись сделанная подпиской на событие
Тестировалось в 1С:УПП 1.3.111 на платформах 8.3.12, 8.2.19.130