Транзакция и ОписаниеОшибки

1. eda76 21.12.23 13:16 Сейчас в теме
Попытка
НачатьТранзакцию();
    Что то делает вызывая другие процедуры из других модулей (создает, распроводит, проводит, помечает на удаление документы)
    ЗафиксироватьТранзакцию();
Исключение
    ОтменитьТранзакцию();
КонецПопытки;


При этом, если возникает ошибка где то в документах то в исключении не получает текст ошибки и соответственно не знаю из-за чего она произошла (ОписаниеОшибки() пустое)
По теме из базы знаний
Найденные решения
11. Ditron 185 22.12.23 13:15 Сейчас в теме
что непонятно то:
НачатьТранзакцию();
Попытка
   //Выполняем заполнение и проведение документов
   ...
   ЗафиксироватьТранзакцию();
Исключение
   ОтменитьТранзакцию();
   Сообщения = ПолучитьСообщенияПользователю();
   Для каждого Сообщение Из Сообщения Цикл
      ОбщегоНазначения.СообщитьПользователю(Сообщение.Текст, ДокументСсылка);
   КонецЦикла;
   ИнфоОбОшибке = ИнформацияОбОшибке();
   Описание = КраткоеПредставлениеОшибки(ИнфоОбОшибке);
   Если ЗначениеЗаполнено(Описание) Тогда
      ОбщегоНазначения.СообщитьПользователю(Описание, ДокументСсылка);
      ЗаписьЖурналаРегистрации("СозданиеДокументов.блаблабла", УровеньЖурналаРегистрации.Ошибка, , , ПодробноеПредставлениеОшибки(ИнфоОбОшибке));
   КонецЕсли;
КонецПопытки;
Показать
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. Sashares 34 21.12.23 17:43 Сейчас в теме
(1)У вас в коде нет ОписаниеОшибки().
Добавьте его в код, будет не пустое.
2. JinAir7460 21.12.23 17:12 Сейчас в теме
Не следует использовать функцию ОписаниеОшибки, т.к. она неинформативна для разработчика, потому что не возвращает стек в тексте ошибки.
https://its.1c.ru/db/v8std/content/499/hdoc
Прикрепленные файлы:
4. Ditron 185 21.12.23 19:31 Сейчас в теме
в вашем коде грубейшая ошибка, даже если вы перехватите исключение и получите текст ошибки (не важно каким способом) вы получите "В данной транзакции уже происходили ошибки"
читайте мат часть об использовании транзакций
5. eda76 22.12.23 08:25 Сейчас в теме
(4)
в том то и дело, что читал, а вот Вы вроде не очень прочитали мой вопрос
в моей обработке создаются или перепроводятся типовые документы, я в них не могу менять код, и да, если там происходит исключение то я хочу показать его пользователю (что бы он понял, что например период закрыт или что то не хватает и т.д.)
без Попытка Исключение нельзя, так как надо отменить все действия, что были сделаны если хоть одна ошибка произошла
6. Ditron 185 22.12.23 08:46 Сейчас в теме
(5) я читал ваш вопрос, в нем нет ни слова что это обработка, и что вы не можете менять код! И я ответил на ваш вопрос, меняйте конструкцию, иначе получите то что я описал в пред комментарии
Прямым текстом: «начать транзакцию» должно быть перед «Попытка»!!! Читайте внимательно СП
7. eda76 22.12.23 10:14 Сейчас в теме
(6)
Да было у меня сделано так сначала, это уже потом стал по разному пробовать и это ни как не влияет на отражение ошибки (она просто пустая, даже не пишет что уже была в данной транзакции)
8. Ditron 185 22.12.23 10:50 Сейчас в теме
(7) вы данные документов меняете?! Если нет зачем вам транзакция, просто попытка-исключение, если текста ошибок нет (нужно использовать «ИнформацияОбОшибке()»), значит умники использовали «сообщить», тогда используйте «получитьсообщенияпользовптеля()» и выводите их
9. eda76 22.12.23 11:37 Сейчас в теме
задача из одного документа сделать несколько других и сформировать движения товара по разным складам собрать все на один и т.д. соответственно если где то прошла ошибка то надо отменить создание документов по которым нет ошибок (это для чего нужна транзакция)
ну а раз ни каких сообщений об ошибках не выходит то до этого "сообщить" не было
пробовал без исключения выходят ошибки типа период закрыт отдельным диалогом
10. Ditron 185 22.12.23 13:03 Сейчас в теме
(9)вы вообще понимаете разницу между "сообщить" и "вызвать исключение"? если отдельным диалогом то это вообще на клиенте и никакая попытка-исключение вам не поможет перехватить это, если это сообщения в окне сообщений, то еще раз, получитьсообщенияпользователя это ваш вариант
11. Ditron 185 22.12.23 13:15 Сейчас в теме
что непонятно то:
НачатьТранзакцию();
Попытка
   //Выполняем заполнение и проведение документов
   ...
   ЗафиксироватьТранзакцию();
Исключение
   ОтменитьТранзакцию();
   Сообщения = ПолучитьСообщенияПользователю();
   Для каждого Сообщение Из Сообщения Цикл
      ОбщегоНазначения.СообщитьПользователю(Сообщение.Текст, ДокументСсылка);
   КонецЦикла;
   ИнфоОбОшибке = ИнформацияОбОшибке();
   Описание = КраткоеПредставлениеОшибки(ИнфоОбОшибке);
   Если ЗначениеЗаполнено(Описание) Тогда
      ОбщегоНазначения.СообщитьПользователю(Описание, ДокументСсылка);
      ЗаписьЖурналаРегистрации("СозданиеДокументов.блаблабла", УровеньЖурналаРегистрации.Ошибка, , , ПодробноеПредставлениеОшибки(ИнфоОбОшибке));
   КонецЕсли;
КонецПопытки;
Показать
12. eda76 25.12.23 10:19 Сейчас в теме
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот