|
Два левых соединения в простом запросе | ☑ | ||
---|---|---|---|---|
0
DJ Anthon
17.11.22
✎
11:02
|
ВЫБРАТЬ
СУММА(ОтчетОРозничныхПродажахТовары.Сумма) КАК Товары_Сумма ИЗ Документ.ОтчетОРозничныхПродажах КАК ОтчетОРозничныхПродажах ЛЕВОЕ СОЕДИНЕНИЕ Документ.ОтчетОРозничныхПродажах.Товары КАК ОтчетОРозничныхПродажахТовары ПО ОтчетОРозничныхПродажахТовары.Ссылка = ОтчетОРозничныхПродажах.Ссылка ЛЕВОЕ СОЕДИНЕНИЕ Документ.ОтчетОРозничныхПродажах.ОплатаПлатежнымиКартами КАК ОтчетОРозничныхПродажахОплатаПлатежнымиКартами ПО ОтчетОРозничныхПродажахОплатаПлатежнымиКартами.Ссылка = ОтчетОРозничныхПродажахТовары.Ссылка СГРУППИРОВАТЬ ПО ОтчетОРозничныхПродажах.Ссылка Если закомментить второе левое соединение, то сумма выдается верная. Если раскомментировать, то удваивается (потому что в документе две строки в табличной части ОплатаПлатежнымиКартами). Надо итоги по двум табличным частям. Как правильно сделать? Через временные таблицы? Или здесь можно что-то исправить? |
|||
1
RomanYS
17.11.22
✎
11:06
|
(0) Я бы объединением делал, если это конечная цель (Надо итоги по двум табличным частям). А если итоги только малая часть возможно проще подготовить ВТ с итогами
|
|||
2
DJ Anthon
17.11.22
✎
11:14
|
конечная цель - список документов с итогами по всем табличным частям
|
|||
3
FIXXXL
17.11.22
✎
11:19
|
(1) +1
|
|||
5
mistеr
17.11.22
✎
11:24
|
(0) Замени соединение на объединение
|
|||
6
DJ Anthon
17.11.22
✎
11:31
|
(1) (3) (5) как? через ОБЪЕДИНИТЬ ВСЕ, что ли? так там разные поля
|
|||
7
DJ Anthon
17.11.22
✎
11:37
|
через временные таблицы получилось, но это слишком громоздко
ВЫБРАТЬ ОтчетОРозничныхПродажах.Ссылка КАК Ссылка ПОМЕСТИТЬ ОтчетОРозничныхПродажах ИЗ Документ.ОтчетОРозничныхПродажах КАК ОтчетОРозничныхПродажах ГДЕ ОтчетОРозничныхПродажах.Проведен И ОтчетОРозничныхПродажах.Дата <= &Дата1 СГРУППИРОВАТЬ ПО ОтчетОРозничныхПродажах.Ссылка; ВЫБРАТЬ ОтчетОРозничныхПродажахТовары.Ссылка, СУММА(ОтчетОРозничныхПродажахТовары.Сумма) КАК Товары_Сумма ПОМЕСТИТЬ ОтчетОРозничныхПродажахТовары ИЗ Документ.ОтчетОРозничныхПродажах.Товары КАК ОтчетОРозничныхПродажахТовары ГДЕ ОтчетОРозничныхПродажахТовары.Ссылка.Проведен И ОтчетОРозничныхПродажахТовары.Ссылка.Дата <= &Дата1 СГРУППИРОВАТЬ ПО ОтчетОРозничныхПродажахТовары.Ссылка; ВЫБРАТЬ ОтчетОРозничныхПродажахОплатаПлатежнымиКартами.Ссылка КАК Ссылка, СУММА(ОтчетОРозничныхПродажахОплатаПлатежнымиКартами.Сумма) КАК ОплатаПлатежнымиКартами_Сумма ПОМЕСТИТЬ ОтчетОРозничныхПродажахОплатаПлатежнымиКартами ИЗ Документ.ОтчетОРозничныхПродажах.ОплатаПлатежнымиКартами КАК ОтчетОРозничныхПродажахОплатаПлатежнымиКартами ГДЕ ОтчетОРозничныхПродажахОплатаПлатежнымиКартами.Ссылка.Проведен И ОтчетОРозничныхПродажахОплатаПлатежнымиКартами.Ссылка.Дата <= &Дата1 СГРУППИРОВАТЬ ПО ОтчетОРозничныхПродажахОплатаПлатежнымиКартами.Ссылка; ВЫБРАТЬ * ИЗ ОтчетОРозничныхПродажах ЛЕВОЕ СОЕДИНЕНИЕ ОтчетОРозничныхПродажахТовары ПО ОтчетОРозничныхПродажахТовары.Ссылка = ОтчетОРозничныхПродажах.Ссылка ЛЕВОЕ СОЕДИНЕНИЕ ОтчетОРозничныхПродажахОплатаПлатежнымиКартами ПО ОтчетОРозничныхПродажахОплатаПлатежнымиКартами.Ссылка = ОтчетОРозничныхПродажах.Ссылка |
|||
8
RomanYS
17.11.22
✎
11:44
|
(6)
выбрать ТЧ1.Ссылка, Сумма(ТЧ1.Сумма) как Итог1 0 как Итог2 ... ОБЪЕДИНИТЬ ВСЕ выбрать ТЧ2, 0 как Итог1, Сумма(ТЧ2.Сумма) как Итог2, ... ... |
|||
9
DJ Anthon
17.11.22
✎
12:01
|
че-то мне это совсем не нравится, запрос я составляю программно. выбирается произвольное число реквизитов из шапки документа, из табличных частей (по которым могут быть итоги) по произвольным видам документов. получается, выборку реквизитов мне надо будет дублировать в каждом подзапросе, чтобы поля совпадали. то есть число реквизитов умножится на число табличных частей. плюс пустые поля от чужих табличных частей. а я хотел, чтобы число строк запроса не умножалось, а складывалось. то есть если для одного документа реквизитов 20, табличных частей 5 по два итога в каждом, я бы хотел примерно 20+5*2=30 строк запроса плюс отборы и группировки, а не (20+5*2)*5=150 строк. ладно, сделаю через временные таблицы, как в (7).
|
|||
10
Said_We
17.11.22
✎
12:09
|
(9) У тебя задача дословно "Надо итоги по двум табличным частям".
Если перефразировать, то необходима сумму по одной табличной части прибавить к сумме другой табличной части и т.д. Если ещё перефразировать, то одну табличную часть сложить с другой табличной частью.... Если ещё перефразировать, то одно множество сложить с другим множеством. Сложение множеств это объединение, а не соединение. А соединение это умножение множеств. Умножение множеств это задачи вида: найти или сопоставить для каждого элемента первого множества элементы из второго множества; сопоставить каждому элементу первого множества элементы и из второго множества и каждому элементу из второго множества сопоставить элементы из первого множества. и т.д. |
|||
11
tesei
17.11.22
✎
12:13
|
(7) В приведённом примере нет ВТ
|
|||
12
Said_We
17.11.22
✎
12:15
|
(11) Есть, но они не нужны.
Примерный алгоритм в (8). Только ещё надо в подзапрос завернуть, сгруппировать и сложить. Но информации в (8) более чем достаточно. |
|||
13
Mihasya
17.11.22
✎
12:35
|
(0) А есть так? (сам не проверял)
"ВЫБРАТЬ | ЕСТЬNULL(ОтчетОРозничныхПродажахОплатаПлатежнымиКартами.Ссылка, ОтчетОРозничныхПродажахТовары.Ссылка) КАК Ссылка, | СУММА(ЕСТЬNULL(ОтчетОРозничныхПродажахОплатаПлатежнымиКартами.Сумма, 0)) КАК СуммаОплаты, | СУММА(ЕСТЬNULL(ОтчетОРозничныхПродажахТовары.Сумма, 0)) КАК СуммаТоваров |ИЗ | Документ.ОтчетОРозничныхПродажах.Товары КАК ОтчетОРозничныхПродажахТовары | ПОЛНОЕ СОЕДИНЕНИЕ Документ.ОтчетОРозничныхПродажах.ОплатаПлатежнымиКартами КАК ОтчетОРозничныхПродажахОплатаПлатежнымиКартами | ПО ОтчетОРозничныхПродажахТовары.Ссылка = ОтчетОРозничныхПродажахОплатаПлатежнымиКартами.Ссылка | И ОтчетОРозничныхПродажахТовары.НомерСтроки = ОтчетОРозничныхПродажахОплатаПлатежнымиКартами.НомерСтроки |ГДЕ | ЕСТЬNULL(ОтчетОРозничныхПродажахОплатаПлатежнымиКартами.Ссылка, ОтчетОРозничныхПродажахТовары.Ссылка) = &Ссылка | |СГРУППИРОВАТЬ ПО | ЕСТЬNULL(ОтчетОРозничныхПродажахОплатаПлатежнымиКартами.Ссылка, ОтчетОРозничныхПродажахТовары.Ссылка)" |
|||
14
Kassern
17.11.22
✎
12:36
|
(0) " Если раскомментировать, то удваивается" -> значит для 1 строчки в левой таблице есть 2 подходящие по связи строчки в правой
|
|||
15
Mihasya
17.11.22
✎
12:43
|
(14) это значит что в в таблице "ОплатаПлатежнымиКартами " две строки, было бы три, утраивалось бы... и т.д. ))
|
|||
16
Kassern
17.11.22
✎
12:46
|
(15) Вот так нужно торговать! Легким движением руки утроили выручку за день)
|
|||
17
DJ Anthon
17.11.22
✎
13:03
|
(10) да не понимаю я смысла все равно. табличная часть - это множество. но мне нужна только одна цифра из множества - итог. итог привязывается к ссылке. вот этот итог я и хочу приклеить к основной таблице с реквизитами по ссылке
|
|||
18
DJ Anthon
17.11.22
✎
13:07
|
(15) да, я понял, как это происходит, но не понимаю, как исправить, не переделывая весь запрос. наверное, надо сделать вложенный запрос, чтобы сначала одна табличная часть свои итоги присоединила, затем вторая.
|
|||
19
DJ Anthon
17.11.22
✎
13:09
|
(13) кажется, номер строки там совсем не нужен
|
|||
20
DJ Anthon
17.11.22
✎
13:10
|
(11) а разве ПОМЕСТИТЬ, это не ВТ? зато запрос работает, как надо. Правда, есть лишние Ссылка1, Ссылка2... но они не мешают
|
|||
21
Kassern
17.11.22
✎
13:34
|
(18) "но не понимаю, как исправить" -> сделать для 1 строчки левой таблицы одну строчку в правой. Это можно добиться путем дополнительных связей, либо предварительной группировки таблицы.
|
|||
22
DJ Anthon
17.11.22
✎
13:41
|
(21) вот, я и хочу понять, как сделать предварительную группировку. судя по всему, это либо вложенный запрос (что не рекомендуется), либо временная таблица. я надеялся, что это можно как-то проще сделать.
спасибо всем |
|||
23
Said_We
17.11.22
✎
14:09
|
(22) Проще и правильнее ответ в (8).
|
|||
24
1Сергей
17.11.22
✎
14:17
|
Объединитьфобия лечится?
|
|||
25
Said_We
17.11.22
✎
14:17
|
(22) "вот, я и хочу понять" - неа не хочешь.
|
|||
26
Mihasya
17.11.22
✎
14:25
|
(19) Перекрестись )))
|
|||
27
DJ Anthon
17.11.22
✎
14:42
|
(24) у меня нет ее, я постоянно ее использую. просто не вижу тут смысла. если будет время, вечером сделаю вариант с объединить и сравню, что будет лучше. может, просто вы меня не так поняли..
|
|||
28
RomanYS
17.11.22
✎
14:46
|
(27) конечно не так. "Итоги по нескольким ТЧ" это же такая многосмысленная фраза....)))
|
|||
29
DJ Anthon
17.11.22
✎
15:49
|
Всё, реализовал. Тем не менее у меня в запросе используется ОБЪЕДИНИТЬ ВСЕ, но для видов документов, а не для табличных частей.
Поэтому доказать вам будет проблематично, ведь я же все-таки использовал объединение ) Думаю, что если я буду еще объединять табличные части, то запрос станет намного больше, а его отладка и читабельность ухудшатся. Вот пример сгенерированного запроса, 1 вид документа, 2 табличные части по одному итогу в каждой //ОтчетОРозничныхПродажах ВЫБРАТЬ ОтчетОРозничныхПродажах.Проведен КАК Проведен, ОтчетОРозничныхПродажах.ПометкаУдаления КАК ПометкаУдаления, ОтчетОРозничныхПродажах.Дата КАК Дата, ОтчетОРозничныхПродажах.Дата КАК Дата_, ОтчетОРозничныхПродажах.Номер КАК Номер, "Отчет о розничных продажах" КАК __, ОтчетОРозничныхПродажах.СуммаДокумента КАК СуммаДокумента, ОтчетОРозничныхПродажах.СуммаВозвратов КАК СуммаВозвратов, ОтчетОРозничныхПродажах.Магазин КАК Магазин, ОтчетОРозничныхПродажах.СуммаОплатыНаличных КАК СуммаОплатыНаличных, "" КАК _, ОтчетОРозничныхПродажах.Ссылка КАК Ссылка ПОМЕСТИТЬ ОтчетОРозничныхПродажах ИЗ Документ.ОтчетОРозничныхПродажах КАК ОтчетОРозничныхПродажах ГДЕ ОтчетОРозничныхПродажах.Ссылка.Проведен И ОтчетОРозничныхПродажах.Ссылка.Дата >= &Дата1 СГРУППИРОВАТЬ ПО ОтчетОРозничныхПродажах.Ссылка; ВЫБРАТЬ ЕСТЬNULL(СУММА(ОтчетОРозничныхПродажахТовары.Сумма), 0) КАК Товары_Сумма, ОтчетОРозничныхПродажахТовары.Ссылка КАК Ссылка ПОМЕСТИТЬ ОтчетОРозничныхПродажахТовары ИЗ Документ.ОтчетОРозничныхПродажах.Товары КАК ОтчетОРозничныхПродажахТовары ГДЕ ОтчетОРозничныхПродажахТовары.Ссылка.Проведен И ОтчетОРозничныхПродажахТовары.Ссылка.Дата >= &Дата1 СГРУППИРОВАТЬ ПО ОтчетОРозничныхПродажахТовары.Ссылка; ВЫБРАТЬ ЕСТЬNULL(СУММА(ОтчетОРозничныхПродажахОплатаПлатежнымиКартами.Сумма), 0) КАК ОплатаПлатежнымиКартами_Сумма, ОтчетОРозничныхПродажахОплатаПлатежнымиКартами.Ссылка КАК Ссылка ПОМЕСТИТЬ ОтчетОРозничныхПродажахОплатаПлатежнымиКартами ИЗ Документ.ОтчетОРозничныхПродажах.ОплатаПлатежнымиКартами КАК ОтчетОРозничныхПродажахОплатаПлатежнымиКартами ГДЕ ОтчетОРозничныхПродажахОплатаПлатежнымиКартами.Ссылка.Проведен И ОтчетОРозничныхПродажахОплатаПлатежнымиКартами.Ссылка.Дата >= &Дата1 СГРУППИРОВАТЬ ПО ОтчетОРозничныхПродажахОплатаПлатежнымиКартами.Ссылка; //РеализацияТоваров ВЫБРАТЬ РеализацияТоваров.Проведен КАК Проведен, РеализацияТоваров.ПометкаУдаления КАК ПометкаУдаления, РеализацияТоваров.Дата КАК Дата, РеализацияТоваров.Дата КАК Дата_, РеализацияТоваров.Номер КАК Номер, "Реализация товаров" КАК __, РеализацияТоваров.СуммаДокумента КАК СуммаДокумента, "" КАК СуммаВозвратов, РеализацияТоваров.Магазин КАК Магазин, "" КАК СуммаОплатыНаличных, "" КАК _, РеализацияТоваров.Ссылка КАК Ссылка ПОМЕСТИТЬ РеализацияТоваров ИЗ Документ.РеализацияТоваров КАК РеализацияТоваров ГДЕ РеализацияТоваров.Ссылка.Проведен И РеализацияТоваров.Ссылка.Дата >= &Дата1 СГРУППИРОВАТЬ ПО РеализацияТоваров.Ссылка; ВЫБРАТЬ ЕСТЬNULL(СУММА(РеализацияТоваровТовары.Сумма), 0) КАК Товары_Сумма, РеализацияТоваровТовары.Ссылка КАК Ссылка ПОМЕСТИТЬ РеализацияТоваровТовары ИЗ Документ.РеализацияТоваров.Товары КАК РеализацияТоваровТовары ГДЕ РеализацияТоваровТовары.Ссылка.Проведен И РеализацияТоваровТовары.Ссылка.Дата >= &Дата1 СГРУППИРОВАТЬ ПО РеализацияТоваровТовары.Ссылка; ВЫБРАТЬ 0 КАК ОплатаПлатежнымиКартами_Сумма, РеализацияТоваровОплатаПлатежнымиКартами.Ссылка КАК Ссылка ПОМЕСТИТЬ РеализацияТоваровОплатаПлатежнымиКартами ИЗ Документ.РеализацияТоваров КАК РеализацияТоваровОплатаПлатежнымиКартами ГДЕ РеализацияТоваровОплатаПлатежнымиКартами.Ссылка.Проведен И РеализацияТоваровОплатаПлатежнымиКартами.Ссылка.Дата >= &Дата1 СГРУППИРОВАТЬ ПО РеализацияТоваровОплатаПлатежнымиКартами.Ссылка; ВЫБРАТЬ * ИЗ ОтчетОРозничныхПродажах ЛЕВОЕ СОЕДИНЕНИЕ ОтчетОРозничныхПродажахТовары ПО ОтчетОРозничныхПродажахТовары.Ссылка = ОтчетОРозничныхПродажах.Ссылка ЛЕВОЕ СОЕДИНЕНИЕ ОтчетОРозничныхПродажахОплатаПлатежнымиКартами ПО ОтчетОРозничныхПродажахОплатаПлатежнымиКартами.Ссылка = ОтчетОРозничныхПродажах.Ссылка ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ * ИЗ РеализацияТоваров ЛЕВОЕ СОЕДИНЕНИЕ РеализацияТоваровТовары ПО РеализацияТоваровТовары.Ссылка = РеализацияТоваров.Ссылка ЛЕВОЕ СОЕДИНЕНИЕ РеализацияТоваровОплатаПлатежнымиКартами ПО РеализацияТоваровОплатаПлатежнымиКартами.Ссылка = РеализацияТоваров.Ссылка УПОРЯДОЧИТЬ ПО Дата, Номер итого 100 строк вот пример запроса, 2 документа, 4 табличные части по 2 итога в каждой //ОтчетОРозничныхПродажах ВЫБРАТЬ ОтчетОРозничныхПродажах.Проведен КАК Проведен, ОтчетОРозничныхПродажах.ПометкаУдаления КАК ПометкаУдаления, ОтчетОРозничныхПродажах.Дата КАК Дата, ОтчетОРозничныхПродажах.Дата КАК Дата_, ОтчетОРозничныхПродажах.Номер КАК Номер, "Отчет о розничных продажах" КАК __, ОтчетОРозничныхПродажах.СуммаДокумента КАК СуммаДокумента, ОтчетОРозничныхПродажах.СуммаВозвратов КАК СуммаВозвратов, ОтчетОРозничныхПродажах.Магазин КАК Магазин, ОтчетОРозничныхПродажах.СуммаОплатыНаличных КАК СуммаОплатыНаличных, "" КАК _, ОтчетОРозничныхПродажах.Ссылка КАК Ссылка ПОМЕСТИТЬ ОтчетОРозничныхПродажах ИЗ Документ.ОтчетОРозничныхПродажах КАК ОтчетОРозничныхПродажах ГДЕ ОтчетОРозничныхПродажах.Ссылка.Проведен И ОтчетОРозничныхПродажах.Ссылка.Дата >= &Дата1 СГРУППИРОВАТЬ ПО ОтчетОРозничныхПродажах.Ссылка; ВЫБРАТЬ ЕСТЬNULL(СУММА(ОтчетОРозничныхПродажахТовары.Сумма), 0) КАК Товары_Сумма, ОтчетОРозничныхПродажахТовары.Ссылка КАК Ссылка ПОМЕСТИТЬ ОтчетОРозничныхПродажахТовары ИЗ Документ.ОтчетОРозничныхПродажах.Товары КАК ОтчетОРозничныхПродажахТовары ГДЕ ОтчетОРозничныхПродажахТовары.Ссылка.Проведен И ОтчетОРозничныхПродажахТовары.Ссылка.Дата >= &Дата1 СГРУППИРОВАТЬ ПО ОтчетОРозничныхПродажахТовары.Ссылка; ВЫБРАТЬ ЕСТЬNULL(СУММА(ОтчетОРозничныхПродажахОплатаПлатежнымиКартами.Сумма), 0) КАК ОплатаПлатежнымиКартами_Сумма, ОтчетОРозничныхПродажахОплатаПлатежнымиКартами.Ссылка КАК Ссылка ПОМЕСТИТЬ ОтчетОРозничныхПродажахОплатаПлатежнымиКартами ИЗ Документ.ОтчетОРозничныхПродажах.ОплатаПлатежнымиКартами КАК ОтчетОРозничныхПродажахОплатаПлатежнымиКартами ГДЕ ОтчетОРозничныхПродажахОплатаПлатежнымиКартами.Ссылка.Проведен И ОтчетОРозничныхПродажахОплатаПлатежнымиКартами.Ссылка.Дата >= &Дата1 СГРУППИРОВАТЬ ПО ОтчетОРозничныхПродажахОплатаПлатежнымиКартами.Ссылка; ВЫБРАТЬ ЕСТЬNULL(СУММА(ОтчетОРозничныхПродажахПродажиПоДисконтнымКартам.Сумма), 0) КАК ПродажиПоДисконтнымКартам_Сумма, ОтчетОРозничныхПродажахПродажиПоДисконтнымКартам.Ссылка КАК Ссылка ПОМЕСТИТЬ ОтчетОРозничныхПродажахПродажиПоДисконтнымКартам ИЗ Документ.ОтчетОРозничныхПродажах.ПродажиПоДисконтнымКартам КАК ОтчетОРозничныхПродажахПродажиПоДисконтнымКартам ГДЕ ОтчетОРозничныхПродажахПродажиПоДисконтнымКартам.Ссылка.Проведен И ОтчетОРозничныхПродажахПродажиПоДисконтнымКартам.Ссылка.Дата >= &Дата1 СГРУППИРОВАТЬ ПО ОтчетОРозничныхПродажахПродажиПоДисконтнымКартам.Ссылка; ВЫБРАТЬ КОЛИЧЕСТВО(ОтчетОРозничныхПродажахВозвращенныеТовары.НомерСтроки) КАК ВозвращенныеТовары_, ЕСТЬNULL(СУММА(ОтчетОРозничныхПродажахВозвращенныеТовары.Количество), 0) КАК ВозвращенныеТовары_Количество, ЕСТЬNULL(СУММА(ОтчетОРозничныхПродажахВозвращенныеТовары.Сумма), 0) КАК ВозвращенныеТовары_Сумма, ОтчетОРозничныхПродажахВозвращенныеТовары.Ссылка КАК Ссылка ПОМЕСТИТЬ ОтчетОРозничныхПродажахВозвращенныеТовары ИЗ Документ.ОтчетОРозничныхПродажах.ВозвращенныеТовары КАК ОтчетОРозничныхПродажахВозвращенныеТовары ГДЕ ОтчетОРозничныхПродажахВозвращенныеТовары.Ссылка.Проведен И ОтчетОРозничныхПродажахВозвращенныеТовары.Ссылка.Дата >= &Дата1 СГРУППИРОВАТЬ ПО ОтчетОРозничныхПродажахВозвращенныеТовары.Ссылка; //РеализацияТоваров ВЫБРАТЬ РеализацияТоваров.Проведен КАК Проведен, РеализацияТоваров.ПометкаУдаления КАК ПометкаУдаления, РеализацияТоваров.Дата КАК Дата, РеализацияТоваров.Дата КАК Дата_, РеализацияТоваров.Номер КАК Номер, "Реализация товаров" КАК __, РеализацияТоваров.СуммаДокумента КАК СуммаДокумента, "" КАК СуммаВозвратов, РеализацияТоваров.Магазин КАК Магазин, "" КАК СуммаОплатыНаличных, "" КАК _, РеализацияТоваров.Ссылка КАК Ссылка ПОМЕСТИТЬ РеализацияТоваров ИЗ Документ.РеализацияТоваров КАК РеализацияТоваров ГДЕ РеализацияТоваров.Ссылка.Проведен И РеализацияТоваров.Ссылка.Дата >= &Дата1 СГРУППИРОВАТЬ ПО РеализацияТоваров.Ссылка; ВЫБРАТЬ ЕСТЬNULL(СУММА(РеализацияТоваровТовары.Сумма), 0) КАК Товары_Сумма, РеализацияТоваровТовары.Ссылка КАК Ссылка ПОМЕСТИТЬ РеализацияТоваровТовары ИЗ Документ.РеализацияТоваров.Товары КАК РеализацияТоваровТовары ГДЕ РеализацияТоваровТовары.Ссылка.Проведен И РеализацияТоваровТовары.Ссылка.Дата >= &Дата1 СГРУППИРОВАТЬ ПО РеализацияТоваровТовары.Ссылка; ВЫБРАТЬ 0 КАК ОплатаПлатежнымиКартами_Сумма, РеализацияТоваровОплатаПлатежнымиКартами.Ссылка КАК Ссылка ПОМЕСТИТЬ РеализацияТоваровОплатаПлатежнымиКартами ИЗ Документ.РеализацияТоваров КАК РеализацияТоваровОплатаПлатежнымиКартами ГДЕ РеализацияТоваровОплатаПлатежнымиКартами.Ссылка.Проведен И РеализацияТоваровОплатаПлатежнымиКартами.Ссылка.Дата >= &Дата1 СГРУППИРОВАТЬ ПО РеализацияТоваровОплатаПлатежнымиКартами.Ссылка; ВЫБРАТЬ 0 КАК ПродажиПоДисконтнымКартам_Сумма, РеализацияТоваровПродажиПоДисконтнымКартам.Ссылка КАК Ссылка ПОМЕСТИТЬ РеализацияТоваровПродажиПоДисконтнымКартам ИЗ Документ.РеализацияТоваров КАК РеализацияТоваровПродажиПоДисконтнымКартам ГДЕ РеализацияТоваровПродажиПоДисконтнымКартам.Ссылка.Проведен И РеализацияТоваровПродажиПоДисконтнымКартам.Ссылка.Дата >= &Дата1 СГРУППИРОВАТЬ ПО РеализацияТоваровПродажиПоДисконтнымКартам.Ссылка; ВЫБРАТЬ 0 КАК ВозвращенныеТовары_, 0 КАК ВозвращенныеТовары_Количество, 0 КАК ВозвращенныеТовары_Сумма, РеализацияТоваровВозвращенныеТовары.Ссылка КАК Ссылка ПОМЕСТИТЬ РеализацияТоваровВозвращенныеТовары ИЗ Документ.РеализацияТоваров КАК РеализацияТоваровВозвращенныеТовары ГДЕ РеализацияТоваровВозвращенныеТовары.Ссылка.Проведен И РеализацияТоваровВозвращенныеТовары.Ссылка.Дата >= &Дата1 СГРУППИРОВАТЬ ПО РеализацияТоваровВозвращенныеТовары.Ссылка; ВЫБРАТЬ * ИЗ ОтчетОРозничныхПродажах ЛЕВОЕ СОЕДИНЕНИЕ ОтчетОРозничныхПродажахТовары ПО ОтчетОРозничныхПродажахТовары.Ссылка = ОтчетОРозничныхПродажах.Ссылка ЛЕВОЕ СОЕДИНЕНИЕ ОтчетОРозничныхПродажахОплатаПлатежнымиКартами ПО ОтчетОРозничныхПродажахОплатаПлатежнымиКартами.Ссылка = ОтчетОРозничныхПродажах.Ссылка ЛЕВОЕ СОЕДИНЕНИЕ ОтчетОРозничныхПродажахПродажиПоДисконтнымКартам ПО ОтчетОРозничныхПродажахПродажиПоДисконтнымКартам.Ссылка = ОтчетОРозничныхПродажах.Ссылка ЛЕВОЕ СОЕДИНЕНИЕ ОтчетОРозничныхПродажахВозвращенныеТовары ПО ОтчетОРозничныхПродажахВозвращенныеТовары.Ссылка = ОтчетОРозничныхПродажах.Ссылка ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ * ИЗ РеализацияТоваров ЛЕВОЕ СОЕДИНЕНИЕ РеализацияТоваровТовары ПО РеализацияТоваровТовары.Ссылка = РеализацияТоваров.Ссылка ЛЕВОЕ СОЕДИНЕНИЕ РеализацияТоваровОплатаПлатежнымиКартами ПО РеализацияТоваровОплатаПлатежнымиКартами.Ссылка = РеализацияТоваров.Ссылка ЛЕВОЕ СОЕДИНЕНИЕ РеализацияТоваровПродажиПоДисконтнымКартам ПО РеализацияТоваровПродажиПоДисконтнымКартам.Ссылка = РеализацияТоваров.Ссылка ЛЕВОЕ СОЕДИНЕНИЕ РеализацияТоваровВозвращенныеТовары ПО РеализацияТоваровВозвращенныеТовары.Ссылка = РеализацияТоваров.Ссылка УПОРЯДОЧИТЬ ПО Дата, Номер 150 строк если бы я использовал объединить между табличными частями, то запрос был бы строк 500 а нужно все это для универсального реестра документов, которого очень не хватает в таких недоконфигах, как Розница. я сделал реестр, который подключается ко всем спискам документов, подтягивает из них отборы и автоматически настраивается, но у юзера есть возможность дополнительно настроить внешний вид - выбрать несколько видов документов и отметить выводимые колонки, изменить их порядок и ширину. если кому не лень затестить, могу выложить сюда, есть только одно вмешательство в один общий модуль. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |