|
Оптимизировать запрос | ☑ | ||
---|---|---|---|---|
0
John83
01.08.11
✎
10:02
|
Взял кусок из анализа заказов покупателей.
Только по одной группе складов отрабатывает порядка 50 сек., дальше нужно будет объединить с другой группой складов и с остатками товаров. Можно ли тут еще что-то сделать? ВЫБРАТЬ ВложенныйЗапрос.Номенклатура КАК Номенклатура, СУММА(ВложенныйЗапрос.ОсталосьОтгрузить) КАК ОсталосьОтгрузить ИЗ (ВЫБРАТЬ ЗаказыПокупателейОстаткиИОбороты.Номенклатура КАК Номенклатура, СУММА(ЗаказыПокупателейОстаткиИОбороты.КоличествоКонечныйОстаток) КАК ОсталосьОтгрузить ИЗ РегистрНакопления.ЗаказыПокупателей.ОстаткиИОбороты( &ДатаНач, &ДатаКон, , , ЗаказПокупателя ССЫЛКА Документ.ЗаказПокупателя И ЗаказПокупателя.СкладГруппа В ИЕРАРХИИ (&ЗаказМСК)) КАК ЗаказыПокупателейОстаткиИОбороты ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ЗаказыПокупателей.ОстаткиИОбороты(&ДатаНач, &ДатаКон, , , ЗаказПокупателя ССЫЛКА Документ.ЗаказПокупателя) КАК СводЗаказыПокупателейОстаткиИОбороты ПО ЗаказыПокупателейОстаткиИОбороты.ЗаказПокупателя = СводЗаказыПокупателейОстаткиИОбороты.ЗаказПокупателя ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов ПО ЗаказыПокупателейОстаткиИОбороты.Номенклатура = ЗначенияСвойствОбъектов.Объект И (ЗначенияСвойствОбъектов.Свойство = &Свойство) И (ЗначенияСвойствОбъектов.Значение В (&ЗначенияСвойств)) ГДЕ ЕСТЬNULL(СводЗаказыПокупателейОстаткиИОбороты.КоличествоКонечныйОстаток, 0) > 0 СГРУППИРОВАТЬ ПО ЗаказыПокупателейОстаткиИОбороты.Номенклатура) КАК ВложенныйЗапрос СГРУППИРОВАТЬ ПО ВложенныйЗапрос.Номенклатура УПОРЯДОЧИТЬ ПО Номенклатура АВТОУПОРЯДОЧИВАНИЕ |
|||
1
MikleV
01.08.11
✎
10:05
|
попробуй убрать соединение
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов ПО ЗаказыПокупателейОстаткиИОбороты.Номенклатура = ЗначенияСвойствОбъектов.Объект И (ЗначенияСвойствОбъектов.Свойство = &Свойство) И (ЗначенияСвойствОбъектов.Значение В (&ЗначенияСвойств)) |
|||
2
MikleV
01.08.11
✎
10:06
|
если проблема - в нем, вместо свойств завести реквизиты у номенклатуры
сам запрос не смотрел, опиши по логике что должно быть в итоге и напиши, какая конфигурация |
|||
3
rs_trade
01.08.11
✎
10:06
|
(0) план запроса смотрел?
|
|||
4
MadHead
01.08.11
✎
10:09
|
Не увидел где используются обороты регистра СводЗаказыПокупателейОстаткиИОбороты
|
|||
5
Axel2009
01.08.11
✎
10:09
|
ВЫБРАТЬ
ЗаказыПокупателейОстаткиИОбороты.Номенклатура КАК Номенклатура, СУММА(ЗаказыПокупателейОстаткиИОбороты.КоличествоКонечныйОстаток) КАК ОсталосьОтгрузить ИЗ РегистрНакопления.ЗаказыПокупателей.ОстаткиИОбороты( &ДатаНач, &ДатаКон, , , ЗаказПокупателя ССЫЛКА Документ.ЗаказПокупателя) КАК ЗаказыПокупателейОстаткиИОбороты |
|||
6
Axel2009
01.08.11
✎
10:09
|
скока выполняется?
|
|||
7
Axel2009
01.08.11
✎
10:09
|
(4) в ГДЕ
|
|||
8
Axel2009
01.08.11
✎
10:10
|
в любом случае это
ЗаказПокупателя.СкладГруппа В ИЕРАРХИИ (&ЗаказМСК) заменить на ВЫРАЗИТЬ(ЗаказПокупателя КАК Документ.ЗаказПокупателя ).СкладГруппа В ИЕРАРХИИ (&ЗаказМСК) |
|||
9
MadHead
01.08.11
✎
10:12
|
(7) Там остатки
|
|||
10
Axel2009
01.08.11
✎
10:14
|
(9) да вообще везде остатки конечные
|
|||
11
MikleV
01.08.11
✎
10:14
|
это вот это что ли?
ЕСТЬNULL(СводЗаказыПокупателейОстаткиИОбороты.КоличествоКонечныйОстаток, 0) > 0 так оно эквивалентно внутреннему джойну |
|||
12
Axel2009
01.08.11
✎
10:15
|
(11) а если меньше 0?
|
|||
13
MikleV
01.08.11
✎
10:22
|
(12) а, ну да
ошибся я |
|||
14
Широкий
01.08.11
✎
10:22
|
ВЫБРАТЬ
ЗаказыПокупателейОстаткиИОбороты.Номенклатура КАК Номенклатура, ЗаказыПокупателейОстаткиИОбороты.КоличествоКонечныйОстаток КАК ОсталосьОтгрузить ИЗ РегистрНакопления.ЗаказыПокупателей.ОстаткиИОбороты( &ДатаНач, &ДатаКон, , , ЗаказПокупателя.СкладГруппа В ИЕРАРХИИ (&ЗаказМСК) И Номенклатура В (ВЫБРАТЬ ЗначенияСвойствОбъектов.Объект ИЗ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов ГДЕ ЗначенияСвойствОбъектов.Свойство = &Свойство И ЗначенияСвойствОбъектов.Значение В (&ЗначенияСвойств)) И ЗаказПокупателя В (ВЫБРАТЬ СводЗаказыПокупателейОстаткиИОбороты.ЗаказПокупателя ИЗ РегистрНакопления.ЗаказыПокупателей.ОстаткиИОбороты(&ДатаНач, &ДатаКон, , , ЗаказПокупателя ССЫЛКА Документ.ЗаказПокупателя) КАК СводЗаказыПокупателейОстаткиИОбороты ГДЕ СводЗаказыПокупателейОстаткиИОбороты.КоличествоКонечныйОстаток > 0)) КАК ЗаказыПокупателейОстаткиИОбороты |
|||
15
John83
01.08.11
✎
10:25
|
(12) звиняюсь за глупый вопрос, а что будет если < 0?
|
|||
16
Широкий
01.08.11
✎
10:26
|
(8) Бред
"ЗаказПокупателя" не составного типа |
|||
17
Широкий
01.08.11
✎
10:28
|
+16 Хотя "ЗаказПокупателя ССЫЛКА Документ.ЗаказПокупателя"
Автор. Реквизит "ЗаказПокупателя" тип составной? |
|||
18
Axel2009
01.08.11
✎
10:28
|
(15) не парься, это к теме не относится
почему нельзя использовать Остатки? |
|||
19
rs_trade
01.08.11
✎
10:29
|
мне вот интересно, как можно пытаться оптимизировать запрос, даже не зная как он выполняется. все играют в угадайку.
|
|||
20
John83
01.08.11
✎
10:30
|
(17) да
ДокументСсылка.ЗаказПоставщику, ДокументСсылка.ЗаказПокупателя |
|||
21
Широкий
01.08.11
✎
10:30
|
(20) Ну значит в (8) верно
|
|||
22
Широкий
01.08.11
✎
10:30
|
РегистрНакопления.ЗаказыПокупателей.ОстаткиИОбороты
На самом деле .. почему не остатки на ДатаКон? |
|||
23
Axel2009
01.08.11
✎
10:31
|
(19) кто он выполняется? если запрос вернет теже данные что и исходный, тогда без разницы что он должен делать
|
|||
24
John83
01.08.11
✎
10:32
|
(22) в принципе да, надо остатки попробовать запихнуть, только вот дождусь, пока (8) выполнится :)
|
|||
25
Axel2009
01.08.11
✎
10:35
|
(24) да руби ты это неблагодарное дело...
|
|||
26
Широкий
01.08.11
✎
10:36
|
ВЫБРАТЬ
ЗаказыПокупателейОстатки.Номенклатура КАК Номенклатура, ЗаказыПокупателейОстатки.КоличествоОстаток КАК ОсталосьОтгрузить ИЗ РегистрНакопления.ЗаказыПокупателей.Остатки( &ДатаКон, ВЫРАЗИТЬ(ЗаказПокупателя КАК Документ.ЗаказПокупателя).СкладГруппа В ИЕРАРХИИ (&ЗаказМСК) И ЗаказПокупателя ССЫЛКА Документ.ЗаказПокупателя И Номенклатура В (ВЫБРАТЬ ЗначенияСвойствОбъектов.Объект ИЗ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов ГДЕ ЗначенияСвойствОбъектов.Свойство = &Свойство И ЗначенияСвойствОбъектов.Значение В (&ЗначенияСвойств))) КАК ЗаказыПокупателейОстатки ГДЕ ЗаказыПокупателейОстатки.КоличествоОстаток > 0 |
|||
27
Широкий
01.08.11
✎
10:36
|
Походу вот так будет :)
|
|||
28
Широкий
01.08.11
✎
10:37
|
Свод заказов забыл :)
ВЫБРАТЬ ЗаказыПокупателейОстатки.Номенклатура КАК Номенклатура, ЗаказыПокупателейОстатки.КоличествоОстаток КАК ОсталосьОтгрузить ИЗ РегистрНакопления.ЗаказыПокупателей.Остатки( &ДатаКон, ВЫРАЗИТЬ(ЗаказПокупателя КАК Документ.ЗаказПокупателя).СкладГруппа В ИЕРАРХИИ (&ЗаказМСК) И ЗаказПокупателя ССЫЛКА Документ.ЗаказПокупателя И Номенклатура В (ВЫБРАТЬ ЗначенияСвойствОбъектов.Объект ИЗ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов ГДЕ ЗначенияСвойствОбъектов.Свойство = &Свойство И ЗначенияСвойствОбъектов.Значение В (&ЗначенияСвойств)) И ЗаказПокупателя В (ВЫБРАТЬ СводЗаказыПокупателейОстаткиИОбороты.ЗаказПокупателя ИЗ РегистрНакопления.ЗаказыПокупателей.ОстаткиИОбороты(&ДатаНач, &ДатаКон, , , ЗаказПокупателя ССЫЛКА Документ.ЗаказПокупателя) КАК СводЗаказыПокупателейОстаткиИОбороты ГДЕ СводЗаказыПокупателейОстаткиИОбороты.КоличествоКонечныйОстаток > 0)) КАК ЗаказыПокупателейОстатки |
|||
29
Axel2009
01.08.11
✎
10:37
|
(28) свод заказов забыл в остатки
|
|||
30
Широкий
01.08.11
✎
10:38
|
Да блин
ВЫБРАТЬ ЗаказыПокупателейОстатки.Номенклатура КАК Номенклатура, ЗаказыПокупателейОстатки.КоличествоОстаток КАК ОсталосьОтгрузить ИЗ РегистрНакопления.ЗаказыПокупателей.Остатки( &ДатаКон, ВЫРАЗИТЬ(ЗаказПокупателя КАК Документ.ЗаказПокупателя).СкладГруппа В ИЕРАРХИИ (&ЗаказМСК) И ЗаказПокупателя ССЫЛКА Документ.ЗаказПокупателя И Номенклатура В (ВЫБРАТЬ ЗначенияСвойствОбъектов.Объект ИЗ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов ГДЕ ЗначенияСвойствОбъектов.Свойство = &Свойство И ЗначенияСвойствОбъектов.Значение В (&ЗначенияСвойств)) И ЗаказПокупателя В (ВЫБРАТЬ СводЗаказыПокупателейОстатки.ЗаказПокупателя ИЗ РегистрНакопления.ЗаказыПокупателей.Остатки(&ДатаКон, ЗаказПокупателя ССЫЛКА Документ.ЗаказПокупателя) КАК СводЗаказыПокупателейОстатки ГДЕ СводЗаказыПокупателейОстатки.КоличествоОстаток > 0)) КАК ЗаказыПокупателейОстатки |
|||
31
MikleV
01.08.11
✎
10:39
|
это тоже убрать:
И Номенклатура В (ВЫБРАТЬ ЗначенияСвойствОбъектов.Объект ИЗ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов ГДЕ ЗначенияСвойствОбъектов.Свойство = &Свойство И ЗначенияСвойствОбъектов.Значение В (&ЗначенияСвойств) |
|||
32
Axel2009
01.08.11
✎
10:40
|
ну и ДатаКон использовать Граница.Включая. либо ДатаКон+1 устанавливать запрос
|
|||
33
MikleV
01.08.11
✎
10:40
|
переделать на ВТ с номенклатурой, определенную заранее
|
|||
34
Axel2009
01.08.11
✎
10:41
|
(33) это без разницы. даже сказал бы что затраты на создание временных таблиц съест все и будет медленнее =)
|
|||
35
Широкий
01.08.11
✎
10:44
|
(31) Почему?
|
|||
36
John83
01.08.11
✎
10:44
|
с общей помощью снизил время до 6 сек.
Вот только так и не понял, почему нельзя использовать просто ГДЕ ЕСТЬNULL(ЗаказыПокупателейОстатки.КоличествоОстаток, 0) > 0 , т.е. без свода ?? |
|||
37
Широкий
01.08.11
✎
10:45
|
(36) см 30
|
|||
38
MikleV
01.08.11
✎
10:50
|
(35) потому что не рекомендуется так делать
почему не рекомендуется - может быть выбран неоптимальный план запроса. |
|||
39
MikleV
01.08.11
✎
10:51
|
(34)это тебе так кажется, замеры на выборках по 100-200 т. записей говорят обратное
|
|||
40
Широкий
01.08.11
✎
10:53
|
(39) Будет неоптимальный план запроса - по скорости будет как с ВТ.
Я лично не юзаю т.к. не встречал ситуации где с ВТ быстрее |
|||
41
John83
01.08.11
✎
10:55
|
(37) тоже висяк
|
|||
42
MikleV
01.08.11
✎
10:55
|
(40) это неверное мнение
|
|||
43
MikleV
01.08.11
✎
10:56
|
дело не в быстроте, а в устранении возможной ошибки исполнения неоптимального запроса
|
|||
44
Широкий
01.08.11
✎
10:57
|
(43) Вот смотрю я УПП .. там повсеместно юзается это идеология..
А все же хочется как побыстрее |
|||
45
MikleV
01.08.11
✎
10:58
|
+ сами по себе условия В& при построении ВТ с количеством записей подзапроса В(Подзапрос) более 200-300 - плохой прием.
|
|||
46
MikleV
01.08.11
✎
10:59
|
ВТ = виртуальная таблица, да
|
|||
47
Широкий
01.08.11
✎
11:00
|
(45) Обоснуй
|
|||
48
Широкий
01.08.11
✎
11:02
|
(41) Наскока висяк?
|
|||
49
John83
01.08.11
✎
11:05
|
(48) полный - так и висит
наверное вот тут затык И ЗаказПокупателя В (ВЫБРАТЬ СводЗаказыПокупателейОстатки.ЗаказПокупателя ИЗ РегистрНакопления.ЗаказыПокупателей.Остатки(&ДатаКон, ЗаказПокупателя ССЫЛКА Документ.ЗаказПокупателя) КАК СводЗаказыПокупателейОстатки ГДЕ СводЗаказыПокупателейОстатки.КоличествоОстаток > 0)) КАК ЗаказыПокупателейОстатки |
|||
50
MikleV
01.08.11
✎
11:08
|
(47) почему так, а не иначе?
следствие медленной работы В& в общем случае. тут возможны варианты. например, фильтр по индексированной колонке будет быстрее отрабатывать и падение скорости выполнения запроса будет не так заметно. |
|||
51
Широкий
01.08.11
✎
11:11
|
(50) Или падения скорости не будет и будет наоборот медленнее? :)
(49) Ну попробуй , как советует MikleV, вынести это в ВТ |
|||
52
Axel2009
01.08.11
✎
11:12
|
(39) мои выборы данных показывают обратное как правило. в любом случае каждый запрос необходимо рассматривать индивидуально. в данном случае я сделал свой вывод просто: у РС ЗначенияСвойствОбъектов есть кластерный индекс по полям Объект/Свойство. при сравнивании номенклатуры мы как раз и выбираем 1 поле Объект, что равносильно выборке по кластерному ключу, поэтому помещение в ВТ этой выборки и навес индекса может снизить общую выборку как раз на создание этого индекса.
|
|||
53
Широкий
01.08.11
✎
11:14
|
ВЫБРАТЬ РАЗЛИЧНЫЕ
СводЗаказыПокупателейОстатки.ЗаказПокупателя ПОМЕСТИТЬ СводЗаказыПокупателейОстатки ИЗ РегистрНакопления.ЗаказыПокупателей.Остатки(&ДатаКон, ЗаказПокупателя ССЫЛКА Документ.ЗаказПокупателя) КАК СводЗаказыПокупателейОстатки ГДЕ СводЗаказыПокупателейОстатки.КоличествоОстаток > 0 ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ЗаказыПокупателейОстатки.Номенклатура КАК Номенклатура, ЗаказыПокупателейОстатки.КоличествоОстаток КАК ОсталосьОтгрузить ИЗ РегистрНакопления.ЗаказыПокупателей.Остатки( &ДатаКон, ВЫРАЗИТЬ(ЗаказПокупателя КАК Документ.ЗаказПокупателя).СкладГруппа В ИЕРАРХИИ (&ЗаказМСК) И ЗаказПокупателя ССЫЛКА Документ.ЗаказПокупателя И Номенклатура В (ВЫБРАТЬ ЗначенияСвойствОбъектов.Объект ИЗ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов ГДЕ ЗначенияСвойствОбъектов.Свойство = &Свойство И ЗначенияСвойствОбъектов.Значение В (&ЗначенияСвойств)) И ЗаказПокупателя В (ВЫБРАТЬ СводЗаказыПокупателейОстатки.ЗаказПокупателя ИЗ СводЗаказыПокупателейОстатки КАК СводЗаказыПокупателейОстатки)) КАК ЗаказыПокупателейОстатки ; //////////////////////////////////////////////////////////////////////////////// УНИЧТОЖИТЬ СводЗаказыПокупателейОстатки |
|||
54
Axel2009
01.08.11
✎
11:15
|
(50) более того могу сказать по своему опыту работы со скулем, условие
Номенклатура В (ВЫБРАТЬ ЗначенияСвойствОбъектов.Объект ИЗ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов ГДЕ ЗначенияСвойствОбъектов.Свойство = &Свойство И ЗначенияСвойствОбъектов.Значение В (&ЗначенияСвойств)) может свалиться в условие не джоина таблиц, а условия ИЛИ, и тогда ваш запрос умрет прежде чем выполнится. |
|||
55
Axel2009
01.08.11
✎
11:17
|
(54) естественно я имел ввиду общий случай этого условия, конкретно использование "В"
|
|||
56
dmpl
01.08.11
✎
11:17
|
(0) И что - правильно работает, если в заказах более 1 позиции номенклатуры?
|
|||
57
Широкий
01.08.11
✎
11:21
|
И вот так еще попробуй
ВЫБРАТЬ ЗаказыПокупателейОстатки.Номенклатура КАК Номенклатура, ЗаказыПокупателейОстатки.КоличествоОстаток КАК ОсталосьОтгрузить ИЗ РегистрНакопления.ЗаказыПокупателей.Остатки( &ДатаКон, ВЫРАЗИТЬ(ЗаказПокупателя КАК Документ.ЗаказПокупателя).СкладГруппа В ИЕРАРХИИ (&ЗаказМСК) И ЗаказПокупателя ССЫЛКА Документ.ЗаказПокупателя И Номенклатура В (ВЫБРАТЬ ЗначенияСвойствОбъектов.Объект ИЗ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов ГДЕ ЗначенияСвойствОбъектов.Свойство = &Свойство И ЗначенияСвойствОбъектов.Значение В (&ЗначенияСвойств)) И ЗаказПокупателя В (ВЫБРАТЬ ВЫРАЗИТЬ(СводЗаказыПокупателейОстатки.ЗаказПокупателя КАК Документ.ЗаказПокупателя) КАК ЗаказПокупателя ИЗ РегистрНакопления.ЗаказыПокупателей.Остатки(&ДатаКон, ЗаказПокупателя ССЫЛКА Документ.ЗаказПокупателя) КАК СводЗаказыПокупателейОстатки ГДЕ СводЗаказыПокупателейОстатки.КоличествоОстаток > 0)) КАК ЗаказыПокупателейОстатки |
|||
58
MikleV
01.08.11
✎
11:22
|
(52) может быть.
т.е. да, может быть свалится (54) это не мой запрос-) я не очень понимаю, зачем в подзапросе условие на ненулевые остатки, их можно потом отсечь, ну т.е. ВЫБРАТЬ ЗначенияСвойствОбъектов.Объект ПОМЕСТИТЬ Т ИЗ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов ГДЕ ЗначенияСвойствОбъектов.Свойство = &Свойство И ЗначенияСвойствОбъектов.Значение В (&ЗначенияСвойств)) ; И ЗаказПокупателя ССЫЛКА Документ.ЗаказПокупателя ВЫБРАТЬ ЗаказыПокупателейОстатки.Номенклатура КАК Номенклатура, ЗаказыПокупателейОстатки.КоличествоОстаток КАК ОсталосьОтгрузить ИЗ РегистрНакопления.ЗаказыПокупателей.Остатки( &ДатаКон, ВЫРАЗИТЬ(ЗаказПокупателя КАК Документ.ЗаказПокупателя).СкладГруппа В ИЕРАРХИИ (&ЗаказМСК) И ЗаказПокупателя ССЫЛКА Документ.ЗаказПокупателя И Номенклатура В (ВЫБРАТЬ Т.Объект ИЗ Т КАК Т) ) КАК ЗаказыПокупателейОстатки ГДЕ ЗаказыПокупателейОстатки.КоличествоОстаток > 0 |
|||
59
Axel2009
01.08.11
✎
11:24
|
(58) по логике: чтобы те заказы по которым отрицательное количество не минусовали количество, которое осталось отгрузить..
|
|||
60
Широкий
01.08.11
✎
11:24
|
(58) Остаток у свода заказов проверяется
|
|||
61
John83
01.08.11
✎
11:33
|
(57) первый рабочий вариант - 2.5 сек :)
|
|||
62
Axel2009
01.08.11
✎
11:35
|
(61) я только не могу найти случаев, где могут быть пересечения в заказах покупателей по определенному складу..
|
|||
63
John83
01.08.11
✎
11:36
|
(62) ну хз... я ж говорю, что взял кусок запроса из типового отчета (УПП)
|
|||
64
John83
01.08.11
✎
11:37
|
(57) что-то не пойму - все дело было в ВЫРАЗИТЬ?
|
|||
65
Широкий
01.08.11
✎
11:37
|
(61) Ну значит пропустили приведение составного типа.. а знчет и без индекса остались
|
|||
66
Fragster
гуру
01.08.11
✎
11:39
|
было про развернуть "В Иерархии" в плоскую таблицу?
|
|||
67
Axel2009
01.08.11
✎
11:40
|
ВЫБРАТЬ
ЗаказыПокупателейОстатки.Номенклатура КАК Номенклатура, ЗаказыПокупателейОстатки.КоличествоОстаток КАК ОсталосьОтгрузить ИЗ РегистрНакопления.ЗаказыПокупателей.Остатки( &ДатаКон, ВЫРАЗИТЬ(ЗаказПокупателя КАК Документ.ЗаказПокупателя).СкладГруппа В ИЕРАРХИИ (&ЗаказМСК) И ЗаказПокупателя ССЫЛКА Документ.ЗаказПокупателя И Номенклатура В (ВЫБРАТЬ ЗначенияСвойствОбъектов.Объект ИЗ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов ГДЕ ЗначенияСвойствОбъектов.Свойство = &Свойство И ЗначенияСвойствОбъектов.Значение В (&ЗначенияСвойств)) И ЗаказПокупателя В (ВЫБРАТЬ ВЫРАЗИТЬ(СводЗаказыПокупателейОстатки.ЗаказПокупателя КАК Документ.ЗаказПокупателя) КАК ЗаказПокупателя ИЗ РегистрНакопления.ЗаказыПокупателей.Остатки(&ДатаКон, ЗаказПокупателя ССЫЛКА Документ.ЗаказПокупателя И ВЫРАЗИТЬ(ЗаказПокупателя КАК Документ.ЗаказПокупателя).СкладГруппа В ИЕРАРХИИ (&ЗаказМСК)) КАК СводЗаказыПокупателейОстатки ГДЕ СводЗаказыПокупателейОстатки.КоличествоОстаток > 0)) КАК ЗаказыПокупателейОстатки |
|||
68
Fragster
гуру
01.08.11
✎
11:41
|
ну и опять же соединение виртуально таблицы регистра самой с собой непонятно зачем
|
|||
69
Широкий
01.08.11
✎
11:42
|
(67) Не думаю что быстрее будет.. ты добавил еще одно соединение.. и к тому же В ИЕРАРХИИ
(68) Регистры разные . внимательно посмотри |
|||
70
Широкий
01.08.11
✎
11:43
|
(68) Блин.. а он прав
|
|||
71
Широкий
01.08.11
✎
11:46
|
или в типовой регистр по хитрому строеен?
|
|||
72
John83
01.08.11
✎
11:49
|
(68)(70) но тем не менее, если убрать второй регистр, то данные несколько неправильно выводятся - почему уж не знаю
|
|||
73
Axel2009
01.08.11
✎
11:51
|
(72) вообще если следовать логике смотрим что у нас получается
есть ЗП1 Н1 +50 Н2 -49 ЗП2 Н2 +100 первый запрос вернет данные Н1 +50 Н2 +51 насколько это корректно, что нам осталось отгрузить именно 51 штуку, а не 100? |
|||
74
Широкий
01.08.11
✎
11:51
|
(72) Допер. Нулевые позиции чтобы отображались
|
|||
75
John83
01.08.11
✎
12:10
|
(74) в том-то и дело, что позиции те же выводятся, но в некоторых неправильный остаток
|
|||
76
Axel2009
01.08.11
✎
13:56
|
(75) можно так попробовать
ВЫБРАТЬ ЗаказыПокупателейОстатки.ЗаказПокупателя КАК ЗаказПокупателя, ЗаказыПокупателейОстатки.Номенклатура КАК Номенклатура, ЗаказыПокупателейОстатки.КоличествоОстаток КАК ОсталосьОтгрузить ПОМЕСТИТЬ ОстаткиЗаказов ИЗ РегистрНакопления.ЗаказыПокупателей.Остатки( &ДатаКон, ВЫРАЗИТЬ(ЗаказПокупателя КАК Документ.ЗаказПокупателя).СкладГруппа В ИЕРАРХИИ (&ЗаказМСК) И ЗаказПокупателя ССЫЛКА Документ.ЗаказПокупателя) КАК ЗаказыПокупателейОстатки ИНДЕКСИРОВАТЬ ПО Номенклатура, ЗаказПокупателя, ОсталосьОтгрузить ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ОстаткиЗаказов.Номенклатура КАК Номенклатура, СУММА(ОстаткиЗаказов.ОсталосьОтгрузить) КАК ОсталосьОтгрузить ИЗ ОстаткиЗаказов КАК ОстаткиЗаказов ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ ОстаткиЗаказов.ЗаказПокупателя КАК ЗаказПокупателя, СУММА(ОстаткиЗаказов.ОсталосьОтгрузить) КАК ОсталосьОтгрузить ИЗ ОстаткиЗаказов КАК ОстаткиЗаказов СГРУППИРОВАТЬ ПО ОстаткиЗаказов.ЗаказПокупателя ИМЕЮЩИЕ СУММА(ОстаткиЗаказов.ОсталосьОтгрузить) > 0) КАК ОтборЗаказов ПО ОстаткиЗаказов.ЗаказПокупателя = ОтборЗаказов.ЗаказПокупателя СГРУППИРОВАТЬ ПО ОстаткиЗаказов.Номенклатура ИМЕЮЩИЕ СУММА(ОстаткиЗаказов.ОсталосьОтгрузить) <> 0 УПОРЯДОЧИТЬ ПО Номенклатура |
|||
77
John83
01.08.11
✎
16:18
|
(76) спасибо, но уже все сделал на основе варианта (57) - переделывать неохота
|
|||
78
John83
01.08.11
✎
16:18
|
всем большое спасибо за помощь и участие!!!
|
|||
79
MikleV
01.08.11
✎
17:07
|
так чего не работало - из-за составного типа измерения тормоза были или что?
|
|||
80
John83
01.08.11
✎
17:22
|
(79) по-моему все же из-за неоптимальности запроса, получилось, параметры ВТ отрабатывают шустрее соединений
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |