Журнал регистраций 1С. Альтернатива
В этой статье расскажу про свой регистр сведений, который служит для логирования событий. Свой регистр сведений может потребоваться для логирования обменов и алгоритмов, логирования ошибок с дальнейшей рассылкой, а также для каких-то своих нужд. Например, мне такой регистр понадобился, когда потребовалось отследить проблемное место в алгоритме. Проблема возникала редко, поймать ее отладкой не удавалось.
Структура простая:
Событие – может быть справочник или перечисление, некий идентификатор для отбора отдельных алгоритмов.
Объект – ссылка на объект или любой идентификатор для отбора отдельного объекта.
Описание – текстовое поле. То, что произошло в этом событии.
Ошибка – флаг ошибки.
ОписаниеОшибки – описание ошибки, если установлен флаг Ошибка.
Комментарий – поле для комментария.
В модуле менеджера Регистра сведений процедура новой записи:
Процедура ДобавитьЗапись(Событие, Объект, Описание, Ошибка = Ложь, ОписаниеОшибки = "") Экспорт
НоваяЗапись = РегистрыСведений.СвойЖурналРегистрации.СоздатьМенеджерЗаписи();
НоваяЗапись.Период = ТекущаяДата();
НоваяЗапись.Событие = Событие;
НоваяЗапись.Объект = Объект;
НоваяЗапись.Описание = Описание;
НоваяЗапись.Ошибка = Ошибка;
НоваяЗапись.ОписаниеОшибки = ОписаниеОшибки;
НоваяЗапись.Записать();
КонецПроцедуры
Далее вставляем запись комментария в нужные места своего кода. Примеры:
Процедура ВыполнениеАлгоритма1(ИдОбъекта)
РегистрыСведений.СвойЖурналРегистрации.ДобавитьЗапись(Перечисления.СобытиеЖурнала.Алгоритм1, ИдОбъекта, "Начало");
ПервоеДействиеАлгоритма(ИдОбъекта);
РегистрыСведений.СвойЖурналРегистрации.ДобавитьЗапись(Перечисления.СобытиеЖурнала.Алгоритм1, ИдОбъекта, "Выполнено 1 действие");
ВтороеДействиеАлгоритма(ИдОбъекта);
РегистрыСведений.СвойЖурналРегистрации.ДобавитьЗапись(Перечисления.СобытиеЖурнала.Алгоритм1, ИдОбъекта, "Выполнено 2 действие");
ТретьеДействиеАлгоритма(ИдОбъекта);
РегистрыСведений.СвойЖурналРегистрации.ДобавитьЗапись(Перечисления.СобытиеЖурнала.Алгоритм1, ИдОбъекта, "Конец");
КонецПроцедуры
Процедура ВыполнениеАлгоритма2(ИдОбъекта)
РегистрыСведений.СвойЖурналРегистрации.ДобавитьЗапись(Перечисления.СобытиеЖурнала.Алгоритм2, ИдОбъекта, "Начало");
Результат = ДействиеАлгоритма2(ИдОбъекта);
Если Результат.Выполнен Тогда
РегистрыСведений.СвойЖурналРегистрации.ДобавитьЗапись(Перечисления.СобытиеЖурнала.Алгоритм2, ИдОбъекта, "Выполнено действие");
Иначе
РегистрыСведений.СвойЖурналРегистрации.ДобавитьЗапись(Перечисления.СобытиеЖурнала.Алгоритм2, ИдОбъекта, "Выполнено действие", Истина, Результат.ОписаниеОшибки);
КонецЕсли;
РегистрыСведений.СвойЖурналРегистрации.ДобавитьЗапись(Перечисления.СобытиеЖурнала.Алгоритм2, ИдОбъекта, "Конец");
КонецПроцедуры
Процедура ВыполнениеОбмена(ИдОбъекта)
РегистрыСведений.СвойЖурналРегистрации.ДобавитьЗапись(Перечисления.СобытиеЖурнала.ОбменСБазой1, ИдОбъекта, "Начало");
Попытка
ВыполнениеОбмена(ИдОбъекта);
РегистрыСведений.СвойЖурналРегистрации.ДобавитьЗапись(Перечисления.СобытиеЖурнала.ОбменСБазой1, ИдОбъекта, "Обмен " + ИдОбъекта);
Исключение
ТекстОшибки = ОписаниеОшибки();
РегистрыСведений.СвойЖурналРегистрации.ДобавитьЗапись(Перечисления.СобытиеЖурнала.ОбменСБазой1, ИдОбъекта, "Обмен " + ИдОбъекта, Истина, ТекстОшибки);
КонецПопытки;
РегистрыСведений.СвойЖурналРегистрации.ДобавитьЗапись(Перечисления.СобытиеЖурнала.ОбменСБазой1, ИдОбъекта, "Конец");
КонецПроцедуры
Преимущества:
- логирование только нужных событий, а не все подряд,
- можно изменить структуру под себя,
- можно строить отчеты по ошибкам и рассылать их на почту,
- можно быстро организовать архивирование и очистку старых записей регистра.
Недостатки: нужно дорабатывать конфигурацию.
Используйте этот полезный инструмент в решении своих задач, делитесь в комментариях своими решениями.
Comments
So empty here ... leave a comment!