Запись журнала. Создает запись в журнале регистрации и сообщениях пользователю;
// Создает запись в журнале регистрации и сообщениях пользователю;
// Поддерживает передачу информации об ошибке.
//
// Параметры:
// ПараметрыЖурнала - Структура - Параметры записи в журнал регистрации.
// * ИмяСобытия - Строка - Имя события (или группы событий).
// * Метаданные - ОбъектМетаданных - Метаданные для привязки события журнала регистрации.
// * Данные - Произвольный - Данные для привязки события журнала регистрации.
// * МассивОшибок - Массив - Сообщения пользователю.
// УровеньЖурнала - УровеньЖурналаРегистрации - Важность сообщения для администратора.
// Определяется автоматически на основании типа параметра "ОписаниеПроблемы":
// Когда тип = ИнформацияОбОшибке то Ошибка,
// когда тип = Строка то Предупреждение,
// в противном случае Информация.
// Текст - Строка - Краткое описание проблемы.
// ОписаниеПроблемы - ИнформацияОбОшибке, Строка - Описание возникшей проблемы, которое добавляется после текста.
// Пользователю выводится краткое представление ошибки, а в журнал записывается подробное представление ошибки.
//
Процедура ЗаписьЖурнала(ПараметрыЖурнала, Знач УровеньЖурнала = Неопределено, Знач Текст = "", Знач ОписаниеПроблемы = Неопределено) Экспорт
// Определение уровня журнала регистрации на основе типа переданного сообщения об ошибке.
Если ТипЗнч(УровеньЖурнала) <> Тип("УровеньЖурналаРегистрации") Тогда
Если ТипЗнч(ОписаниеПроблемы) = Тип("ИнформацияОбОшибке") Тогда
УровеньЖурнала = УровеньЖурналаРегистрации.Ошибка;
ИначеЕсли ТипЗнч(ОписаниеПроблемы) = Тип("Строка") Тогда
УровеньЖурнала = УровеньЖурналаРегистрации.Предупреждение;
Иначе
УровеньЖурнала = УровеньЖурналаРегистрации.Информация;
КонецЕсли;
КонецЕсли;
ЗаписатьВЖурнал = ЗначениеЗаполнено(ПараметрыЖурнала.Данные);
ТекстДляЖурнала = Текст;
ТекстДляПользователя = Текст;
Если ТипЗнч(ОписаниеПроблемы) = Тип("ИнформацияОбОшибке") Тогда
ТекстДляЖурнала = ТекстДляЖурнала + Символы.ПС + ПодробноеПредставлениеОшибки(ОписаниеПроблемы);
ТекстДляПользователя = ТекстДляПользователя + Символы.ПС + КраткоеПредставлениеОшибки(ОписаниеПроблемы);
ИначеЕсли ТипЗнч(ОписаниеПроблемы) = Тип("Строка") Тогда
ТекстДляЖурнала = ТекстДляЖурнала + Символы.ПС + ОписаниеПроблемы;
ТекстДляПользователя = ТекстДляПользователя + Символы.ПС + ОписаниеПроблемы;
КонецЕсли;
ТекстДляЖурнала = СокрЛП(ТекстДляЖурнала);
ТекстДляПользователя = СокрЛП(ТекстДляПользователя);
// Журнал регистрации.
Если ЗаписатьВЖурнал Тогда
УстановитьПривилегированныйРежим(Истина);
ЗаписьЖурналаРегистрации(
ПараметрыЖурнала.ИмяСобытия,
УровеньЖурнала,
ПараметрыЖурнала.Метаданные,
ПараметрыЖурнала.Данные,
ТекстДляЖурнала);
УстановитьПривилегированныйРежим(Ложь);
КонецЕсли;
// Сообщение пользователю.
УровеньОшибка = УровеньЖурнала = УровеньЖурналаРегистрации.Ошибка;
УровеньПредупреждение = Не УровеньОшибка И УровеньЖурнала = УровеньЖурналаРегистрации.Предупреждение;
Если УровеньОшибка Или УровеньПредупреждение Тогда
Если УровеньОшибка Тогда
ПараметрыЖурнала.Вставить("БылиОшибки", Истина);
Иначе
ПараметрыЖурнала.Вставить("БылиПредупреждения", Истина);
КонецЕсли;
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = ТекстДляПользователя;
Сообщение.УстановитьДанные(ПараметрыЖурнала.Данные);
Если ПараметрыЖурнала.Свойство("МассивОшибок") Тогда
ПараметрыЖурнала.МассивОшибок.Добавить(Сообщение);
Иначе
Сообщение.Сообщить();
КонецЕсли;
КонецЕсли;
КонецПроцедуры
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////
ЗаписьЖурналаРегистрацииОбменДанными (БСП)
ЗаписатьИнформациюВЖурналРегистрации (БСП)
Канал FastCode 1C в Телеграм! Шаблоны кода, статьи, полезные советы, курсы по 1С (8К участников)