Имя: Пароль:
1C
 
при отмене транзакции наборы записей в коллекции "Движения" документа очищаются
0 TormozIT
 
05.07.23
10:56
Подскажите, где в ИТС описано, что при отмене транзакции наборы записей в коллекции "Движения" документа очищаются. У набора записей того же регистра, созданного независимо, такого не происходит.
https://paste1c.ru/2ekq08ymgye6
        НачатьТранзакцию();
    НаборСтрок = Документ.ПолучитьОбъект().Движения[0];
    //НаборСтрок = РегистрыСведений.Затраты.СоздатьНаборЗаписей();
    НаборСтрок.Добавить();
    Сообщить("До=" + НаборСтрок.Количество());
    ОтменитьТранзакцию();
    Сообщить("После=" + НаборСтрок.Количество());
1 lodger
 
05.07.23
11:13
а если завершить транзакцию, то что в наборе останется лежать?
2 lodger
 
05.07.23
11:14
а если НаборЗаписей не просто с горы взять, а утановить регистратора и прочитать из базы, то после отмены он тоже протухнет?
3 НафНаф
 
05.07.23
11:18
(0) у меня не очистились
4 НафНаф
 
05.07.23
11:30
+(3) может от релиза зависит?
5 TormozIT
 
05.07.23
11:37
Приношу извинения. Немного наврал в коде примера.
Правильный пример такой
    НачатьТранзакцию();
    ф = Документ.ПолучитьОбъект();
    НаборСтрок = ф.Движения[0];
    //НаборСтрок = РегистрыСведений.Затраты.СоздатьНаборЗаписей();
    НаборСтрок.Добавить();
    //ф = Неопределено;
    Сообщить("До=" + НаборСтрок.Количество());
    ОтменитьТранзакцию();
    Сообщить("После=" + НаборСтрок.Количество());
Вот если в нем раскомментировать хотя бы одну строку то числа совпадают. А в исходном виде в конце получаем пустой набор.
6 TormozIT
 
05.07.23
11:39
(2) Очищаются все наборы записей (в памяти), если они принадлежат объекту ДокументОбъект на момент отмены транзакции. Если ДокументОбъект уничтожить перед отменой транзакции, то не очищаются.
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший