|
v7: Чего нельзя делать внутри транзакции? | ☑ | ||
---|---|---|---|---|
0
ado
12.08.11
✎
12:55
|
Господа, напомните сабж, плиз.
Валится опработка с ошибкой "Ошибка при выполнении процедуры ЗафиксироватьТранзакцию", никак не могу найти, в чем косяк. |
|||
1
Kreont
12.08.11
✎
12:56
|
(0) Снять НачалоТранзакции и ошибка покажется там где реально что-то не так
|
|||
2
Попытка1С
12.08.11
✎
12:57
|
Попытку?
|
|||
3
Попытка1С
12.08.11
✎
12:58
|
Хотя не..
|
|||
4
Sserj
12.08.11
✎
12:58
|
Так надо искать что не так сделалось, типа проводился документ и не провелся.
|
|||
5
Sserj
12.08.11
✎
13:00
|
Тобишь обычно лучше делать так:
ТранзакцияУспешна = 1; НачатьТранзакцию(); ... Попытка ЧтонибутьПровести ИлиЧтонибутьЗаписать Исключение ТранзакцияУспешна = 0; КонецПопытки Если ТранзакцияУспешна = 1 Тогда ЗафиксироватьТранзакцию(); Иначе ОтменитьТранзакцию(); КонецЕсли; |
|||
6
ildary
12.08.11
✎
13:09
|
(5) еще лучше после строки Исключение вставить
Предупреждение( "Ошибка при записи/проведении:" + ОписаниеОшибки(), 120 ); |
|||
7
ЧеловекДуши
12.08.11
✎
13:09
|
Лучше так
ТранзакцияУспешна = 1; Попытка НачатьТранзакцию(); Исключение // Обломись, не могу заблокировать таблицы БД Возврат КонецПопытки ... Попытка ЧтонибутьПровести ИлиЧтонибутьЗаписать Исключение ТранзакцияУспешна = 0; КонецПопытки Если ТранзакцияУспешна = 1 Тогда ЗафиксироватьТранзакцию(); Иначе Попытка ОтменитьТранзакцию(); Исключение //Что - то не так :) КонецПопытки КонецЕсли; |
|||
8
Кириллка
12.08.11
✎
13:09
|
(0)можно делать все, но некоторые действия будут влиять на успешность завершения транзакции.
|
|||
9
ado
12.08.11
✎
13:47
|
(5) Хмммм ...
|
|||
10
Кириллка
12.08.11
✎
13:51
|
(5)после
ЧтонибутьПровести ИлиЧтонибутьЗаписать уже транзакция откатилась и нет смысла ее отменять. |
|||
11
andrewks
12.08.11
✎
15:35
|
(0) СтатусВозврата(0);
|
|||
12
Torquader
12.08.11
✎
23:19
|
У меня такое было, когда BeginTransaction() написал один раз, а CommitTransaction() - два раза.
И долго-долго чесал репу, пока не посчитал. |
|||
13
Aleksey
12.08.11
✎
23:53
|
На ноль делить нельзя внутри транзакции
|
|||
14
Torquader
13.08.11
✎
00:03
|
(13) Ошибки времени исполнения от транзакции не зависят и выводятся сразу, а транзакция при этом автоматически откатывается - причём в сообщении об ошибке о транзакции ни слова не будет.
|
|||
15
ado
15.08.11
✎
09:00
|
(12) Та не, посчитал, всё верно, вроде ...
|
|||
16
ado
15.08.11
✎
18:20
|
Аааа, вот она, скотина. Во глубине процедур, вызываемых внутри транзакции был такой код:
И вот когда срабатывало исключение ... Щас найду коллегу, который это написал, и скажу ему разные нехорошие слова. |
|||
17
andrewks
15.08.11
✎
18:21
|
(16) зачётно )
|
|||
18
andrewks
15.08.11
✎
18:21
|
+(17) напомнило:
"по колёсам стучал? ну, тогда не знаю..." |
|||
19
ado
15.08.11
✎
18:25
|
В который раз убеждаюсь, что исключения -- зло.
|
|||
20
andrewks
15.08.11
✎
18:27
|
(19) та не, просто надо уметь их готовить.
тут дело-то не в исключении, а в гКоде |
|||
21
ado
15.08.11
✎
18:34
|
(20) Точнее зло -- затыкать исключениями то, что можно обычной проверкой проверить.
Впрочем, такая проверка, как в (16) говорит о несколько бОльших проблемах в консерватории, но это уже другая тема. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |