Имя: Пароль:
1C
1С v8
Как отказаться от продедения документа и не вызвать исключение
0 gusden
 
22.10.12
13:53
Всем, доброго времени суток. Подскажите как решить проблему.
Есть бизнес-процесс и выполнение одной из задач реализовано в транзакции:
Процедура ВыполнитьЗадачи(РезультатСогласования)

   НачатьТранзакцию();
   Попытка
       ЗадачаОбъект.ВыполнитьЗадачу();
       
       ЗафиксироватьТранзакцию();
   Исключение
       ОтменитьТранзакцию();
   КонецПопытки;
КонецПроцедуры // ВыполнитьЗадачи()

После выполнения задачи по карте бизнес процесса попадаю в точку обработки, внутри которой должен создастся документ и при возможности провести его. Если проведение не возможно, то нужно просто записать его и пойти по бизнес процессу дальше.
Процедура ПоменятьПодразделениеНаСкладеОбработка(ТочкаМаршрутаБизнесПроцесса)
Документы.ПеремещениеТМЦ.СоздатьДокумент();
...        
       Попытка
           ДокПеремещение.Записать(РежимЗаписиДокумента.Проведение);
       Исключение
           ДокПеремещение.Записать(РежимЗаписиДокумента.Запись);
       КонецПопытки;
       КонецПроцедуры
Но попытка проведения вызывает исключение, которое полностью отменяет транзакцию по выполнению задачи.
Единственное что пока приходит в голову, убрать транзакцию при выполнении задачи, но тогда могут возникнуть другие ошибки, которые я возможно не предусмотрел.
Что посоветуете?
1 DrShad
 
22.10.12
13:55
[Единственное что пока приходит в голову, убрать транзакцию при выполнении задачи, ] как!?
и не проще ли сделать все чтоб документ проводился нормально?
2 gusden
 
22.10.12
14:05
(1) вот так:
Процедура ВыполнитьЗадачи(РезультатСогласования)
       ЗадачаОбъект.ВыполнитьЗадачу();
КонецПроцедуры // ВыполнитьЗадачи()
(1) После выполнения задачи должен сформироваться некий пакет документов и провестись. В идеале всё будет проходить без проблем. НО если вдруг возникнет некая проблема, то хочется чтобы документы записались и для пользователя задача закрылась, а вот для администратора возникла задача что есть косяк и чтобы уже администратор разбирался в ошибке. Зачем пользователю дурить голову, что что-то там не так?
3 gusden
 
22.10.12
15:50
UP
4 gusden
 
22.10.12
17:55
(2) убрал транзакцию в выполнении транзакции
Процедура ВыполнитьЗадачи(РезультатСогласования)
  ЗадачаОбъект.ВыполнитьЗадачу();
КонецПроцедуры // ВыполнитьЗадачи()
но всё равно не получилось отработать точку обработки. В момент, когда возникает исключение при проведении отменяется выполнение задачи.
Т.е. реализовать мою задумку не получается. И в случае косяка ошибка вывалится пользователю который пытается выполнить задачу а не админу.