Большая ли разница между получением реквизита объекта через запрос или "точку"? #639920


#0 by SeiOkami
Готовлюсь к спецу по УТ 11. Смотрю пример сделанного отчета и сравниваю со своим. Такое заметил. Вот код моей формы: А вот код через запрос: &НаКлиенте
#1 by SeiOkami
Большая ли будет разница??? Есть ли смысл так извращаться?
#2 by Maxus43
через точку - считывается весь объект. через запрос - тока нужные поля
#3 by НЕА123
#4 by НЕА123
уверен? даже в и весь объект?
#5 by SeiOkami
а почему именно так?
#6 by Reset
Получение объекта в происходит в процедуре _УстановитьВалютуВидаЦен
#7 by TormozIT
Оба способа имеют свои плюсы. Так что надо просто их знать и правильно использовать оба. Плюсы: Через точку - объект по ссылке кэшируется платформой на сервере. Через запрос - получаем только то, что нужно, а не весь объект (с табличными частями и строками неограниченной длинны и хранилищами значений).
#8 by SeiOkami
Ну так и сильно будет толку, если во втором варианте мы сначала передаем вид цен в функцию, затем в запрос, а потом уже получаем валюту из выборки.? Только поймите, я не спорю, а просто хочу понять и разобраться, чтобы приучиться, так сказать, сразу к наилучшему варианту =)
#9 by Поросенок Петр
&НаСервереБезКонтекста и &НаСервере вот где главная разница
#10 by НЕА123
ЗначениеЗаполнено дольше отрабатывает. > Отчет._Валюта = Отчет.ВидЦены.ВалютаЦены; дык при двух точках не создается. в 77 так было точно, что и логично.
#11 by France
если через точку в цикле, то будешь троллить сервер, в то время как запросом все получишь за один раз
#12 by Maxus43
Отчет. - после точки уже влечёт за собой считывание объекта "Отчет", т.е. по сути запрос на сервер вида "Отчет.*" посылается платформой. Имхо
#13 by Reset
Первый вариант также приведет к "неявному" запросу на сервер (sql), только выбираться будут все поля, а не одно. Грубо ВЫБРАТЬ
#14 by SeiOkami
то бишь если я в своём варианте поставлю &НаСервереБезКонтекста - будет лучше?
#15 by Reset
Создается. Отчет.ВидЦены - это ссылка. Для получения реквизита после второй точки делаться запрос на получение объекта по ссылке, из которого уже используется конкреткный реквизит
#16 by SeiOkami
А если так? &НаКлиенте Процедура ВидЦеныПриИзменении(Элемент)
#17 by SeiOkami
Разница будет?
#18 by НЕА123
не буду спорить. но зачем тащить лишние данные? вот так при двух точках ВЫБРАТЬ    |    ВидыЦен.ВалютаЦены
#19 by Reset
Это среднее между 1 и 2 :)
#20 by Поросенок Петр
Вощем то будет однокуйственно. Получение значения через точку или через запрос мало отличаются временем (ну если в объекте не 9000 строк в ТЧ) по сравнению с самим серверным вызовом. Вариант запросом тупо менее читабелен.
#21 by Reset
Да, зачем?
#22 by SeiOkami
А если еще обращаться к виду цен не через Отчет.ВидЦены, а через Элемент.Что-то (не помню как там) ?
#23 by SeiOkami
ну что бы объект отчета не читать =)
#24 by Поросенок Петр
Одна, две точки. Люди вы чо курите? ...
#25 by Поросенок Петр
Про объект отчета точно лучше не читать.
#26 by НЕА123
ты, это... тебе все равно не дадим...
#27 by ХочуСказать
очень большая разница при использовании RLS на поля объекта
#28 by SeiOkami
в конкретном примере, конечно, разнице микроскопическая, так я же и говорю, что хочу, так сказать, изначально приспособиться к более оптимальному варианту, чтобы уже в последствии писать как лучше
#29 by SeiOkami
как то так =)
#30 by SeiOkami
Результат таков. Имеем три варианта: №1: &НаКлиенте Процедура ВидЦеныПриИзменении(Элемент) №2: &НаКлиенте №3: &НаКлиенте По быстродействию их порядок (сначала самый быстрый): 3, 2, 1 По читабельности и "писабельности" (на мой взгляд) порядок с самого лучшего таков: 1, 2, 3 Значит оптимальный вариант № 2. Так выходит ? =)
#31 by Поросенок Петр
Дело в том ещё, что подобные атомарные чтения практически никогда не нужны в каком-нить критической области, типа проведения. Обычно это нужно как у автора, походу работы с интерфейсом, т.е. там где выигрыш будет незаметен. Впрочем если не думать, то лучше делать как партия говорит. Писать запросы. ПыСы: Вариант с запросом теперь хавает почти любой тип - программа стала менее безопасной. Впрочем, это щас мало кого парит.
#32 by Поросенок Петр
*Писать запросы _ВЕЗДЕ_.
#33 by SeiOkami
фиговое решение =( а как же типовые построены ? иль 1с'никам по_ на нюансы своей платформы ? =)
#34 by ХочуСказать
почти везде запросы и используются
#35 by H A D G E H O G s
Правильно писать так: Все остальное - куйня.
#36 by H A D G E H O G s
Поросенок Петр - дятелъ, кстати
#37 by H A D G E H O G s
Не везде, либо кое - где аддски. Посмотри замер производительности, когда жмякаешь галочку "Бух" в типовых документах типовой УПП. Вроде фигня, вроде и недолго, а все равно тормозит с секунду-две.
#38 by SeiOkami
а если конфа поменяется (измениться название, либо кол-во передаваемых параметров, либо еще чего), тогда работать не будет. Так надежнее
#39 by H A D G E H O G s
Для этого запилили расширенную проверку.
#40 by SeiOkami
что за "расширенная проверка" ?
#41 by pumbaEO
Прочти и используй "ВЫБРАТЬ РАЗРЕШЕННЫЕ " . РЛС расширенная проверка проверит?
#42 by SeiOkami
, эээ, то бишь, если пользователю нельзя читать валюту, то выпадет ошибка?
#43 by pumbaEO
Да, но если будет в привелигированом модуле исполняться, то нет :).
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С