Имя: Пароль:
1C
1С v8
вопрос по запросу 1с 8
,
0 DmitriyDI
 
27.11.13
14:54
Есть ли разница в таком способе построения запросов, или отрабатывать будут в любом случае одинаково при пустом списоксубконто?

1 вариант

Если ЗначениеЗаполнено(СписокСубконто1)
Запрос.Текст =Запрос.Текст + "    
ХозрасчетныйОбороты.Субконто1 В(&СписокСубконто1)";
КонецЕсли;

2 вариант
ХозрасчетныйОбороты.Субконто1 В(&СписокСубконто1)
1 DmitriyDI
 
27.11.13
14:54
(1) разница в скорости и в результате я имею ввиду
2 Волшебник
 
модератор
27.11.13
14:55
Сделай замер производительности
3 zak555
 
27.11.13
14:56
зачем это пихать в ГДЕ, если есть параметры виртуальной таблицы ?
4 Sabbath
 
27.11.13
14:57
(3) у него там и нет где)
5 DmitriyDI
 
27.11.13
14:57
(3) (4) я имею ввиду даже если это прописывать в параметре виртуальной таблицы будет ли разница
6 zak555
 
27.11.13
14:58
(5) полный текст покажи
7 Sabbath
 
27.11.13
14:59
(0) ты имеешь ввиду есть ли разница собирать ли текст запроса или писать сразу?
8 Холодильник
 
27.11.13
14:59
при пустом списке результат = 0, разве нет?
9 DmitriyDI
 
27.11.13
15:03
(6) (7) (7) РегистрБухгалтерии.Хозрасчетный.Обороты(&НачДата, &КонДата, Период, Счет В ИЕРАРХИИ(&СписокКодов),....
или
РегистрБухгалтерии.Хозрасчетный.Обороты(&НачДата, &КонДата, Период,
Если ЗначениеЗаполнено(СписокКодов)
Запрос.Текст =Запрос.Текст + "    
Счет В ИЕРАРХИИ(&СписокКодов),";
КонецЕсли;

ну как-то так

(7) разница понятно, что есть,
(8) если "в" то он должен пропускать даже если 0, по идее
10 Sabbath
 
27.11.13
15:06
(9) тогда рекомендую (2) и отписаться тут))
11 hhhh
 
27.11.13
15:07
(9) всё-таки

ТекстЗапроса = ТекстЗапроса + "


а в конце

Запрос.Текст = ТекстЗапроса;

Зачем вы Запрос.Текст постоянно дергаете?
12 DmitriyDI
 
27.11.13
15:09
(11) согласен, но в коде так написано просто скопировал чтобы не писать.
13 hhhh
 
27.11.13
15:15
(12) а в чем вопрос тогда? Понятно, что если три раза написать присваивание Запрос.Текст, будет выполняться в три раза дольше, чем если один раз присвоить.
14 DmitriyDI
 
27.11.13
15:21
(13) не совсем понял причем тут это, лично я думал что без разницы как собирать текст запроса выполнит в итоге ведь он один и тот же текст
15 Sabbath
 
27.11.13
15:24
(13) почему это? Текст то тот же
16 catena
 
27.11.13
15:27
(9)Не правда, это в 77 так, а в 8.х при в(ПустойСписок) дает пустой ответ.
17 DmitriyDI
 
27.11.13
15:29
(16) ну если честно тоже на 77 так делал думал тут так же
18 zakidonoff
 
27.11.13
15:30
(0) 1c - интерпретатор.
быстрее отработает цельный запрос.
Более того, даже так:


Если ЗначениеЗаполнено(СписокКодов) тогда Запрос.Текст =Запрос.Текст + "Счет В ИЕРАРХИИ(&СписокКодов),"; КонецЕсли;



быстрее отработает, чем так:



Если ЗначениеЗаполнено(СписокКодов) тогда
Запрос.Текст =Запрос.Текст + "    
Счет В ИЕРАРХИИ(&СписокКодов),";
КонецЕсли;
19 catena
 
27.11.13
15:30
(17)Нет.
20 Sabbath
 
27.11.13
15:38
+(19) и не перечь женщине
21 hhhh
 
27.11.13
15:42
(15) присваивание Запрос.Текст оно инициализирует запрос, создает там кучу таблиц, список параметров ну и кучу еще всего. Зачем это делать несколько раз, если можно как в (11)?
22 DmitriyDI
 
27.11.13
15:44
(3) кстати я думал что в параметры виртуальной таблицы бухгалтерского регистра можно передать только отбор по виду субконто, как туда передать значения всех трех субконто, честно сказать не знаю
23 DmitriyDI
 
27.11.13
15:46
(21) ну хватит нам рассказывать))) выполняет еще его несколько раз)
24 catena
 
27.11.13
15:48
(20)Да
25 DmitriyDI
 
27.11.13
15:50
(24) да я уже проверил)
26 hhhh
 
27.11.13
15:51
(23) да, вот именно выполняет. Каждое "запрос.текст" = выполняет. Старые таблицы все выбрасывает, новые создает.
27 zakidonoff
 
27.11.13
15:53
(26) Пруф!
28 hhhh
 
27.11.13
15:56
(27) ну в СКД проверьте, поменяйте текст запроса. У вас все закладочки пересчитаются.

В построителе тоже, если присваиваешь Построитель.Текст настройки слетают, пишутся новые исходя из текста запроса.
29 zakidonoff
 
27.11.13
15:58
(28) Не аргумент. Пересчёт идёт в процессе выполнения или при обращении отладчика -)
30 hhhh
 
27.11.13
16:03
(29) не, список параметров известен еще до выполнения.
31 Sabbath
 
27.11.13
16:09
(26) да ладно. Причем тут скд, тест запроса это просто свойство объекта запрос, ничего там не выполняется при присваивании)
Уж точно сам запрос от того, как собран текст медленней не будет работать))
32 bolobol
 
27.11.13
16:39
А если написать Запрос.Текст= "Выбрать * ИЗ * КАК *" - даже конфигуратор сообщит "Здравия желаю, товарищ полковник! Выборка от забора и до обеда буит сделана!!"
AdBlock убивает бесплатный контент. 1Сергей