Частенько требуется выводить тот или иной уровень сообщений при работе программы или ее отладке. Обычно добавляется реквизит Отладка (булево) и каждый раз, при необходимости, проверяешь ее и делаешь вывод сообщения.
Первый раз мне такая мысль пришла в расширении для Фреша, т.к. есть ошибки проявляющиеся только там (например в БП какое-то время не работали твои ПодпискиНаСобытия). А каждое изменение требует аудита, представь, отправлять повторно на аудит из-за отключения вывода?
// Процедура - Сообщения отладки
//
// Параметры:
// Сообщение - Строка - Текст сообщения
// Отладка - Булево - Истина - выводит все сообщения. Ложь - только ошибки
// Уровень - Число - Числовое определение уровня ошибки
// 0 - INFO - информационные сообщения - значение по-умолчанию
// 1 - DEBUG - сообщения отладки
// 2 - ERROR - сообщения ошибки, выводятся всегда
// Поле - ЭлементФормы, строка - используется, если есть связка сообщения и элемента формы
// ОбъектДанных - Объект - используется для определения объекта, вызвавшего процедуру
//
&НаСервере
Процедура СообщенияОтладки(Сообщение="",Отладка=Неопределено,Уровень=0,Поле="",ОбъектДанных=Неопределено) Экспорт
Если Отладка=Неопределено Тогда
Если РеквизитФормыВЗначение("Объект").метаданные().Реквизиты.Найти("Отладка") Тогда
Отладка=ЭтотОбъект.Отладка;
Иначе
Отладка=Ложь;
КонецЕсли;
КонецЕсли;
Если Отладка ИЛИ Уровень=2 Или Поле="Отладка" Тогда
Если Уровень=1 Тогда
УровеньТекст="INFO";
ИначеЕсли Уровень=2 Тогда
УровеньТекст="ERROR";
Иначе
УровеньТекст="DEBUG";
КонецЕсли;
нСообщение = Новый СообщениеПользователю;
ЗнакТабуляции=Символы.Таб;
нСообщение.Текст = СтрШаблон("%1 %2 %3 %4 %5 %6 %7",ТекущаяДата(),ЗнакТабуляции,УровеньТекст,ЗнакТабуляции,Сообщение,ЗнакТабуляции,Поле);
Если Уровень=2 тогда
нСообщение.Поле = Поле;
КонецЕсли;
Если ОбъектДанных <> Неопределено Тогда
нСообщение.УстановитьДанные(ОбъектДанных);
КонецЕсли;
нСообщение.Сообщить();
КонецЕсли;
КонецПроцедуры
Комментариев нет:
Отправить комментарий