Имя: Пароль:
1C
 
Транзакция
🠗 (Волшебник 08.08.2024 06:56)
,
0 Morozov Roman
 
08.08.24
15:55
Всем добрый день! Вопрос  для самопознания, все равно уже сделал, что хотел.
В общем запросом вытащил всю номенклатуру, в выборке получил объект, перезаписал нужные реквизиты и записал объект.
Но перед обходом выборки начал транзакцию, а после цикла зафиксировал ну в исключении отменил. Так вот в цикле объект же уже записывается и переходит на след объект, если что не так пойдет после цикла ОтменитьТразакцию() отработает? или объект уже записан и не отработает. Вроде как, в этом ее суть, что все изменения отменяются грубо говоря. А пример кода такой :

РезультатЗапроса = Запрос.Выполнить();
    Попытка  
        
        НачатьТранзакцию();
        
        БлокировкаДанных = Новый БлокировкаДанных;
        ЭлементБлокировкиДанных = БлокировкаДанных.Добавить("Справочник.Номенклатура");
        ЭлементБлокировкиДанных.Режим = РежимБлокировкиДанных.Исключительный;
        БлокировкаДанных.Заблокировать();
        
        Выборка = РезультатЗапроса.Выбрать();
        
        Пока Выборка.Следующий() Цикл
            
            НоменклатураОбъект = Выборка.Ссылка.ПолучитьОбъект();
            
            НоменклатураОбъект.Ревизит1             = "";
            НоменклатураОбъект.Реквизит2           = "";
...            
            
            НоменклатураОбъект.Записать()
            
            
        КонецЦикла;
        ЗафиксироватьТранзакцию();
    Исключение
        ОтменитьТранзакцию();
    КонецПопытки;
1 Волшебник
 
07.08.24
20:30
вы там совсем кукухой поехали?
2 Волшебник
 
07.08.24
20:32
Ревизит1            
Реквизит2          

Что это за хуйня?
3 Мультук
 
гуру
07.08.24
20:56
4 Morozov Roman
 
07.08.24
21:36
(2) Запрос в цикле?
5 Волшебник
 
07.08.24
21:38
(4) Вы дурак или прикидываетесь?
6 Morozov Roman
 
07.08.24
21:47
(3) Ну вроде так и написал. Кстати там также в цикле перезаписывают реквизиты (2) . А как его перезаписать, если объект получаешь в цикле, а потом .через точку, его реквизиты?
7 Morozov Roman
 
07.08.24
21:47
Пускай дурак, но ты дай ответ. раз умный
8 Волшебник
 
07.08.24
21:46
(6) Что это за реквизиты? Почему такие имена?
9 Волшебник
 
07.08.24
21:47
(7) Ты мне не тычь. Отвечай по существу. Что ты городишь хуету?
10 Morozov Roman
 
07.08.24
21:48
Бл...)) Да простые реквизиты строчного типа. Не буду же я все реквизиты переписывать с объекта сюда
11 Волшебник
 
07.08.24
21:49
Какие-то ебанутые генераторы говнокода и бессмысленных фраз. Вообще нихуя не понимают. Разговариваешь как со стенкой.
12 Мультук
 
гуру
07.08.24
21:49
(6)

1) У вас НачатьТразакцию() в попытке. А в примере вовсе нет.
2) Ну сгенерируйте исключение сами, добавьте после конца цикла или в цикле

ф = 1 /0;

и посмотрите куда "прыгнет", отменятся ли все изменения или только одно.

Тестовая же база у вас есть ?
13 Волшебник
 
07.08.24
21:49
(10) Ну и забери свой говнокод. Нахуй ты ветку создал, придурок?
14 Волшебник
 
07.08.24
21:50
(12) Какие могут быть сомнения?! Конечно, отменятся. Если транзакция не зафиксирована, то все изменения идут нахуй.

Что вы тут обсуждаете?!
15 Волшебник
 
07.08.24
21:54
(0) >> запросом вытащил всю номенклатуру,

А зачем ты это сделал? Там справочник на миллиард элементов, а ты его в запрос выбрал. Головой надо думать! В данном случает надо было использовать Спр.Выбрать()
16 Волшебник
 
07.08.24
21:55
(10) не строчного, а строкового

пишите по-русски
17 Morozov Roman
 
07.08.24
22:10
(12) Есть. Все понял теперь с конструированием транзакций. Спасибо!
18 Morozov Roman
 
07.08.24
22:01
(16) Затем, что всю номенклатуру надо поменять, без условий и отборов. Чо доебался или ,в Вашем случае, Что доебались.
19 Волшебник
 
08.08.24
06:54
(18) Потрынди мне тут...
20 Волшебник
 
08.08.24
07:02
Не надо записывать весь справочник номенклатуры в одной транзакции. Фиксируйте транзакцию каждые N элементов и начинайте новую.
21 maxab72
 
08.08.24
07:40
Самый лучший rollback транзакции - это восстановление из бэкапа. Поэтому если на последнем записываемом элементы в последнем пакете транзакций что-то пошло не так и надо все откатить, то ничего еще не потеряно.
22 Valdis2007
 
08.08.24
07:44
(0) "Но перед обходом выборки начал транзакцию начал транзакцию"

зачем "начал транзакцию" 2 раза?
23 Ненавижу 1С
 
гуру
08.08.24
08:18
(0) если произойдет ОтменитьТранзакцию, то все ваши Записать внутри отменятся. Объект через ПолучитьОбъект это абстракция 1С, не имеющая к БД никакого отношения.
24 Stepashkin
 
08.08.24
09:06
(0) Привет. Вот тут - https://its.1c.ru/db/metod8dev#content:2313:hdoc подробно про транзакции. Изучите и радуйтесь, что вас перестанут называть неудобными словами.
25 Волшебник
 
08.08.24
09:21
(23) >> Объект через ПолучитьОбъект это абстракция 1С, не имеющая к БД никакого отношения.

ну да, ну да... А если надо изменить данные в БД, то чем ещё?
26 ТДК
 
08.08.24
21:15
(0) что за поток сознания?