|
Кривой запрос долго работает | ☑ | ||
---|---|---|---|---|
0
Lansi
27.02.13
✎
07:46
|
Уважаемые формучане помогите пожалуйста делаю внешную печатную форму для конфигурации БГУ документ измещение.
Суть в том что в документе извещения содержится таблица документов (передачи, списания) из которых обращаясь к регистру бухгалтерии ЕПСБУ получаю нужные данные. Сам запрос выглядит так Запрос.Текст = "ВЫБРАТЬ | ЕПСБУ.Регистратор КАК ДокументОснование, | ЕПСБУ.Баланс, | ЕПСБУ.КВД КАК КВД, | ЕПСБУ.СчетДт КАК СчетДебета, | ЕПСБУ.КБКДт КАК КБКСчетДебета, | ЕПСБУ.СубконтоДт1 КАК КОСГУСчетДебета, | ВЫБОР | КОГДА ПОДСТРОКА(ЕПСБУ.СчетКт.Код, 1, 6) = ""304.04"" | ТОГДА ЕПСБУ.СубконтоДт2 | ИНАЧЕ ЕПСБУ.СубконтоКт2 | КОНЕЦ КАК ПердаваемыйАктив, | ЕПСБУ.СчетКт КАК СчетКредита, | ЕПСБУ.КБККт КАК КБКСчетКредита, | ЕПСБУ.СубконтоКт1 КАК КОСГУСчетКредита, | ВЫБОР | КОГДА ПОДСТРОКА(ЕПСБУ.СчетДт.Код, 1, 6) = ""304.04"" | ТОГДА ЕПСБУ.СубконтоДт2 | ИНАЧЕ ЕПСБУ.СубконтоКт2 | КОНЕЦ КАК Контрагент, | ЕПСБУ.КоличествоКт КАК КоличествоКт, | ЕПСБУ.Содержание, | ЕПСБУ.Сумма КАК Сумма |ПОМЕСТИТЬ ВТДанныеДокументаПередачи |ИЗ | Документ.ЦС_Извещение КАК ЦС_Извещение | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрБухгалтерии.ЕПСБУ.ДвиженияССубконто КАК ЕПСБУ | ПО ЦС_Извещение.СоставДокументов.ДокументПередачи = ЕПСБУ.Регистратор |ГДЕ | ЦС_Извещение.Ссылка = &Извещение;"; дальше идет формирование итогов и по сути не важно. Важно то что именно эта часть запроса дико тормозит сам запрос обрабатывается примерно 30 секунд. Подскажите пожалуйста что можно сделать чтобы оптимизировать поиск нужных данных. |
|||
1
Wobland
27.02.13
✎
07:56
|
заменить ПОДСТРОКА(ЕПСБУ.СчетКт.Код, 1, 6) на ЗНАЧЕНИЕ(ПланСчетов...)
|
|||
2
Галахад
гуру
27.02.13
✎
07:57
|
(1) Как вариант. Запрос в цикле. :-) С ограничением виртуальной таблицы на момент времени.
|
|||
3
Feunoir
27.02.13
✎
08:16
|
ПО ЦС_Извещение.СоставДокументов.ДокументПередачи = ЕПСБУ.Регистратор
Не нравится мне такое условие связи. Может стоит дополнительную временную таблицу прикрутить? |
|||
4
Gesperid
27.02.13
✎
08:19
|
Нужно резать ДвиженияССубконто
|
|||
5
el-gamberro
27.02.13
✎
08:47
|
ГДЕ ЕПСБУ.Регистратор Ссылка Документ.Извещение
ну должно побыстрее работать, а аще профайлер в руки вперед |
|||
6
Fragster
гуру
27.02.13
✎
08:55
|
а зачем тут вообще соединение?
|
|||
7
Lansi
27.02.13
✎
08:56
|
(5) это работать не будет т.к. в ЕПСБУ.Регистратор Ссылка нет документа Извещение. В документе извещение есть документы передачи (списания) и вот они делают движения в ЕПСБУ. Само заявление движений не делает.
|
|||
8
Fragster
гуру
27.02.13
✎
08:57
|
ГДЕ ЕПСБУ.Регистратор в (Выбрать ЦС_Извещение.СоставДокументов.ДокументПередачи Из Документ.ЦС_Извещение КАК ЦС_Извещение ГДЕ ЦС_Извещение.Ссылка = &Извещение)
|
|||
9
Fragster
гуру
27.02.13
✎
08:57
|
Из Документ.ЦС_Извещение.СоставДокументов
|
|||
10
Fragster
гуру
27.02.13
✎
08:58
|
Выбрать СоставДокументов.ДокументПередачи Из Документ.ЦС_Извещение.СоставДокументов КАК СоставДокументов ГДЕ СоставДокументов.Ссылка = &Извещение
|
|||
11
Fragster
гуру
27.02.13
✎
08:58
|
короче не надо через точку табличные части прибивать
|
|||
12
zak555
27.02.13
✎
08:59
|
запрос по виртуальной таблице РБ
|
|||
13
Lansi
27.02.13
✎
09:00
|
(11) Напишите пожалуйста итоговый код в одном сообщении, а то я честно говоря задумку не могу понять.
|
|||
14
olegves
27.02.13
✎
09:02
|
(0) для начала замени подстрока на ВЫРАЗИТЬ...КАК Строка(6)
а затем уж и профайлер + план запроса |
|||
15
Lansi
27.02.13
✎
09:04
|
Я начинающий программист терминологии не знаю что такое профайлер?
|
|||
16
olegves
27.02.13
✎
09:05
|
(15) гугли
|
|||
17
Галахад
гуру
27.02.13
✎
09:06
|
(0) Документов-то много? В "таблице документов"
|
|||
18
H A D G E H O G s
27.02.13
✎
09:06
|
(16) Материмся?
|
|||
19
H A D G E H O G s
27.02.13
✎
09:09
|
Я бы сначало выбрал бы движения с субконто с фильтром как в (10) во временную, а потом бы уже делал всякие
странные вещи типа: ПОДСТРОКА(ЕПСБУ.СчетКт.Код, 1, 6) |
|||
20
olegves
27.02.13
✎
09:09
|
+ (14) а вообще условие по документу надо бы в параметры виртуальной таблицы убрать, тада полегчает
|
|||
21
Lansi
27.02.13
✎
09:10
|
(17) даже с одним документом длительность секунд 30, обычно документ 1 в извещении редко больше.
|
|||
22
tdm
27.02.13
✎
09:10
|
(20) +100500!
|
|||
23
H A D G E H O G s
27.02.13
✎
09:11
|
Да, кстати, там же есть параметры ВТ - туда и втыкай!
|
|||
24
tdm
27.02.13
✎
09:13
|
(21) соединение не нужно - отбор по документу в параметры виртуальной таблицы засуньте)
(13)>>Напишите пожалуйста итоговый код в одном сообщении звучит как - "сделайте забесплатна за меня, мне думать неохото" =) если вы начинающий тем более полезно самому разобраться) |
|||
25
H A D G E H O G s
27.02.13
✎
09:14
|
(24) +500
В свете того, что конфа нетиповая |
|||
26
Галахад
гуру
27.02.13
✎
09:14
|
(21) Тогда (2)
Цикл по документам ИЗ РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто(&НачДата, &КонДата, , , ) КАК ХозрасчетныйДвиженияССубконто где НачДата = КонДата = Датадокумента. |
|||
27
tdm
27.02.13
✎
09:15
|
(25) да прост задачка несложная, идей накидали) на таких и учиться...
|
|||
28
Lansi
27.02.13
✎
09:44
|
(26) Вот за это спасибо, все получилось даже не подумал регистр по дате ограничить.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |