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

Как добавить записи...
 

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


Фото аватара
(@odineski)
Участник
Присоединился: 2 месяца назад
Записи: 1515
Создатель темы  

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



   
Цитата
(@odin)
Участник
Присоединился: 2 месяца назад
Записи: 1470
 

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

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

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

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

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

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



   
ОтветитьЦитата