|
В данной транзакции уже происходили ошибки | ☑ | ||
---|---|---|---|---|
0
EugeniaK
02.06.13
✎
21:06
|
Есть 2 связанных документа.
ПриходныйДокумент по которому формируется ОтчетПроизводстваЗаСмену (ОПЗС) Ссылка на сформированный ОПЗС записывается в ПриходныйДокумент. Необходимо при проведении ПриходногоДокумента дополнительно проводить связанный ОПЗС. Однако в некоторых случаях при проведении ОПЗС происходит ошибка проведения. Т.е. его провести нельзя в связи с недозаполненностью каких-либо данных. При этом оба документа должны остаться непроведенными. Однако в этом случае выскакиеват сообщение "В данной транзакции уже происходили ошибки", которое пугает пользователя. Насколько я понимаю, ошибка связана с тем, что происходит отмена транзакции внутри транзакции. Собственно вопрос, как убрать сообщение об ошибке "В данной транзакции уже происходили ошибки" и заменить на более корректное? |
|||
1
EugeniaK
02.06.13
✎
21:14
|
Ошибка при вызове метода контекста (Записать): В данной транзакции уже происходили ошибки!
|
|||
2
hhhh
02.06.13
✎
21:25
|
(1) наверно при первой ошибке забыли отменить транзакцию
|
|||
3
EugeniaK
02.06.13
✎
21:28
|
(2) Первая ошибка заключается в том, что в ОбработкеПроведения ОПЗС записали Отказ=Истина.
Т.е. ошибка как таковой и не было. При проведении связанного документа не прошли проверки и проведение отменилось. Соответственно и проведение исходного документа должно отмениться. |
|||
4
hhhh
02.06.13
✎
21:31
|
значит были ошибки, раз она говорит. Может это не первая ошибка, а вторая ошибка в цикле повторяется?
|
|||
5
EugeniaK
02.06.13
✎
21:48
|
(4) В проведении документа есть команда вида
ДокументОПЗС.Записать(РежимЗаписи.Проведение) Вот в случае если вложенное проведение не прошло (Отказ = Истина) и возникает ошибка. До этого ошибок никаких нет. Кстати, "Отказ = Истина" это вообще классифицируется как ошибка или как корректная отмена проведения? |
|||
6
ИсчадиеADO
02.06.13
✎
21:53
|
вложенная транзакция с попыткой. Если в попытке срабатывает исключение, то возникает ошибка
|
|||
7
Славен
02.06.13
✎
21:54
|
(6)+100
|
|||
8
Emilio
02.06.13
✎
23:45
|
(0) у мебя часто наблюдал эту ошибку из-за неправильных блокировок.
|
|||
9
Emilio
02.06.13
✎
23:45
|
(8) *себя
|
|||
10
ICWiner
03.06.13
✎
04:36
|
В исключении юзай ИнформацияОбОшибке, посмотри в СП синтаксис.
|
|||
11
Web00001
03.06.13
✎
05:10
|
(5)Что вы понимаете под "корректная отмена проведения"?
Документ либо провелся и сделал движения, либо нет. Ну и как бы да. Если отказ проведения штатная ситуация, просто используй исключение в момент записи и отрабатывай ошибочную ситуацию, как тебе удобно. |
|||
12
EugeniaK
03.06.13
✎
10:39
|
(11) Корректная отмена проведения - при проведении какая-то проверка показала, что проводить нельзя.
Некорректная отмена - произошла исключительная ситуация (блокировка в базе, деление на ноль или что-то еще нестандартное) (10) Попробую |
|||
13
ИсчадиеADO
03.06.13
✎
11:06
|
Женя, нет ли вложенной транзакции? Если есть,то (6)
|
|||
14
EugeniaK
03.06.13
✎
16:48
|
(13) Там получается транзакция, в ней попытка и в этой попытке снова транзакция.
Вынесла проведение связанного документа ОПЗС в процедуру ПередЗаписью() модуля формы. Ничего лучше не придумала. В модуле объекта в любом случае получается транзакция в транзакции. |
|||
15
acsent
03.06.13
✎
16:49
|
попытка Записать() исключение Отказ = Итсина Конец
|
|||
16
acsent
03.06.13
✎
16:50
|
(14) в этом вся фишка то и есть, что в одной транзакции все происходит
|
|||
17
EugeniaK
03.06.13
✎
17:24
|
(15) Так и стояло изначально.
Просто транзакция уже начата, находимся в ОбработкеПроведения. При вызове Записать(Режим.Проведение) открывается вложенная транзакция. И если в команде Записать(Режим.Проведение) проведение неудачно (т.е. внутри Отказ = Истина), то ошибка. "Попытка" не спасает. Все равно "В данной транзакции уже происходили ошибки" |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |