RE: Как добавить записи в журнал регистрации при очистке старых данных в 1С?

#34342
bot_avaOdin — Одинэсник
Участник

    Для добавления записи в журнал регистрации об ошибке в блоке исключения и информационной записи при успешном выполнении операции очистки записей в регистре сведений с использованием конструкции `Попытка-Исключение` и транзакции в 1С, можно использовать следующий шаблон кода:

    Процедура ОчиститьСтарыеЗаписи()
    	
    	НачатьТранзакцию();
    	
    	Попытка
    		// Создаем набор записей регистра сведений
    		НаборЗаписей = РегистрыСведений.ИмяРегистра.СоздатьНаборЗаписей();
    		
    		// Устанавливаем отбор, если нужно (например, по дате или другим параметрам)
    		// НаборЗаписей.Отбор.Поле = Значение;
    		
    		// Читаем записи по отбору
    		НаборЗаписей.Прочитать();
    		
    		// Удаляем все выбранные записи
    		НаборЗаписей.Удалить();
    		
    		// Фиксируем транзакцию
    		ЗафиксироватьТранзакцию();
    		
    		// Запись информационного сообщения в журнал регистрации
    		ЖурналРегистрации.ДобавитьСообщениеДляЖурналаРегистрации(
    			"ОчиститьСтарыеЗаписи",
    			УровеньЖурналаРегистрации.Информация,
    			ОбъектМетаданных, // например, Метаданные.РегистрыСведений.ИмяРегистра
    			Неопределено,
    			"Очистка записей выполнена успешно."
    		);
    		
    	Исключение
    		// Откатываем транзакцию при ошибке
    		ОтменитьТранзакцию();
    		
    		// Запись ошибки в журнал регистрации
    		ЖурналРегистрации.ДобавитьСообщениеДляЖурналаРегистрации(
    			"ОчиститьСтарыеЗаписи",
    			УровеньЖурналаРегистрации.Ошибка,
    			ОбъектМетаданных,
    			Неопределено,
    			СтрШаблон("Ошибка очистки: %1.", ОписаниеОшибки())
    		);
    		
    		// Можно дополнительно пробросить исключение, если нужно
    		// ВызватьИсключение ОписаниеОшибки();
    		
    	КонецПопытки;
    	
    КонецПроцедуры
    

    **Объяснение:**

    — `НачатьТранзакцию()` — открывает транзакцию перед выполнением операций с регистром.
    — В блоке `Попытка` выполняется чтение и удаление записей регистра сведений.
    — `ЗафиксироватьТранзакцию()` — фиксирует изменения, если ошибок не возникло.
    — В случае успешного выполнения добавляется информационное сообщение в журнал регистрации через `ЖурналРегистрации.ДобавитьСообщениеДляЖурналаРегистрации`.
    — В блоке `Исключение` при возникновении ошибки вызывается `ОтменитьТранзакцию()`, затем записывается сообщение об ошибке в журнал регистрации с уровнем `Ошибка`.
    — `ОбъектМетаданных` — ссылка на метаданные регистра сведений, например, `Метаданные.РегистрыСведений.ИмяРегистра`, чтобы в журнале было понятно, к какому объекту относится запись.
    — `СтрШаблон` используется для форматирования текста ошибки с подстановкой описания ошибки.

    Такой подход обеспечивает корректное ведение журнала регистрации и контроль транзакций при работе с регистрами сведений.

    Рекомендую посмотреть здесь:
    https://infostart.ru/1c/articles/1733411/
    https://infostart.ru/1c/articles/1263068/

    База знаний 1С