|
помогите оптимизировать запрос | ☑ | ||
---|---|---|---|---|
0
DomanM
21.08.15
✎
10:50
|
ВЫБРАТЬ РАЗЛИЧНЫЕ
УправленческийОстатки.Субконто1 КАК Контрагент, УправленческийОстатки.Субконто2 КАК Договор, СУММА(ВЫБОР КОГДА &суммаврублях ТОГДА УправленческийОстатки.СуммаРеглОстаток ИНАЧЕ УправленческийОстатки.СуммаОстаток КОНЕЦ) КАК СуммаОстаток ПОМЕСТИТЬ саль ИЗ РегистрБухгалтерии.Управленческий.Остатки(&ДатаСреза, Счет = &Счет, , ) КАК УправленческийОстатки ГДЕ ВЫБОР КОГДА &суммаврублях ТОГДА УправленческийОстатки.СуммаРеглОстаток <> 0 ИНАЧЕ УправленческийОстатки.СуммаОстаток <> 0 КОНЕЦ СГРУППИРОВАТЬ ПО УправленческийОстатки.Субконто1, УправленческийОстатки.Субконто2 ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ УправленческийОбороты.Регистратор, СУММА(ВЫБОР КОГДА &суммаврублях ТОГДА УправленческийОбороты.СуммаРеглОборот ИНАЧЕ УправленческийОбороты.СуммаОборот КОНЕЦ) КАК СуммаОборот, ВЫРАЗИТЬ(УправленческийОбороты.Субконто1 КАК Справочник.Контрагенты) КАК Контрагент, ВЫРАЗИТЬ(УправленческийОбороты.Субконто2 КАК Справочник.ДоговорыКонтрагентов) КАК Договор ПОМЕСТИТЬ ВсеДоки ИЗ РегистрБухгалтерии.Управленческий.Обороты( , &ДатаСреза, Регистратор, Счет = &счет, , (Субконто1, субконто2) В (ВЫБРАТЬ саль.Контрагент, саль.Договор ИЗ саль КАК саль), , ) КАК УправленческийОбороты СГРУППИРОВАТЬ ПО УправленческийОбороты.Регистратор, ВЫРАЗИТЬ(УправленческийОбороты.Субконто1 КАК Справочник.Контрагенты), ВЫРАЗИТЬ(УправленческийОбороты.Субконто2 КАК Справочник.ДоговорыКонтрагентов) скорость падает явно на втором пакете и на ограничении (Субконто1, субконто2) В (ВЫБРАТЬ саль.Контрагент, саль.Договор ИЗ саль КАК саль), как быть? |
|||
1
John83
21.08.15
✎
10:52
|
ограничение на таблицу и будет сильно тормозить
Я бы сначала сделал ограничение массивом на субконто1, затем в где на субконто2 PS неплохо бы задать массив видов субконто |
|||
2
DomanM
21.08.15
✎
10:55
|
(1) массивом на субконто? т е программно выгрузить ограничения и закинуть в параметр?
|
|||
3
John83
21.08.15
✎
10:57
|
(2) 3ий параметр вирт. таблицы
|
|||
4
DomanM
21.08.15
✎
11:00
|
(3) в смысле третий? можно для тугоумных поподробнее
|
|||
5
John83
21.08.15
✎
11:02
|
ИЗ
РегистрБухгалтерии.Налоговый.Остатки(, Счет = &Счет, &МассивСубконто, ) КАК НалоговыйОстатки в &МассивСубконто запихивай виды субконто из планов видов характеристик |
|||
6
DomanM
21.08.15
✎
11:03
|
(5) проблема же в констраукции "В (выбрать" она решится или что?
|
|||
7
John83
21.08.15
✎
11:05
|
(6) пробуй
|
|||
8
DomanM
21.08.15
✎
11:15
|
(7) по одному субконто получилось, скорость выросла спасибо, а как сделать по двум такое, потому что по двум стало (мас в списке значений) в 5 раз дольше
|
|||
9
rabbidX
21.08.15
✎
11:16
|
Почему не используете таблицу ОсаткиИОбороты с условием на конечный остаток?
И группировать на фиг не надо. Вы и так с периодичностью Регистратор обороты выбираете. |
|||
10
DomanM
21.08.15
✎
11:18
|
(9) не особо понимаю как надо его сворачивать с регистратором чтоб остатки нормально свернулись, свернул просто по субконто - куча лишних цифр
|
|||
11
John83
21.08.15
✎
11:24
|
(8) аа.. тебе же условие именно на таблицу нужно..
тогда в вирт. таблице ставишь условие массива субконто1, в ГДЕ ставишь условие на таблицу (субконто1, субконто2) |
|||
12
sash-ml
21.08.15
✎
11:27
|
убери к чертям контагента, отбирай только по договору и по одному субконто, контрагента потом из договора получишь так раз в 20 будет быстрее
|
|||
13
DomanM
21.08.15
✎
11:42
|
(12) идея, спс
|
|||
14
DomanM
21.08.15
✎
11:45
|
(12) но все равно в массив прийдется два субконто вставлять(
|
|||
15
sash-ml
21.08.15
✎
11:47
|
(14) Одно, только договор, вы выборке будет одно субконто СУбконто1 и это будет договор
|
|||
16
DomanM
21.08.15
✎
11:53
|
(15) в том то и дело что договор это субконто2, и если я ставлю только договор и ограничение на субконто 2 он требует массив в параметр((
|
|||
17
DomanM
21.08.15
✎
11:57
|
(15) короче он хочет чтоб я в массив договор тоже внес
|
|||
18
sash-ml
21.08.15
✎
12:01
|
(16) +(14) еще раз внимательно. дело в том что когда ты вставишь в массив только один тип субконто Договор, то у тебе будет в выборке только ОДНО субконто, и не будет никаких других субконто,
УправленческийОбороты.Субконто1 как ДОГОВОР //уотакуот |
|||
19
DomanM
21.08.15
✎
12:03
|
(18) все понял спс
|
|||
20
DomanM
21.08.15
✎
12:10
|
(18) все равно сорок секунд отбирает((
|
|||
21
sash-ml
21.08.15
✎
12:36
|
покажи запрос который получился
|
|||
23
pavig
21.08.15
✎
12:47
|
Поправка:
ВЫБРАТЬ УправленческийОбороты.Регистратор, СУММА(ВЫБОР КОГДА &суммаврублях ТОГДА УправленческийОбороты.СуммаРеглОборот ИНАЧЕ УправленческийОбороты.СуммаОборот КОНЕЦ) КАК СуммаОборот, ВЫРАЗИТЬ(УправленческийОбороты.Субконто1 КАК Справочник.Контрагенты) КАК Контрагент, ВЫРАЗИТЬ(УправленческийОбороты.Субконто2 КАК Справочник.ДоговорыКонтрагентов) КАК Договор ПОМЕСТИТЬ ВсеДоки ИЗ РегистрБухгалтерии.Управленческий.Обороты( , &ДатаСреза, Регистратор, Счет = &счет, &МассивСубконто, Субконто1 в ( ВЫБРАТЬ РАЗЛИЧНЫЕ УправленческийОстатки.Субконто1 КАК Договор ИЗ РегистрБухгалтерии.Управленческий.Остатки(&ДатаСреза, Счет = &Счет, &МассивСубконто, ) КАК УправленческийОстатки ГДЕ ВЫБОР КОГДА &суммаврублях ТОГДА УправленческийОстатки.СуммаРеглОстаток <> 0 ИНАЧЕ УправленческийОстатки.СуммаОстаток <> 0 КОНЕЦ ) , , ) КАК УправленческийОбороты СГРУППИРОВАТЬ ПО УправленческийОбороты.Регистратор, ВЫРАЗИТЬ(УправленческийОбороты.Субконто1 КАК Справочник.Контрагенты), ВЫРАЗИТЬ(УправленческийОбороты.Субконто2 КАК Справочник.ДоговорыКонтрагентов) |
|||
24
pavig
21.08.15
✎
12:48
|
Где
МассивСубконто = Новый Массив; МассивСубконто.Добавить(ПланыВидовХарактеристик.ВидСубконтоХозрасчетные.Договоры); Всё. |
|||
25
pavig
21.08.15
✎
12:49
|
А ещё лучше будет сделать два разных запроса с конструкцией ОБЪЕДИНИТЬ ВСЁ, где в одном запросе в условии &СуммаВРублях, во втором НЕ &СуммаВРублях
|
|||
26
pavig
21.08.15
✎
12:51
|
А ну да кстати в основном запросе МассивСубконто конечно надо было добавить субконтоКонтрагенты
Это я чет погорячился |
|||
27
pavig
21.08.15
✎
12:52
|
ВЫБРАТЬ
УправленческийОбороты.Регистратор, СУММА(ВЫБОР КОГДА &суммаврублях ТОГДА УправленческийОбороты.СуммаРеглОборот ИНАЧЕ УправленческийОбороты.СуммаОборот КОНЕЦ) КАК СуммаОборот, ВЫРАЗИТЬ(УправленческийОбороты.Субконто2 КАК Справочник.Контрагенты) КАК Контрагент, ВЫРАЗИТЬ(УправленческийОбороты.Субконто1 КАК Справочник.ДоговорыКонтрагентов) КАК Договор ПОМЕСТИТЬ ВсеДоки ИЗ РегистрБухгалтерии.Управленческий.Обороты( , &ДатаСреза, Регистратор, Счет = &счет, &МассивСубконтоДоговорыКонтрагенты, Субконто1 в ( ВЫБРАТЬ РАЗЛИЧНЫЕ УправленческийОстатки.Субконто1 КАК Договор ИЗ РегистрБухгалтерии.Управленческий.Остатки(&ДатаСреза, Счет = &Счет, &МассивСубконтоТолькоДоговоры, ) КАК УправленческийОстатки ГДЕ ВЫБОР КОГДА &суммаврублях ТОГДА УправленческийОстатки.СуммаРеглОстаток <> 0 ИНАЧЕ УправленческийОстатки.СуммаОстаток <> 0 КОНЕЦ ) , , ) КАК УправленческийОбороты СГРУППИРОВАТЬ ПО УправленческийОбороты.Регистратор, ВЫРАЗИТЬ(УправленческийОбороты.Субконто1 КАК Справочник.Контрагенты), ВЫРАЗИТЬ(УправленческийОбороты.Субконто2 КАК Справочник.ДоговорыКонтрагентов) |
|||
28
sash-ml
21.08.15
✎
13:00
|
(23) да... выборка в выборке конечно тормозить будет
|
|||
29
DomanM
21.08.15
✎
14:22
|
(27) первый пакет потом еще пригодится...
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |