1С 8.3 Добавление контекста к сообщению об ошибке в ЖР
Данные > Примеры кода 1С > 1С 8.3 Журнал регистрации
Перейти в раздел примеры кода 1С 8.3:
Шаблон можно временно вставлять в расширение (в режиме "вместо"), если отладка не доступна, а подробности падения узнать хочется.
Добавление контекста к сообщению об ошибке в журнал регистрации в 1С 8.3 (от пользователя Ndосhр):
&НаСервере
Процедура ДобавлениеКонтекстаКСообщениюОбОшибкевЖР(Выборка)
Попытка
Исключение
КонтекстПоля = Новый Массив;
// {+} Замена на свои поля
КонтекстПоля.Добавить("Ссылка");
КонтекстПоля.Добавить("Наименование");
ШаблонСтр = Новый Массив;
Для Каждого Строка Из КонтекстПоля Цикл
ШаблонСтр.Добавить(СтрШаблон("%1 = ", Строка));
КонецЦикла;
СтрокаШаблона = СтрСоединить(ШаблонСтр);
ПараметрыСтр = Новый Структура;
Для Каждого СтрКонт Из КонтекстПоля Цикл
ПараметрыСтр.Вставить(СтрКонт);
КонецЦикла;
// Если у вас хитрее - заменить получение контекста на более сложное
// Если стразу структура - можно не создавать, но если выборка, строка ТЗ и тд, то нужно
// преобразовать в струкутуру, так как внутри будет перебор свойств циклом.
ЗаполнитьЗначенияСвойств(ПараметрыСтр, Выборка);
// изменить заполнение вспомогательных полей на то, что нужно
ЖурналРегистрации.ДобавитьСообщениеДляЖурналаРегистрации(
"Отлаживаемая ошибка", УровеньЖурналаРегистрации.Ошибка,,,
СтроковыеФункцииКлиентСервер.ВставитьПараметрыВСтроку(СтрокаШаблона, ПараметрыСтр));
ВызватьИсключение; // мы не обрабатываем исключение, только обогащаем контекстом в ЖР перед падением
КонецПопытки;
КонецПроцедуры
Процедура ДобавлениеКонтекстаКСообщениюОбОшибкевЖР(Выборка)
Попытка
Исключение
КонтекстПоля = Новый Массив;
// {+} Замена на свои поля
КонтекстПоля.Добавить("Ссылка");
КонтекстПоля.Добавить("Наименование");
КонтекстПоля.Добавить("Код");
// {-} Замена на свои поля ШаблонСтр = Новый Массив;
Для Каждого Строка Из КонтекстПоля Цикл
ШаблонСтр.Добавить(СтрШаблон("%1 = ", Строка));
КонецЦикла;
СтрокаШаблона = СтрСоединить(ШаблонСтр);
ПараметрыСтр = Новый Структура;
Для Каждого СтрКонт Из КонтекстПоля Цикл
ПараметрыСтр.Вставить(СтрКонт);
КонецЦикла;
// Если у вас хитрее - заменить получение контекста на более сложное
// Если стразу структура - можно не создавать, но если выборка, строка ТЗ и тд, то нужно
// преобразовать в струкутуру, так как внутри будет перебор свойств циклом.
ЗаполнитьЗначенияСвойств(ПараметрыСтр, Выборка);
// изменить заполнение вспомогательных полей на то, что нужно
ЖурналРегистрации.ДобавитьСообщениеДляЖурналаРегистрации(
"Отлаживаемая ошибка", УровеньЖурналаРегистрации.Ошибка,,,
СтроковыеФункцииКлиентСервер.ВставитьПараметрыВСтроку(СтрокаШаблона, ПараметрыСтр));
ВызватьИсключение; // мы не обрабатываем исключение, только обогащаем контекстом в ЖР перед падением
КонецПопытки;
КонецПроцедуры
0
комментарии
____________________
Перепечатка текста и фотографий разрешена при наличии прямой ссылки на источник