Имя: Пароль:
1C
1С v8
обращение к реквизиту vs запрос
0 Dirk Diggler
 
25.11.11
07:47
Запрос с выбором реквизита всё еще быстрее, чем обращение объект.реквизит ?
1 Нуф-Нуф
 
25.11.11
07:58
да. так как при обращении к объекту из базы тянется весь объект полностью, а уж потом из вытащенного берется нужный реквизит
2 Wobland
 
25.11.11
08:06
интересная тема. в первом случае одно телодвижение, во втором Выполнить().Выбрать(). на малых данных, может, и дольше будет
3 Нуф-Нуф
 
25.11.11
08:10
да если честно имхо никто никогда не задумывается и фигачят Объект.Реквизит
так что и ты не парься. вот когда дойдешь до того что для тебя каждый запрос к БД будет на вес золота - тогда и оптимизируй
4 Escander
 
25.11.11
08:11
(2)если объект уже есть - быстрее потянуть реквизит с него, хотя считается не кошерно, а если ещё нет его - тогда чтение объекта платформой будет преобразовано к тому-же самому запросу но по всем реквизитам... т.е. с запросом дольше пишется но быстрее отрабатывает.
5 Dirk Diggler
 
25.11.11
17:05
(1) я в курсе. только вот почему бы не переделать платформу так, чтобы обращение объект.реквизит переделывалось интерпретатором в мини-запрос автоматически и не парило бы голову программерам?
6 Живой Ископаемый
 
25.11.11
17:07
а... это такой способ общаться с разработчиками платформы?
7 Ненавижу 1С
 
гуру
25.11.11
17:09
(5) обращение к реквизиту ссылки это и есть мини-запрос, обращение к реквизиту объекта не влечет извлечения данных из СУБД
8 Живой Ископаемый
 
25.11.11
17:11
Для Каждого Оформление Из ОформленияСтрок Цикл
       Если НЕ Оформление.ДанныеСтроки.ЭтоГруппа И Не Оформление.ДанныеСтроки.Актуальность Тогда
           Оформление.ЦветТекста = ЦветаСтиля.ЦветРамки;
       КонецЕсли;
       
       Если Не Элементыформы.СправочникСписок.Колонки.ДРФО.Видимость Тогда
           Продолжить;
       ИначеЕсли Оформление.ДанныеСтроки = Неопределено Тогда
           Продолжить;    
       ИначеЕсли Оформление.ДанныеСтроки.Ссылка.ЭтоГруппа Тогда
           Продолжить;    
       Иначе    
           Оформление.Ячейки.ДРФО.УстановитьТекст(Оформление.ДанныеСтроки.Ссылка.ФизЛицо.КодПоДРФО);
       КонецЕсли;  // <<<  СЮДА СМОТРЕТЬ
       
   КонецЦикла;


выполнение этой строчки занимает около 80% времени при открытии формы списка справочника, занимает около 13 секунд. запрос, выгрузка в тз-кэш и поиск по ней дал выигрыш в 10 раз.
9 Defender aka LINN
 
25.11.11
17:12
(7) Только этот запрос все реквизиты считывает, а не 1.
(5) А если тебе потом еще 5 реквизитов потребуется?
(2) Учи матчасть :)
10 Dirk Diggler
 
25.11.11
17:25
(9) переключаемые режимы надо делать ))) препроцессором )