|
Как отказаться от продедения документа и не вызвать исключение |
☑ |
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) убрал транзакцию в выполнении транзакции
Процедура ВыполнитьЗадачи(РезультатСогласования)
ЗадачаОбъект.ВыполнитьЗадачу();
КонецПроцедуры // ВыполнитьЗадачи()
но всё равно не получилось отработать точку обработки. В момент, когда возникает исключение при проведении отменяется выполнение задачи.
Т.е. реализовать мою задумку не получается. И в случае косяка ошибка вывалится пользователю который пытается выполнить задачу а не админу.
|
|