Имя: Пароль:
1C
1С v8
Откат транзакции
,
0 ProgramFiles
 
16.11.15
13:09
Добрый день
Начал только работать и инетерсует знакотов пояснение по коду

    НачатьТранзакцию();

    Для Индекс = 0 По НайденныеОбъекты.Количество() - 1 Цикл
        ОбработкаПрерыванияПользователя();
        Строка = НайденныеОбъекты.Получить(Индекс);
        Если НЕ Строка.Пометка Тогда
            Продолжить;
        КонецЕсли;
        Объект = Строка.Объект.ПолучитьОбъект();
        вОбработатьОбъект(Объект, Индекс);
    КонецЦикла;

    ЗафиксироватьТранзакцию();


В данном коде происходит ли откатТранзакции??
как я понимаю,для каждой строчки из цикла фиксируется транзакция ,и если есть какая то ошибка то по строчке она откатывается?
Прошу сильно не бить по голове,а объяснить))Потому что недавно начал прогать только)
1 Ненавижу 1С
 
гуру
16.11.15
13:11
у тебя же начало и конец транзакции вне цикла, тогда почему "для каждой строчки из цикла фиксируется транзакция"
2 bolobol
 
16.11.15
13:16
Если хоть одна ошибка - транзакция не зафиксируется, т.к. код до "ЗафиксироватьТранзакцию();" не дойдёт, т.е. - откатится всё, что было сделано от "НачатьТранзакцию();"
3 ProgramFiles
 
16.11.15
13:21
(2) т.е. ни одна транзакция ни зафиксируется если будет хоть одна ошибка?
4 VikingKosmo
 
16.11.15
13:22
(3) у тебя там и так всего одна транзакция
5 Ненавижу 1С
 
гуру
16.11.15
13:22
(3) тут всего ОДНА транзакция
6 ProgramFiles
 
16.11.15
13:28
(5) т.е. Транзакция для моего набора документа не зафиксируется если будет ошибка ?
7 ProgramFiles
 
16.11.15
13:28
*документов
8 NcSteel
 
16.11.15
13:30
(6) В 1С нет вложенных транзакций
9 ProgramFiles
 
16.11.15
13:35
(8) так если в цикле было?
10 VikingKosmo
 
16.11.15
13:37
(9) начала и фиксации транзакции в цикле то и не было
11 NcSteel
 
16.11.15
13:37
(0) У тебя не в цикле, у тебя транзакция за циклом
12 ProgramFiles
 
16.11.15
14:00
ф процедуре  вОбработатьОбъект(Объект, Индекс);
вот ее код


    Если Объект.ПометкаУдаления Тогда
        Объект.ПометкаУдаления = Ложь;
    КонецЕсли;

    Если Объект.Метаданные().Проведение = Метаданные.СвойстваОбъектов.Проведение.Разрешить Тогда
        Объект.Записать(РежимЗаписиДокумента.Проведение);
    КонецЕсли;

впринципе я если ошибка из за пометки удаления то в этой процедуре она исключиться ,и вся транзакция для моего набора зафиксируется,атк понимаю?
13 ProgramFiles
 
16.11.15
14:01
"она исключиться "-пометка удаления снимается(это имел ввиду)
14 Enterprise
 
16.11.15
14:05
(12) Если ошибок не будет никаких, то зафиксируется