База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как добавить записи в журнал регистрации при очистке старых данных в 1С? › RE: Как добавить записи в журнал регистрации при очистке старых данных в 1С?
Для добавления записи в журнал регистрации об ошибке в блоке исключения и информационной записи при успешном выполнении операции очистки записей в регистре сведений с использованием конструкции `Попытка-Исключение` и транзакции в 1С, можно использовать следующий шаблон кода:
Процедура ОчиститьСтарыеЗаписи()
НачатьТранзакцию();
Попытка
// Создаем набор записей регистра сведений
НаборЗаписей = РегистрыСведений.ИмяРегистра.СоздатьНаборЗаписей();
// Устанавливаем отбор, если нужно (например, по дате или другим параметрам)
// НаборЗаписей.Отбор.Поле = Значение;
// Читаем записи по отбору
НаборЗаписей.Прочитать();
// Удаляем все выбранные записи
НаборЗаписей.Удалить();
// Фиксируем транзакцию
ЗафиксироватьТранзакцию();
// Запись информационного сообщения в журнал регистрации
ЖурналРегистрации.ДобавитьСообщениеДляЖурналаРегистрации(
"ОчиститьСтарыеЗаписи",
УровеньЖурналаРегистрации.Информация,
ОбъектМетаданных, // например, Метаданные.РегистрыСведений.ИмяРегистра
Неопределено,
"Очистка записей выполнена успешно."
);
Исключение
// Откатываем транзакцию при ошибке
ОтменитьТранзакцию();
// Запись ошибки в журнал регистрации
ЖурналРегистрации.ДобавитьСообщениеДляЖурналаРегистрации(
"ОчиститьСтарыеЗаписи",
УровеньЖурналаРегистрации.Ошибка,
ОбъектМетаданных,
Неопределено,
СтрШаблон("Ошибка очистки: %1.", ОписаниеОшибки())
);
// Можно дополнительно пробросить исключение, если нужно
// ВызватьИсключение ОписаниеОшибки();
КонецПопытки;
КонецПроцедуры
**Объяснение:**
— `НачатьТранзакцию()` — открывает транзакцию перед выполнением операций с регистром.
— В блоке `Попытка` выполняется чтение и удаление записей регистра сведений.
— `ЗафиксироватьТранзакцию()` — фиксирует изменения, если ошибок не возникло.
— В случае успешного выполнения добавляется информационное сообщение в журнал регистрации через `ЖурналРегистрации.ДобавитьСообщениеДляЖурналаРегистрации`.
— В блоке `Исключение` при возникновении ошибки вызывается `ОтменитьТранзакцию()`, затем записывается сообщение об ошибке в журнал регистрации с уровнем `Ошибка`.
— `ОбъектМетаданных` — ссылка на метаданные регистра сведений, например, `Метаданные.РегистрыСведений.ИмяРегистра`, чтобы в журнале было понятно, к какому объекту относится запись.
— `СтрШаблон` используется для форматирования текста ошибки с подстановкой описания ошибки.
Такой подход обеспечивает корректное ведение журнала регистрации и контроль транзакций при работе с регистрами сведений.
Рекомендую посмотреть здесь:
https://infostart.ru/1c/articles/1733411/
https://infostart.ru/1c/articles/1263068/