|
Как может быть ошибка "Транзакция не активна", если ТранзакцияАктивна() = истина ↓ (Волшебник 05.02.2025 10:51)
Волшебник, Галахад, eddy_n, Vbirf, Мыхалыч, СвинТуз, segn, alexela, Kabz, Crusher, Hawk_1c, nick86, El_Duke, Александр111, maxab72, boev82, Ager, SleepyHead, kir-g, RomaH, Stepashkin, elka302, Скучный бух, Ненавижу 1С, DiMel_77, ewg, toypaul, mikecool, saaken, DemonShinji2, Max57, rbcvg, ИС-2, lxndr, youalex
| ☑ |
0
ИС-2
naïve
03.02.25
✎
13:59
|
Есть простой кусок кода
Если ТранзакцияАктивна() Тогда
ЗафиксироватьТранзакцию();
КонецЕсли;
Как получается, что метод ТранзакцияАктивна() вернул истина, но на ЗафиксироватьТранзакцию() вылетает с ошибкой.
Подозрение на неявную транзакцию где-то в коде...
|
|
1
Волшебник
03.02.25
✎
14:03
|
чудес не бывает
|
|
2
youalex
03.02.25
✎
14:07
|
неявная (необъявленная) транзакция например при записи объекта возникает.
|
|
3
Волшебник
03.02.25
✎
14:09
|
вангую: ошибка вылетает на другой строке
|
|
4
Eiffil123
03.02.25
✎
16:58
|
транзакция объявлена во внешней процедуре, например. зафиксировать ее не получится. Начало транзакции и ее фиксация (отмена) должны происходить в контексте одного метода
|
|
5
BaZZiL
03.02.25
✎
17:40
|
Не все транзакции одинаково активны.
|
|
6
TormozIT
03.02.25
✎
17:51
|
|
|
7
mikecool
03.02.25
✎
21:06
|
(6) плюсанул, оказывается я это могу ))
|
|
8
Eiffil123
04.02.25
✎
16:01
|
(6) официальная документация 1С:
https://its.1c.ru/db/v8std/content/783/hdoc
1.2. Начало транзакции и ее фиксация (отмена) должны происходить в контексте одного метода
|
|
9
Волшебник
04.02.25
✎
16:04
|
(8) вложенные вызовы всё ещё находятся в контексте внешнего
|
|
10
DiMel_77
04.02.25
✎
16:35
|
(8) Плевать они хотели на свои стандарты:
|
|
11
Волшебник
04.02.25
✎
16:36
|
(10) да, неочевидненько
|
|
12
TormozIT
04.02.25
✎
17:55
|
(8) Так это рекомендация, а не требование среды выполнения. Поэтому по-другому тоже "получится", но делать так без веской причины не рекомендуется. В статье (6) тоже есть такая рекомендация.
|
|
13
Ненавижу 1С
05.02.25
✎
08:35
|
Если ваш код запущен из событий ПередЗаписью/ПриЗаписи (и прочих) при записи объекта, то вы находитесь в неявно объявленной транзакции и ТранзакцияАктивна() будет истина, однако отменять неявные транзакции явно через ЗафиксироватьТранзакцию/ОтменитьТранзакцию нельзя
|
|
14
eddy_n
05.02.25
✎
10:47
|
Ждем-с, когда вместо невнятного сообщения "В данной транзакции уже происходили ошибки" вендор удосужится вывести что-нибудь человеческое.
|
|