ЗаписьЖурнала (БСП)

Автор: 1С
ОбщийМодуль.РассылкаОтчетов
БСП

Запись журнала. Создает запись в журнале регистрации и сообщениях пользователю;

// Создает запись в журнале регистрации и сообщениях пользователю;
//   Поддерживает передачу информации об ошибке.
//
// Параметры:
//   ПараметрыЖурнала - Структура - Параметры записи в журнал регистрации.
//       * ИмяСобытия   - Строка           - Имя события (или группы событий).
//       * Метаданные   - ОбъектМетаданных - Метаданные для привязки события журнала регистрации.
//       * Данные       - Произвольный     - Данные для привязки события журнала регистрации.
//       * МассивОшибок - Массив           - Сообщения пользователю.
//   УровеньЖурнала - УровеньЖурналаРегистрации - Важность сообщения для администратора.
//       Определяется автоматически на основании типа параметра "ОписаниеПроблемы":
//       Когда тип = ИнформацияОбОшибке то Ошибка,
//       когда тип = Строка то Предупреждение,
//       в противном случае Информация.
//   Текст - Строка - Краткое описание проблемы.
//   ОписаниеПроблемы - ИнформацияОбОшибке, Строка - Описание возникшей проблемы, которое добавляется после текста.
//       Пользователю выводится краткое представление ошибки, а в журнал записывается подробное представление ошибки.
//
Процедура ЗаписьЖурнала(ПараметрыЖурнала, Знач УровеньЖурнала = Неопределено, Знач Текст = "", Знач ОписаниеПроблемы = Неопределено) Экспорт
	
	// Определение уровня журнала регистрации на основе типа переданного сообщения об ошибке.
	Если ТипЗнч(УровеньЖурнала) <> Тип("УровеньЖурналаРегистрации") Тогда
		Если ТипЗнч(ОписаниеПроблемы) = Тип("ИнформацияОбОшибке") Тогда
			УровеньЖурнала = УровеньЖурналаРегистрации.Ошибка;
		ИначеЕсли ТипЗнч(ОписаниеПроблемы) = Тип("Строка") Тогда
			УровеньЖурнала = УровеньЖурналаРегистрации.Предупреждение;
		Иначе
			УровеньЖурнала = УровеньЖурналаРегистрации.Информация;
		КонецЕсли;
	КонецЕсли;
	
	ЗаписатьВЖурнал = ЗначениеЗаполнено(ПараметрыЖурнала.Данные);
	
	ТекстДляЖурнала      = Текст;
	ТекстДляПользователя = Текст;
	Если ТипЗнч(ОписаниеПроблемы) = Тип("ИнформацияОбОшибке") Тогда
		ТекстДляЖурнала      = ТекстДляЖурнала      + Символы.ПС + ПодробноеПредставлениеОшибки(ОписаниеПроблемы);
		ТекстДляПользователя = ТекстДляПользователя + Символы.ПС + КраткоеПредставлениеОшибки(ОписаниеПроблемы);
	ИначеЕсли ТипЗнч(ОписаниеПроблемы) = Тип("Строка") Тогда
		ТекстДляЖурнала      = ТекстДляЖурнала      + Символы.ПС + ОписаниеПроблемы;
		ТекстДляПользователя = ТекстДляПользователя + Символы.ПС + ОписаниеПроблемы;
	КонецЕсли;
	ТекстДляЖурнала      = СокрЛП(ТекстДляЖурнала);
	ТекстДляПользователя = СокрЛП(ТекстДляПользователя);
	
	// Журнал регистрации.
	Если ЗаписатьВЖурнал Тогда
		УстановитьПривилегированныйРежим(Истина);
		ЗаписьЖурналаРегистрации(
			ПараметрыЖурнала.ИмяСобытия, 
			УровеньЖурнала, 
			ПараметрыЖурнала.Метаданные, 
			ПараметрыЖурнала.Данные, 
			ТекстДляЖурнала);
		УстановитьПривилегированныйРежим(Ложь);
	КонецЕсли;
	
	// Сообщение пользователю.
	УровеньОшибка = УровеньЖурнала = УровеньЖурналаРегистрации.Ошибка;
	УровеньПредупреждение = Не УровеньОшибка И УровеньЖурнала = УровеньЖурналаРегистрации.Предупреждение;
	Если УровеньОшибка Или УровеньПредупреждение Тогда
		Если УровеньОшибка Тогда
			ПараметрыЖурнала.Вставить("БылиОшибки", Истина);
		Иначе
			ПараметрыЖурнала.Вставить("БылиПредупреждения", Истина);
		КонецЕсли;
		Сообщение = Новый СообщениеПользователю;
		Сообщение.Текст = ТекстДляПользователя;
		Сообщение.УстановитьДанные(ПараметрыЖурнала.Данные);
		Если ПараметрыЖурнала.Свойство("МассивОшибок") Тогда
			ПараметрыЖурнала.МассивОшибок.Добавить(Сообщение);
		Иначе
			Сообщение.Сообщить();
		КонецЕсли;
	КонецЕсли;
	
КонецПроцедуры

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

Рекомендации

Похожие публикации

ЗаписатьВЖурнал (БСП)

Запись в Журнал

ЗаписьЖурналаРегистрацииОбменДанными (БСП)

ЗаписатьИнформациюВЖурналРегистрации (БСП)

ЗаписьТехнологическогоЖурнала (БСП)

ЗаписьЖурналаРегистрацииНачалаОбменаДанными (БСП)

Обновлятор-1С: групповое (пакетное) обновление и обслуживание всех баз за один раз