|
Транзакция ↓ (Волшебник 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) что за поток сознания?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |