|
ЗначенияРеквизитовОбъекта() нужна ли | ☑ | ||
---|---|---|---|---|
0
Простенький вопросик
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)
и что будет? |
|||
3
1Сергей
19.08.20
✎
13:10
|
(2) одно обращение к бд заместо нескольких
|
|||
4
Галахад
гуру
19.08.20
✎
13:12
|
(0) Хм, а ничего что в первом случает обращение к ссылке, а во втором к объекту?
|
|||
5
youalex
19.08.20
✎
13:14
|
чет какое-то странное сравнение.
В первом случае ты получаешь значение из БД Во втором и третьем - из памяти (из структуры и текущего объекта) Попробуй ЭтотОбъект.Ссылка.Контрагент тогда уж. |
|||
6
Timon1405
19.08.20
✎
13:38
|
А теперь добавьте в объект реквизит с типом ХЗ, запихните туда фильм и сравните результаты
|
|||
7
b_ru
19.08.20
✎
13:43
|
Мега гуру видать тебе не объяснил как это все работает и почему. Когда ты обращаешься к ссылка.реквизит, то эта ссылка со всеми своими реквизитами полностью читается сервером. Если это ссылка на какой-нибудь справочник с тремя реквизитами (случай 1), то и хрен бы с ним. А если это ссылка на какой-нибудь монструозный документище с миллионом реквизитов (случай 2) - будет уже не столь быстро. А когда ты делаешь ЗначенияРеквизитовОбъекта() (случай 3), то выполняется запрос, который читает только нужные реквизиты. Но тратится время на интерпретацию текста этого запроса, поэтому будет дольше чем в сулчае 1. Зато случай 3 не зависит от типа ссылки и всегда будет занимать примерно одинаковое время.
Кстати в типовых прослеживается тенденция документы реквизитами не перегружать, а пихать их по возможности в регистры сведений, так что подход с обращением через точку часто оказывается вполне кошерным. |
|||
8
lodger
19.08.20
✎
14:16
|
ЗначенияРеквизитовОбъекта() нужна ли = нужна.
где тут ускорение? = тут нигде. пример невалидный. |
|||
9
Casey1984
19.08.20
✎
14:31
|
(0) Спросите у гуру что такое ссылка и что такое объект :-/
|
|||
10
ptiz
19.08.20
✎
14:34
|
(0) С тонкого клиента нельзя обратиться "через точку", вот и придумали костыли.
|
|||
11
ГдеСобака Зарыта
19.08.20
✎
14:43
|
(10)С тонкого клиента нельзя обратиться к ЗначенияРеквизитовОбъекта() ровно также. Наверно не для этого придумали
|
|||
12
ptiz
19.08.20
✎
14:45
|
(11) "Вызов сервера" не стоит в общем модуле? (в типовые на УФ не лазаю). А как тогда с тонкого реквизиты тягают?
|
|||
13
ГдеСобака Зарыта
19.08.20
✎
14:47
|
Не стоит. Вызывают процедуру на сервере без контекста и уже из неё...
|
|||
14
H A D G E H O G s
19.08.20
✎
14:55
|
(10) Только не в БСП.
Но я себе впилил и вызов с клиента и флаг проверки на наличие реквизитов и даже отдельный повторно возвращаемый модуль, иногда нужен, когда лень делать кэш. |
|||
15
Franchiser
гуру
19.08.20
✎
15:38
|
(0) и причем тут гуру? на ИТС статья есть про это
|
|||
16
Franchiser
гуру
19.08.20
✎
15:39
|
(0) лучше ее не использовать, а делать свое кеш, т.к. по сути это запрос в цикле. Но получать реквизит из ссылки еще хуже.
|
|||
17
Вафель
19.08.20
✎
15:41
|
если нет больших тч то не разница невелика (можно пренебречь)
|
|||
18
Franchiser
гуру
19.08.20
✎
15:44
|
(14) чем помогает повторно возвращаемый модуль? если функция возвращает в нем одно значение реквизита, то ускорение будет только если функция несколько раз вызывается с повторяющимся значением параметра, а если для списка уникальынх контрагентов или не в последовательном порядке то толка никакого.
|
|||
19
H A D G E H O G s
19.08.20
✎
15:46
|
(18) Получить реквизиты немногих номенклатур, которые в таблице вместе со многими сериями.
|
|||
20
Franchiser
гуру
19.08.20
✎
15:48
|
(19) что передается в качестве параметра список номенклатур или одна номенклатура?
|
|||
21
H A D G E H O G s
19.08.20
✎
15:49
|
(20) Одна номенклатура.
|
|||
22
H A D G E H O G s
19.08.20
✎
15:49
|
(20) Дада, я знаю, массивНоменклатур.
|
|||
23
Вафель
19.08.20
✎
15:49
|
(21) для каждой серии небось?
|
|||
24
H A D G E H O G s
19.08.20
✎
15:51
|
(23) Небоись, Вафель, это был пример. Для критичных моментов можно собрать массив, свернуть и получать из Соответствия через ЗначениеРеквизитаОБЪЕКТОВ
|
|||
25
Вафель
19.08.20
✎
16:11
|
зачем так сложно?
можно же по порядку номенклатур обход делать и получать реквизиты 1 раз |
|||
26
acht
19.08.20
✎
16:15
|
(17) > если нет больших тч то не разница невелика
Вот оно, использование отрицания в идентификаторах =) |
|||
27
Вафель
19.08.20
✎
16:18
|
(26) если убрать отрицанич то будет совсем другое логическое утверждение
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |