Запись в регистр сведений при исключении
Доброго времени суток, в ходе выполнения задачи, возникли вопросы, ответы на которые я не смог найти. В общем виде, задача в следующем - при попытке записать документ, нужно отлавливать ошибки и информацию о них. Далее на основе этих данных делать запись в регистр сведений. По заданию, делать это нужно в Модуле объекта документа, который пытаются записать, в процедуре ПередЗаписью.
Структура следующая:
В коде намеренно вызывается исключение, что бы проверить идет ли запись в регистр. Данные подтягиваются правильно. Запись происходит, но после проверки, регистр всегда пустой. Блок с созданием записи в регистр точно рабочий, и при этом если его вызывать до создания исключения (любой ошибки), то запись будет. Объясните, почему при возникновении ошибки, запись затирается и как решить эту проблему?
Структура следующая:
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
Попытка
// Код, который может вызвать ошибку
Исключение
МенеджерЗаписи=РегистрыСведений.РегистрОшибок.СоздатьМенеджерЗаписи();
МенеджерЗаписи.НазваниеДокумента = Метаданные().Имя;
МенеджерЗаписи.Форма = ЭтотОбъект.Метаданные().ОсновнаяФормаОбъекта.Имя;
МенеджерЗаписи.Пользователь = ПолноеИмяПользователя();
МенеджерЗаписи.Комментарий = ОписаниеОшибки();
МенеджерЗаписи.ДатаОшибки = ТекущаяДата();
МенеджерЗаписи.Период = ТекущаяДата();
МенеджерЗаписи.Записать();
КонецПопытки;
КонецПроцедуры
ПоказатьВ коде намеренно вызывается исключение, что бы проверить идет ли запись в регистр. Данные подтягиваются правильно. Запись происходит, но после проверки, регистр всегда пустой. Блок с созданием записи в регистр точно рабочий, и при этом если его вызывать до создания исключения (любой ошибки), то запись будет. Объясните, почему при возникновении ошибки, запись затирается и как решить эту проблему?
По теме из базы знаний
- Версионирование справочников, документов и регистров сведений на SQL-сервере
- Отправка и получение почтовых сообщений
- Что? Где? Когда? Играем по-взрослому: оптимизация обменов в 1С
- Массовое изменение записей регистров сведений и накопления (слияние, обновление, удаление)
- Исправление дублей в регистре «Реестр документов»
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
ОшибкаОбработки = Ложь;
Попытка
X = 1/0;
Исключение
ОшибкаОбработки = Истина;
КонецПопытки;
Если ОшибкаОбработки Тогда
ЗаписьВРегистр();
КонецЕсли;
КонецПроцедуры
Процедура ЗаписьВРегистр()
МенеджерЗаписи=РегистрыСведений.РегистрОшибок.СоздатьМенеджерЗаписи();
МенеджерЗаписи.НазваниеДокумента = Метаданные().Имя;
МенеджерЗаписи.Форма = ЭтотОбъект.Метаданные().ОсновнаяФормаОбъекта.Имя;
МенеджерЗаписи.Пользователь = ПолноеИмяПользователя();
МенеджерЗаписи.Комментарий = ОписаниеОшибки();
МенеджерЗаписи.ДатаОшибки = ТекущаяДата();
МенеджерЗаписи.Период = ТекущаяДата();
МенеджерЗаписи.Записать();
КонецПроцедуры
Показать
(4) Вынос записи в регистр в отдельную процедуру, не помогает. Если у нас случается ошибка (исключение), то куда бы не уходили в процедуры или вообще в другой модуль через экспортную процедуру, не будут сохранены записи в регистр
(18) Если прям очень надо именно вот так, то можно через свой же собственный веб-сервис писать в регистр. Публикуете в своей базе http-сервис и вызываете его, а он пишет в регистр. А если баз много, то можно и отдельную базу для такого завести, вы ведь ссылки на данные не используете.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот
