|  | Фича с транзакцией и строкой табличной части. | ☑ | 
    
        | 0
    
        ptiz   04.09.12✎ 13:15 | 
        Вот простейший код:
 
 СтрокаТЧ = ДокСсылка.Товары[0];
 Сообщить("индекс строки Ссылки до транзакции = " + ДокСсылка.Товары.Индекс(СтрокаТЧ));
 НачатьТранзакцию();
 Сообщить("индекс строки Ссылки в транзакции = " + ДокСсылка.Товары.Индекс(СтрокаТЧ));
 
 Результат:
 индекс строки Ссылки до транзакции = 0
 индекс строки Ссылки в транзакции = -1
 
 А если использовать ДокументОбъект, то результат одинаков.
 
 Что за фича?
 |  | 
    
        | 1
    
        Reset   04.09.12✎ 13:18 | 
        СтрокаТЧ = ДокСсылка.Товары[0];
 Сообщить("индекс строки Ссылки до транзакции = " + ДокСсылка.Товары.Индекс(СтрокаТЧ));
 
 Так делать, вообще говоря, некорректно.
 В первой и второй строке - объекты разные
 |  | 
    
        | 2
    
        ptiz   04.09.12✎ 13:21 | 
        (1) Чем ДокСсылка отличается от ДокСсылка?     |  | 
    
        | 3
    
        Reset   04.09.12✎ 13:22 | 
        (2) Ты начни с того, чем объек отличается от ссылки и что делает происходит при обращении через точку     |  | 
    
        | 4
    
        Reset   04.09.12✎ 13:24 | 
        Можно предположить, что в первом случае изза кеширования объекта строка нашлась, а во втором случае начало транзакции форсировало повтороное чтение объекта. Но не понимаю, зачем задаваться поведением системы на заведомо некорректных примерах?     |  | 
    
        | 5
    
        ptiz   04.09.12✎ 13:26 | 
        (3) Где ты видешь ОБЪЕКТ?     |  | 
    
        | 6
    
        Reset   04.09.12✎ 13:29 | 
        (5) Твой уровень мне понятен. Я оставлю объяснение основ моем более терпеливым коллегам.     |  | 
    
        | 7
    
        ptiz   04.09.12✎ 13:42 | 
        Понял наводку.
 Если ДокСсылка.Товары запихнуть в переменную, то транзакция не влияет.
 
 "Начало транзакции форсировало повтороное чтение объекта" - похоже.
 Получается, он все кэшированные данные сбрасывает? Надо проверить.
 |  | 
    
        | 8
    
        Reset   04.09.12✎ 13:51 | 
        (7) Я вообще не люблю что-либо через точку от ссылки читать, на самом деле. Предпочитаю явно ПолучитьОбъект() в переменную и ее использовать, либо запросом.
 Извини за резкость :\
 День тяжелый
 |  | 
    
        | 9
    
        ptiz   04.09.12✎ 13:56 | 
        Проверил. 
 При появлении новой транзакции идет повторное обращение к базе при чтении реквизитов ссылок.
 Где-нибудь можно использовать.
 Но т.к. не встречал этого в документации, не факт, что такое поведение будет всегда.
 |  | 
    
        | 10
    
        ssh2006   04.09.12✎ 14:02 | 
        Вообще это логично, накладывается блокировка     |  |