|  | Как может быть ошибка "Транзакция не активна", если ТранзакцияАктивна() = истина ↓ (Волшебник 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 | 
        Ждем-с, когда вместо невнятного сообщения "В данной транзакции уже происходили ошибки" вендор удосужится вывести что-нибудь человеческое.     |  | 
        Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан