| 
    
 | 
        Фича с транзакцией и строкой табличной части.         | 
☑ | 
    
        | 
    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 
 | 
         
        Вообще это логично, накладывается блокировка     
         | 
 |