BSL262 — Неверное использование метода "ЗаписьЖурналаРегистрации"¶
Кратко¶
Неверное использование метода "ЗаписьЖурналаРегистрации"
Идентификаторы¶
| Поле | Значение |
|---|---|
| Код правила | BSL262 |
| Совместимый псевдоним | UsageWriteLogEvent |
| Серьёзность | INFORMATION |
| Включено по умолчанию | Да |
| Реализовано | Да |
| Теги | standard, badpractice |
Поведение¶
- Публичный идентификатор
BSL262и псевдонимUsageWriteLogEventстабильны. - Правило сообщает о случаях, описанных на этой странице.
- Подавления и проектная конфигурация применяются до публикации результата.
- Для выполнения правила не требуется внешний анализатор или сетевой доступ.
Настройка и подавление¶
Код BSL### — основной стабильный идентификатор. Совместимый псевдоним
принимается в select, ignore и совместимых блоковых комментариях.
Все три семейства подавлений работают для текущей строки и диапазона. Если открывающий комментарий стоит после кода, он действует только на эту строку. Используйте любой один вариант:
noqa:
bsl-disable(совместимый вариант):
- совместимый
BSLLS-вариант:
Если тот же открывающий комментарий стоит на отдельной строке, он начинает диапазон. Закройте его парным маркером того же семейства:
// noqa: BSL262
// код без этой диагностики
// noqa-enable: BSL262
// bsl-disable: BSL262
// код без этой диагностики
// bsl-enable: BSL262
// BSLLS:UsageWriteLogEvent-off
// код без этой диагностики
// BSLLS:UsageWriteLogEvent-on
Чтобы отключить правило до конца файла, не добавляйте закрывающий
noqa-enable, bsl-enable или BSLLS:…-on.
Открывающий и закрывающий маркеры должны принадлежать одному семейству.
Описание диагностики¶
Важно правильно с определенной дотошностью указывать основные параметры при записи в Журнал регистрации.
Недопустимо прятать исключения.
При обработке исключений обязательно нужно выполнять запись в журнал регистрации с полным представлением ошибки.
Для этого нужно добавить в комментарий события результат ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())
Нельзя пропускать 2й параметр Уровень журнала регистрации. Если его не указать, по умолчанию 1С применит уровень ошибки Информация, и данная запись может потеряться в потоке записей.
Нельзя пропускать и 5й параметр - комментарий к событию записи в журнал регистрации.
Примеры¶
Примеры неверного кода
ЗаписьЖурналаРегистрации("Событие");// ошибка
ЗаписьЖурналаРегистрации("Событие", УровеньЖурналаРегистрации.Ошибка);// ошибка
ЗаписьЖурналаРегистрации("Событие", УровеньЖурналаРегистрации.Ошибка, , );// ошибка
ЗаписьЖурналаРегистрации("Событие", , , , ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
ЗаписьЖурналаРегистрации("Событие", УровеньЖурналаРегистрации.Ошибка, , , );// ошибка
Попытка
КодСервер();
Исключение
ЗаписьЖурналаРегистрации("Событие", УровеньЖурналаРегистрации.Ошибка, , ,
ОписаниеОшибки()); // ошибка
ЗаписьЖурналаРегистрации("Событие", УровеньЖурналаРегистрации.Ошибка, , ,
"Комментарий 1"); // ошибка
КонецПопытки;
Правильный код
Попытка
КодСервер();
Исключение
ТекстОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
ЗаписьЖурналаРегистрации(НСтр("ru = 'Выполнение операции'"), УровеньЖурналаРегистрации.Ошибка, , ,
ТекстОшибки);
КонецПопытки;
Попытка
КодСервер();
Исключение
ТекстОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
ЗаписьЖурналаРегистрации(НСтр("ru = 'Выполнение операции'"), УровеньЖурналаРегистрации.Ошибка, , ,
ТекстОшибки);
ВызватьИсключение;
КонецПопытки;
Процедура ЗагрузитьДанные() Экспорт
Попытка
ВыполнитьЗаписьДанных();
Исключение
ЗаписьЖурналаРегистрации(); // <- исключение подавляется с записью в ЖР
КонецПопытки;
КонецПроцедуры
Процедура ВыполнитьЗаписьДанных()
НачатьТранзакцию();
Попытка
// ...
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
ВызватьИсключение; // <- вложенная попытка, запись в ЖР не требуется
КонецПопытки;
КонецПроцедуры