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