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

База знаний Одина — Одинэсника Форумы ODIN — Форум по 1С Предприятию Как добавить записи в журнал регистрации при очистке старых данных в 1С?

Просмотр 1 ветки ответов
  • Автор
    Сообщения
    • #34341
      Телеграм группа https://t.me/odineskiOdineski
      Участник

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

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

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

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

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

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

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

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

      Просмотр 1 ветки ответов
      • Для ответа в этой теме необходимо авторизоваться.
      База знаний 1С