|
Применение ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ЗаказПокупателя, "СуммаДокумента") | ☑ | ||
---|---|---|---|---|
0
lite777
20.09.22
✎
08:59
|
Здравствуйте, зачем в типовой рознице применяют- СуммаЗаказа = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ЗаказПокупателя, "СуммаДокумента");
Когда можно просто ЗаказПокупателя.СуммаДокумента ? |
|||
1
RomanYS
20.09.22
✎
09:02
|
(0) во втором случае заказ будет прочитан целиком
|
|||
2
Гипервизор
20.09.22
✎
09:02
|
||||
3
lite777
20.09.22
✎
09:10
|
(2) Спасибо ,Но блин надо еще привыкнуть к этому.
|
|||
4
Timon1405
20.09.22
✎
09:23
|
(3) там много плюшек, например можно так ЗначениеРеквизитаОбъекта(ПТУ, "ДокументОснование.СуммаДокумента");
|
|||
5
НафНаф
20.09.22
✎
09:44
|
(4) зародыш LINQ из подручного материала
|
|||
6
Smit1C
20.09.22
✎
12:18
|
(1) Даже если ЗаказПокупателя это не ДокументОбъект, а ДокументСсылка ?
|
|||
7
timurhv
20.09.22
✎
12:21
|
(6) Если объект, то он уже прочитан, а по ссылке допустим 10 табличных частей с 99999 строками, то будет неожиданная ж..а
|
|||
8
RomanYS
20.09.22
✎
12:23
|
(6) для объекта это смысла не имеет вообще. Да, по сути по ссылке будет прочитан и закэширован весь объект (на счёт ТЧ не уверен)
|
|||
9
polosov
20.09.22
✎
12:25
|
В 22 году такое спрашивать как-то странно.
(0) С разморозкой тебя! |
|||
10
Галахад
гуру
20.09.22
✎
12:27
|
(3) А раньше как-то по другому было?
|
|||
11
ДедМорроз
20.09.22
✎
21:41
|
Вы еще про кеш забыли с его временем жизни.
|
|||
12
RomanYS
20.09.22
✎
21:54
|
(11) перечитай (8)
|
|||
13
ДедМорроз
20.09.22
✎
21:56
|
Когда мы что-то получаем через точку от объекта,то мы получаем значение в памяти,а не в базе данных.
Когда мы что-то получаем через точку от ссылки,то обращение идет в кеш,который проверяет,есть ли там объект и не устарел ли он,при этом,если обънкта нет,то он считывается целиком. Если объект есть,то в течение времени валидности он просто возвращается из кеша,хотя в базе он мог поменяться. После истечения времени валидности из базы,сначала,будет запрошена версия,а потом,если она изменилась,то весь объект. По истечении времени жизни объект из кеша удаляется и будет запрошен снова. Кроме того,если выполняется транзакция,то кеш отключается,и объект будет запрашиваться всегда. Функция же просто позволяет выполнить запрос и получить только те реквизиты,которые нужны. Конечно,в запросе работает множественное определение через точку,но нужно понимать,что оно приводит к неявному соединению таблиц. Ну и понятно,что мы не можем запросить значение табличной части. С другой стороны,есть функция для запроса полей по списку (массиву) объектов. |
|||
14
ДедМорроз
20.09.22
✎
21:57
|
(12) не совсем верно,не всегда прочитан и не всегда закеширован.
|
|||
15
RomanYS
20.09.22
✎
22:42
|
(14) принято) с (13) не поспоришь
|
|||
16
TormozIT
гуру
20.09.22
✎
22:48
|
(13) "Кроме того,если выполняется транзакция,то кеш отключается,и объект будет запрашиваться всегда"
Это неверное утверждение. В транзакции используется отдельный но такой же по сути объектный кэш. |
|||
17
НафНаф
21.09.22
✎
09:03
|
В этом и проблема - платформа не дает управлять - нужен кэш или нет
|
|||
18
lite777
21.09.22
✎
09:15
|
(9) Не лазил раньше в таки дебри )
|
|||
19
RomanYS
21.09.22
✎
09:20
|
(17) а чем (0) не управление?
|
|||
20
НафНаф
21.09.22
✎
09:23
|
(19) писать строковые литералы в качестве членов класса это так современно
|
|||
21
RomanYS
21.09.22
✎
12:06
|
(20) А как современно? Ну напиши свою ПолучитьВсеРеквизитыБезКэширования() и делай со структурой что хочешь
|
|||
22
Cyberhawk
21.09.22
✎
12:25
|
(16) А за счет чего этот кеш "актуальный всегда", как это заявлено в документации? На ссылку платформа накладывает неявную упр. блокировку?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |