Вход | Регистрация
    1  2  3
1С:Предприятие :: 1С:Предприятие 8 общая

ОФ. Происходит ли обращение к БД при работе с реквизитами объекта?

ОФ. Происходит ли обращение к БД при работе с реквизитами объекта?
Я
   Тенепопятам
 
10.06.21 - 16:58
Вопрос следующий. В коде программы нужно периодически обращаться к реквизитам документа. Это можно делать через объект, а можно через ссылку. Правильно я понимаю, что если обращаться через ссылку, то при каждом обращении к реквизиту выполняется запрос к БД, а если через объект, то реквизиты считываются из оперативной памяти, куда они были записаны при считывании объекта? Как в этом контексте грамотнее организовать работу с объектами 1С, через ссылку или через объект?
   2mugik
 
201 - 13.06.21 - 22:01
убрал .ПолучитьОбъект() - тоже самое.
   acht
 
202 - 13.06.21 - 23:09
(201) Одна из черепашек.
Ради интереса запустил на 8.3.19.1150:

    Ссылка = Справочники.Точки.НайтиПоНаименованию("ФастФуд");

    НачатьТранзакцию();
    
    Сообщить(Ссылка.Наименование);
    ЗапуститьПриложение("Timeout /T 30 /NoBreak", , Истина);
    Сообщить(Ссылка.Наименование);
    
    ОтменитьТранзакцию();

И вторая сессия, изменяющая наименование, честно зависла на записи. Дождалась завершения транзакции и внесла свои изменения. При этом первая, естественно, выдала одно и то же наименование за два обращения.

Попробуй таймаут у себя увеличить, в 10 секунд ты ничего не заметишь


Вторая
   acht
 
203 - 13.06.21 - 23:10
сессия - ручное редактирование справочника
   Злопчинский
 
204 - 13.06.21 - 23:18
Продолжаю наблюдения...
   2mugik
 
205 - 14.06.21 - 07:12
скопировал твой код. У меня он вызывается из формы отчета. Также во второй сессии дает изменять. При этом выводит два разных наименования.  8.3.18.1334
   DTX 4th
 
206 - 15.06.21 - 13:27
Да, забавно)

По-моему, вот такого допущения должно быть достаточно:
При обращении через ссылку подгружается объект целиком. Это значит, что ближайшее 20 секунд он может быть не перечитан при изменении в другом сеанса или еще где.
   fisher
 
207 - 15.06.21 - 16:57
(206) Какие еще допущения? Ссылки на RTFM приводили еще в самом начале и походу оно так и работает.
   fisher
 
208 - 15.06.21 - 17:14
В (199), как уже сказали, тест не имеет никакого отношения к тестированию транзакционного объектного кэша.
В (202) релевантный тест. Только у тебя наверное автоматические блокировки и поэтому ожидание. В управляемых блокировках просто отключается кэширование и результат как в (205). Все логично.
   TormozIT
 
209 - 15.06.21 - 20:32
Да. В транзакции просто создается свой объектный кэш. А на время ее работы основной объектный кэш просто не используется (не очищается).
  1  2  3

Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.