Вход | Регистрация
 

ЗначенияРеквизитовОбъекта() нужна ли

ЗначенияРеквизитовОбъекта() нужна ли
Я
   Простенький вопросик
 
19.08.20 - 13:07
Мне тут один мега гуру заявил, что есть очень важная функция в БСП, которая сильно ускоряет отбор реквизитов и надо ее всегда использовать. Называется ЗначенияРеквизитовОбъекта().
Я для проверки написал такой код
КонтрагентРекв = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Этотобъект.Ссылка,"Контрагент");
Контрагент1=КонтрагентРекв.Контрагент;
Контрагент2=этотобъект.Контрагент;

так вот, первая строчка отработала 0,000132 сек
вторая 0,000014    сек
третья 0,000014    сек

спрашивается, где тут ускорение?
   1Сергей
 
1 - 19.08.20 - 13:09
а теперь протестируй это когда тебе нужно получить несколько реквизитов
   Простенький вопросик
 
2 - 19.08.20 - 13:10
(1)
и что будет?
   1Сергей
 
3 - 19.08.20 - 13:10
(2) одно обращение к бд заместо нескольких
   Галахад
 
4 - 19.08.20 - 13:12
(0) Хм, а ничего что в первом случает обращение к ссылке, а во втором к объекту?
   youalex
 
5 - 19.08.20 - 13:14
чет какое-то странное сравнение.
В первом случае ты получаешь значение из БД
Во втором и третьем - из памяти (из структуры и текущего объекта)

Попробуй ЭтотОбъект.Ссылка.Контрагент тогда уж.
   Timon1405
 
6 - 19.08.20 - 13:38
А теперь добавьте в объект реквизит с типом ХЗ, запихните туда фильм и сравните результаты
   b_ru
 
7 - 19.08.20 - 13:43
Мега гуру видать тебе не объяснил как это все работает и почему. Когда ты обращаешься к ссылка.реквизит, то эта ссылка со всеми своими реквизитами полностью читается сервером. Если это ссылка на какой-нибудь справочник с тремя реквизитами (случай 1), то и хрен бы с ним. А если это ссылка на какой-нибудь монструозный документище с миллионом реквизитов (случай 2) - будет уже не столь быстро. А когда ты делаешь ЗначенияРеквизитовОбъекта() (случай 3), то выполняется запрос, который читает только нужные реквизиты. Но тратится время на интерпретацию текста этого запроса, поэтому будет дольше чем в сулчае 1. Зато случай 3 не зависит от типа ссылки и всегда будет занимать примерно одинаковое время.
Кстати в типовых прослеживается тенденция документы реквизитами не перегружать, а пихать их по возможности в регистры сведений, так что подход с обращением через точку часто оказывается вполне кошерным.
   lodger
 
8 - 19.08.20 - 14:16
ЗначенияРеквизитовОбъекта() нужна ли    = нужна.
где тут ускорение?            = тут нигде. пример невалидный.
   Casey1984
 
9 - 19.08.20 - 14:31
(0) Спросите у гуру что такое ссылка и что такое объект :-/
   ptiz
 
10 - 19.08.20 - 14:34
(0) С тонкого клиента нельзя обратиться "через точку", вот и придумали костыли.
   ГдеСобакаЗарыта
 
11 - 19.08.20 - 14:43
(10)С тонкого клиента нельзя обратиться к ЗначенияРеквизитовОбъекта() ровно также. Наверно не для этого придумали
   ptiz
 
12 - 19.08.20 - 14:45
(11) "Вызов сервера" не стоит в общем модуле? (в типовые на УФ не лазаю). А как тогда с тонкого реквизиты тягают?
   ГдеСобакаЗарыта
 
13 - 19.08.20 - 14:47
Не стоит. Вызывают процедуру на сервере без контекста и уже из неё...
   H A D G E H O G s
 
14 - 19.08.20 - 14:55
(10) Только не в БСП.

Но я себе впилил и вызов с клиента и флаг проверки на наличие реквизитов и даже отдельный повторно возвращаемый модуль, иногда нужен, когда лень делать кэш.
   Franchiser
 
15 - 19.08.20 - 15:38
(0) и причем тут гуру? на ИТС статья есть про это
   Franchiser
 
16 - 19.08.20 - 15:39
(0) лучше ее не использовать, а делать свое кеш, т.к. по сути это запрос в цикле. Но получать реквизит из ссылки еще хуже.
   Вафель
 
17 - 19.08.20 - 15:41
если нет больших тч то не разница невелика (можно пренебречь)
   Franchiser
 
18 - 19.08.20 - 15:44
(14) чем помогает повторно возвращаемый модуль? если функция возвращает в нем одно значение реквизита, то ускорение будет только если функция несколько раз вызывается с повторяющимся значением параметра, а если для списка уникальынх контрагентов или не в последовательном порядке то толка никакого.
   H A D G E H O G s
 
19 - 19.08.20 - 15:46
(18) Получить реквизиты немногих номенклатур, которые в таблице вместе со многими сериями.
   Franchiser
 
20 - 19.08.20 - 15:48
(19) что передается в качестве параметра список номенклатур или одна номенклатура?
   H A D G E H O G s
 
21 - 19.08.20 - 15:49
(20) Одна номенклатура.
   H A D G E H O G s
 
22 - 19.08.20 - 15:49
(20) Дада, я знаю, массивНоменклатур.
   Вафель
 
23 - 19.08.20 - 15:49
(21) для каждой серии небось?
   H A D G E H O G s
 
24 - 19.08.20 - 15:51
(23) Небоись, Вафель, это был пример. Для критичных моментов можно собрать массив, свернуть и получать из Соответствия через ЗначениеРеквизитаОБЪЕКТОВ
   Вафель
 
25 - 19.08.20 - 16:11
зачем так сложно?
можно же по порядку номенклатур обход делать и получать реквизиты 1 раз
   acht
 
26 - 19.08.20 - 16:15
(17) > если нет больших тч то не разница невелика

Вот оно, использование отрицания в идентификаторах =)
   Вафель
 
27 - 19.08.20 - 16:18
(26) если убрать отрицанич то будет совсем другое логическое утверждение


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