При выполнении на стороне сервера - "В данной транзакции уже происходили ошибки!"
Показывать по
10
20
40
сообщений
- 1
- 2
17.06.2009
13:01
#11
"В вашем примере он падает на строчке в исключении Объект = Ссылка.ПолучитьОбъект();
его в принципе, повторно получать не стОит, либо получать его перед попыткой. Потому как по коду подразумевается, что ошибки при получении объекта не должно быть. Либо в начале отменить транзакцию, а потом уже получать объект повторно, хотя опять же не понятно, зачем.
Тоже погоняла транзакции
Ошибка возникает еще в таком случае (по-моему, это все-таки баг платформы):
НачатьТранзакцию();
Для н=1 По 2 Цикл
Попытка
а=1/0;
Исключение
КонецПопытки;
КонецЦикла;
ЗафиксироватьТранзакцию();
То есть, получается, обрабатываем себе преспокойненько своё ожидаемое исключение, и если попадаем в него второй раз в этой же транзакции - она падает!.. Кстати, как вариант, падает и в случае, если мы внутри транзакции падаем на двух разных исключениях. То есть вариант
НачатьТранзакцию();
Попытка
а=1/0;
Исключение
КонецПопытки;
Попытка
Объект = Ссылка.ПолучитьОбъект();
Объект.Код = "00000008476"; //Заведомо существующий
Объект.Записать();
Исключение
КонецПопытки;
ЗафиксироватьТранзакцию();
тоже сваливается в эту же ошибку. Тогда спрашивается - нафига нам вообще исключения? Ответ - чтобы их обрабатывать и что-то делать дальше. А тут получается, что нам можно свалиться в исключение только один раз внутри транзакции.
Правда, иногда этого не происходит (в реальном, но аналогичном примере у меня транзакция не падает почему-то). Пока не разобралась почему, но есть подозрение, что просто там у нее внутри есть еще какие-то неявные транзакции и дело в них. "
его в принципе, повторно получать не стОит, либо получать его перед попыткой. Потому как по коду подразумевается, что ошибки при получении объекта не должно быть. Либо в начале отменить транзакцию, а потом уже получать объект повторно, хотя опять же не понятно, зачем.
Тоже погоняла транзакции
Ошибка возникает еще в таком случае (по-моему, это все-таки баг платформы):
НачатьТранзакцию();
Для н=1 По 2 Цикл
Попытка
а=1/0;
Исключение
КонецПопытки;
КонецЦикла;
ЗафиксироватьТранзакцию();
То есть, получается, обрабатываем себе преспокойненько своё ожидаемое исключение, и если попадаем в него второй раз в этой же транзакции - она падает!.. Кстати, как вариант, падает и в случае, если мы внутри транзакции падаем на двух разных исключениях. То есть вариант
НачатьТранзакцию();
Попытка
а=1/0;
Исключение
КонецПопытки;
Попытка
Объект = Ссылка.ПолучитьОбъект();
Объект.Код = "00000008476"; //Заведомо существующий
Объект.Записать();
Исключение
КонецПопытки;
ЗафиксироватьТранзакцию();
тоже сваливается в эту же ошибку. Тогда спрашивается - нафига нам вообще исключения? Ответ - чтобы их обрабатывать и что-то делать дальше. А тут получается, что нам можно свалиться в исключение только один раз внутри транзакции.
Правда, иногда этого не происходит (в реальном, но аналогичном примере у меня транзакция не падает почему-то). Пока не разобралась почему, но есть подозрение, что просто там у нее внутри есть еще какие-то неявные транзакции и дело в них. "
17.06.2009
13:26
#12
"Интересно, а какая у вас платформа?
У меня на 1/0 не реагирует, т.е. кусок:
НачатьТранзакцию();
Для н=1 По 2 Цикл
Попытка
а=1/0;
Исключение
КонецПопытки;
КонецЦикла;
ЗафиксироватьТранзакцию();
работает спокойно."
У меня на 1/0 не реагирует, т.е. кусок:
НачатьТранзакцию();
Для н=1 По 2 Цикл
Попытка
а=1/0;
Исключение
КонецПопытки;
КонецЦикла;
ЗафиксироватьТранзакцию();
работает спокойно."
- 1
- 2
Читают тему
(гостей: 1)