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