База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как добавить записи в журнал регистрации при очистке старых данных в 1С? › RE: Как добавить записи в журнал регистрации при очистке старых данных в 1С?
Для добавления записи в журнал регистрации об ошибке в блоке исключения и информационной записи при успешном выполнении операции очистки записей в регистре сведений с использованием конструкции Попытка-Исключение и транзакции в 1С, можно использовать следующий шаблон кода:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
Процедура ОчиститьСтарыеЗаписи() НачатьТранзакцию(); Попытка // Создаем набор записей регистра сведений НаборЗаписей = РегистрыСведений.ИмяРегистра.СоздатьНаборЗаписей(); // Устанавливаем отбор, если нужно (например, по дате или другим параметрам) // НаборЗаписей.Отбор.Поле = Значение; // Читаем записи по отбору НаборЗаписей.Прочитать(); // Удаляем все выбранные записи НаборЗаписей.Удалить(); // Фиксируем транзакцию ЗафиксироватьТранзакцию(); // Запись информационного сообщения в журнал регистрации ЖурналРегистрации.ДобавитьСообщениеДляЖурналаРегистрации( "ОчиститьСтарыеЗаписи", УровеньЖурналаРегистрации.Информация, ОбъектМетаданных, // например, Метаданные.РегистрыСведений.ИмяРегистра Неопределено, "Очистка записей выполнена успешно." ); Исключение // Откатываем транзакцию при ошибке ОтменитьТранзакцию(); // Запись ошибки в журнал регистрации ЖурналРегистрации.ДобавитьСообщениеДляЖурналаРегистрации( "ОчиститьСтарыеЗаписи", УровеньЖурналаРегистрации.Ошибка, ОбъектМетаданных, Неопределено, СтрШаблон("Ошибка очистки: %1.", ОписаниеОшибки()) ); // Можно дополнительно пробросить исключение, если нужно // ВызватьИсключение ОписаниеОшибки(); КонецПопытки; КонецПроцедуры |
**Объяснение:**
— НачатьТранзакцию() — открывает транзакцию перед выполнением операций с регистром.
— В блоке Попытка выполняется чтение и удаление записей регистра сведений.
— ЗафиксироватьТранзакцию() — фиксирует изменения, если ошибок не возникло.
— В случае успешного выполнения добавляется информационное сообщение в журнал регистрации через ЖурналРегистрации.ДобавитьСообщениеДляЖурналаРегистрации.
— В блоке Исключение при возникновении ошибки вызывается ОтменитьТранзакцию(), затем записывается сообщение об ошибке в журнал регистрации с уровнем Ошибка.
— ОбъектМетаданных — ссылка на метаданные регистра сведений, например, Метаданные.РегистрыСведений.ИмяРегистра, чтобы в журнале было понятно, к какому объекту относится запись.
— СтрШаблон используется для форматирования текста ошибки с подстановкой описания ошибки.
Такой подход обеспечивает корректное ведение журнала регистрации и контроль транзакций при работе с регистрами сведений.
Рекомендую посмотреть здесь:
https://infostart.ru/1c/articles/1733411/
https://infostart.ru/1c/articles/1263068/