|
вопрос по запросу 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
|
А если написать Запрос.Текст= "Выбрать * ИЗ * КАК *" - даже конфигуратор сообщит "Здравия желаю, товарищ полковник! Выборка от забора и до обеда буит сделана!!"
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |