Имя: Пароль:
1C
1С v8
Запрос. Как лучше соединять два периода?
0 Галахад
 
гуру
08.10.12
07:38
УТ. Регистр Продажи.

Нужно получить продажи за год.
Продажи периода лето исключить из результата.

Т.е. нужны продажи за период
с 01.01.12 по 31.05.12 и
с 01.09.12 по 31.12.12
1 golden-pack
 
08.10.12
07:39
а как вы умеете ?
2 chelentano
 
08.10.12
07:39
(0) объединение двух запросов с разными периодами
3 ILM
 
гуру
08.10.12
07:40
ГДЕ Период МЕЖДУ Дата1 И Дата2
ИЛИ Период МЕЖДУ Дата3 И Дата4
4 Галахад
 
гуру
08.10.12
07:44
(1) Ну могу как в (2) и (3).

Только (2) как-то некрасиво.

А (3) ИМХО, неторопливо.
5 Мимохожий Однако
 
08.10.12
07:47
Вариант (2) вполне себе красивый ))
6 chelentano
 
08.10.12
07:47
(4) и так ему не то и эдак ему не это...
7 Галахад
 
гуру
08.10.12
07:49
(5), (6) Ну что ж. Мнением большинства...
8 Sammo
 
08.10.12
07:54
Либо виртуальная таблица остатки и обороты с отбором по полноому периоду + Где период <> Лето
9 ILM
 
гуру
08.10.12
07:56
(5) Не совсем, будут два обращения к таблице и будут два раза считываться страницы индексов. В моем случае один раз. Нужно смотреть профайлером. Если скорость выполнения запроса устраивает, то всё равно как.
10 Sammo
 
08.10.12
08:03
(9) В 3 будет полная выборка, из которой потом по ГДЕ отберется.
В 8 - Выборка с отбором по крайним точкам, потом накладывается условие по ГДЕ для откидывания среднего интервала.

Но вобщем случае, имхо, скорость будет примерно одинаковая (имхо, вряд ли здесь будет настолько существенные объемы данных, чтобы это сыграло)
11 ILM
 
гуру
08.10.12
08:06
(10) Я тоже так думаю, тем более что будут агрегатные функции скорее всего.
12 Галахад
 
гуру
08.10.12
08:07
(8) Гм. Это то же, что и (3)?

(9) На моих данных, с выводом результата.
(2) - 2,4 сек.
(3) - 6,4 сек.
13 ILM
 
гуру
08.10.12
08:17
ТОгда замени между

ГДЕ (Период >= Дата1 И Период <= Дата2)
ИЛИ (Период >= Дата3 И Период <= Дата4)
14 aleks-id
 
08.10.12
08:20
ГДЕ (Период >= Дата1 И Период <= Дата4) И (Период >= Дата3 И Период <= Дата2)
15 aleks-id
 
08.10.12
08:21
тьфу. не проснулся еще. И НЕ
16 aleks-id
 
08.10.12
08:22
мля... /*ушел пить кофе*/
17 Галахад
 
гуру
08.10.12
08:23
(13), (14) Народ, вы чего? Не будет оно быстрее работать.
18 aleks-id
 
08.10.12
08:26
(17) вот ты демон... все спят еще а ты с запросами )))
19 Галахад
 
гуру
08.10.12
08:28
(13) 6 сек.
20 aleks-id
 
08.10.12
08:29
ща.
берем производственный календарь, дергаем из него нужный период. потом соединяем по дате
21 Bober
 
08.10.12
08:36
(12) все правильно, в объединении используются вирт талица, а следовательно таблица итогов по мес. В 6 сек система все рассчитывает с нуля
22 ILM
 
гуру
08.10.12
09:51
(19) В параметры регистра запихни.
23 MadHead
 
08.10.12
10:05
(19) попробуй для эксперимента. Выбрать полный период(периодичность месяц) и через "Где" отсечь лишние периоды (именно это в (8) советовали)
24 Галахад
 
гуру
08.10.12
10:09
(22) Не понял. Как можно ГДЕ в параметры запихать?

(23) Не. Все равно медленнее должно быть.
25 MadHead
 
08.10.12
10:12
(24) дык попробуй узнаем на сколько медленнее.
26 MadHead
 
08.10.12
10:24
(24) попробовал на своем регистре продаж. У меня результат одинаковый.
2 + 2 = 3.9999999999999999999999999999999...