Попытка
НачатьТранзакцию();
Что то делает вызывая другие процедуры из других модулей (создает, распроводит, проводит, помечает на удаление документы)
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
КонецПопытки;
При этом, если возникает ошибка где то в документах то в исключении не получает текст ошибки и соответственно не знаю из-за чего она произошла (ОписаниеОшибки() пустое)
НачатьТранзакцию();
Попытка
//Выполняем заполнение и проведение документов
...
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
Сообщения = ПолучитьСообщенияПользователю();
Для каждого Сообщение Из Сообщения Цикл
ОбщегоНазначения.СообщитьПользователю(Сообщение.Текст, ДокументСсылка);
КонецЦикла;
ИнфоОбОшибке = ИнформацияОбОшибке();
Описание = КраткоеПредставлениеОшибки(ИнфоОбОшибке);
Если ЗначениеЗаполнено(Описание) Тогда
ОбщегоНазначения.СообщитьПользователю(Описание, ДокументСсылка);
ЗаписьЖурналаРегистрации("СозданиеДокументов.блаблабла", УровеньЖурналаРегистрации.Ошибка, , , ПодробноеПредставлениеОшибки(ИнфоОбОшибке));
КонецЕсли;
КонецПопытки;
Не следует использовать функцию ОписаниеОшибки, т.к. она неинформативна для разработчика, потому что не возвращает стек в тексте ошибки.
https://its.1c.ru/db/v8std/content/499/hdoc
в вашем коде грубейшая ошибка, даже если вы перехватите исключение и получите текст ошибки (не важно каким способом) вы получите "В данной транзакции уже происходили ошибки"
читайте мат часть об использовании транзакций
(4)
в том то и дело, что читал, а вот Вы вроде не очень прочитали мой вопрос
в моей обработке создаются или перепроводятся типовые документы, я в них не могу менять код, и да, если там происходит исключение то я хочу показать его пользователю (что бы он понял, что например период закрыт или что то не хватает и т.д.)
без Попытка Исключение нельзя, так как надо отменить все действия, что были сделаны если хоть одна ошибка произошла
(5) я читал ваш вопрос, в нем нет ни слова что это обработка, и что вы не можете менять код! И я ответил на ваш вопрос, меняйте конструкцию, иначе получите то что я описал в пред комментарии
Прямым текстом: «начать транзакцию» должно быть перед «Попытка»!!! Читайте внимательно СП
(6)
Да было у меня сделано так сначала, это уже потом стал по разному пробовать и это ни как не влияет на отражение ошибки (она просто пустая, даже не пишет что уже была в данной транзакции)
(7) вы данные документов меняете?! Если нет зачем вам транзакция, просто попытка-исключение, если текста ошибок нет (нужно использовать «ИнформацияОбОшибке()»), значит умники использовали «сообщить», тогда используйте «получитьсообщенияпользовптеля()» и выводите их
задача из одного документа сделать несколько других и сформировать движения товара по разным складам собрать все на один и т.д. соответственно если где то прошла ошибка то надо отменить создание документов по которым нет ошибок (это для чего нужна транзакция)
ну а раз ни каких сообщений об ошибках не выходит то до этого "сообщить" не было
пробовал без исключения выходят ошибки типа период закрыт отдельным диалогом
(9)вы вообще понимаете разницу между "сообщить" и "вызвать исключение"? если отдельным диалогом то это вообще на клиенте и никакая попытка-исключение вам не поможет перехватить это, если это сообщения в окне сообщений, то еще раз, получитьсообщенияпользователя это ваш вариант
НачатьТранзакцию();
Попытка
//Выполняем заполнение и проведение документов
...
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
Сообщения = ПолучитьСообщенияПользователю();
Для каждого Сообщение Из Сообщения Цикл
ОбщегоНазначения.СообщитьПользователю(Сообщение.Текст, ДокументСсылка);
КонецЦикла;
ИнфоОбОшибке = ИнформацияОбОшибке();
Описание = КраткоеПредставлениеОшибки(ИнфоОбОшибке);
Если ЗначениеЗаполнено(Описание) Тогда
ОбщегоНазначения.СообщитьПользователю(Описание, ДокументСсылка);
ЗаписьЖурналаРегистрации("СозданиеДокументов.блаблабла", УровеньЖурналаРегистрации.Ошибка, , , ПодробноеПредставлениеОшибки(ИнфоОбОшибке));
КонецЕсли;
КонецПопытки;