|
Странный результат запроса | ☑ | ||
---|---|---|---|---|
0
UncleVader
11.10.11
✎
13:42
|
8.2.14.537, конфа самописная. Извините за многобуквие ;)
Есть 2 регистра для взаиморасчетов с покупателями и поставщиками одинаковой структуры. Задача - написать запрос для отчета по общим взаиморасчетам с обязательной детализацией по кредитным документам и регистраторам. Запрос строится из двух объединенных запросов по каждому регистру, при этом остатки берутся из виртуальной таблицы ОстаткиИОбороты с детализацией по периоду, а обороты из Обороты с детализацией по регистратору. В результате также надо получить итоги суммовых показателей на уровне группировки по кредитному документу. Так вот, странность результата заключается в том что показатели как-то неправильно суммируются конструкцией "ИТОГИ .. ПО ..". Точнее не суммируется показатель КонДолг - в итог попадает последнее значение выборки. Еще большая странность заключается в том что если из итоговых показателей убрать "СУММА(УмДолг)" то по нему естественно итог не рассчитывается, а по показателю "СУММА(КонДолг)" итог начинает правильно суммироваться... Вот текст ВЫБРАТЬ ВзаиморасчетыПокупателейОстаткиИОбороты.КредДокумент КАК КредДокумент, ВзаиморасчетыПокупателейОбороты.Регистратор КАК Регистратор, СУММА(ВзаиморасчетыПокупателейОстаткиИОбороты.ДолгВалКонечныйОстаток) КАК КонДолг, СУММА(ВзаиморасчетыПокупателейОбороты.УмДолг) КАК УмДолг, СУММА(ВзаиморасчетыПокупателейОбороты.УвДолг) КАК УвДолг ИЗ РегистрНакопления.ВзаиморасчетыПокупателей.ОстаткиИОбороты(&ДатаНачала, &ДатаОкончание, Период, , ) КАК ВзаиморасчетыПокупателейОстаткиИОбороты ЛЕВОЕ СОЕДИНЕНИЕ ( ВЫБРАТЬ ВзаиморасчетыПокупателейОбороты.Договор, ВзаиморасчетыПокупателейОбороты.КредДокумент, ВзаиморасчетыПокупателейОбороты.Регистратор, СУММА((ВЫБОР КОГДА (ВзаиморасчетыПокупателейОбороты.ДолгВалПриход>0) ТОГДА ВзаиморасчетыПокупателейОбороты.ДолгВалПриход ИНАЧЕ 0 КОНЕЦ) + (ВЫБОР КОГДА (ВзаиморасчетыПокупателейОбороты.ДолгВалРасход<0) ТОГДА -ВзаиморасчетыПокупателейОбороты.ДолгВалРасход ИНАЧЕ 0 КОНЕЦ)) КАК УвДолг, СУММА((ВЫБОР КОГДА (ВзаиморасчетыПокупателейОбороты.ДолгВалРасход>0) ТОГДА ВзаиморасчетыПокупателейОбороты.ДолгВалРасход ИНАЧЕ 0 КОНЕЦ) + (ВЫБОР КОГДА (ВзаиморасчетыПокупателейОбороты.ДолгВалПриход<0) ТОГДА -ВзаиморасчетыПокупателейОбороты.ДолгВалПриход ИНАЧЕ 0 КОНЕЦ)) КАК УмДолг ИЗ РегистрНакопления.ВзаиморасчетыПокупателей.Обороты(&ДатаНачала, &ДатаОкончание, Регистратор) КАК ВзаиморасчетыПокупателейОбороты СГРУППИРОВАТЬ ПО ВзаиморасчетыПокупателейОбороты.Договор, ВзаиморасчетыПокупателейОбороты.КредДокумент, ВзаиморасчетыПокупателейОбороты.Регистратор ) КАК ВзаиморасчетыПокупателейОбороты ПО ВзаиморасчетыПокупателейОбороты.Договор=ВзаиморасчетыПокупателейОстаткиИОбороты.Договор И ВзаиморасчетыПокупателейОбороты.КредДокумент=ВзаиморасчетыПокупателейОстаткиИОбороты.КредДокумент ГДЕ ВзаиморасчетыПокупателейОстаткиИОбороты.Контрагент В ИЕРАРХИИ (&Контрагент) СГРУППИРОВАТЬ ПО ВзаиморасчетыПокупателейОстаткиИОбороты.КредДокумент, ВзаиморасчетыПокупателейОбороты.Регистратор ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ВзаиморасчетыПоставщиковОстаткиИОбороты.КредДокумент КАК КредДокумент, ВзаиморасчетыПоставщиковОбороты.Регистратор КАК Регистратор, СУММА(ВзаиморасчетыПоставщиковОстаткиИОбороты.ДолгВалКонечныйОстаток) КАК КонДолг, СУММА(ВзаиморасчетыПоставщиковОбороты.УмДолг) КАК УмДолг, СУММА(ВзаиморасчетыПоставщиковОбороты.УвДолг) КАК УвДолг ИЗ РегистрНакопления.ВзаиморасчетыПоставщиков.ОстаткиИОбороты(&ДатаНачала, &ДатаОкончание, Период, , ) КАК ВзаиморасчетыПоставщиковОстаткиИОбороты ЛЕВОЕ СОЕДИНЕНИЕ ( ВЫБРАТЬ ВзаиморасчетыПоставщиковОбороты.Договор, ВзаиморасчетыПоставщиковОбороты.КредДокумент, ВзаиморасчетыПоставщиковОбороты.Регистратор, СУММА((ВЫБОР КОГДА (ВзаиморасчетыПоставщиковОбороты.ДолгВалПриход>0) ТОГДА ВзаиморасчетыПоставщиковОбороты.ДолгВалПриход ИНАЧЕ 0 КОНЕЦ) + (ВЫБОР КОГДА (ВзаиморасчетыПоставщиковОбороты.ДолгВалРасход<0) ТОГДА -ВзаиморасчетыПоставщиковОбороты.ДолгВалРасход ИНАЧЕ 0 КОНЕЦ)) КАК УвДолг, СУММА((ВЫБОР КОГДА (ВзаиморасчетыПоставщиковОбороты.ДолгВалРасход>0) ТОГДА ВзаиморасчетыПоставщиковОбороты.ДолгВалРасход ИНАЧЕ 0 КОНЕЦ) + (ВЫБОР КОГДА (ВзаиморасчетыПоставщиковОбороты.ДолгВалПриход<0) ТОГДА -ВзаиморасчетыПоставщиковОбороты.ДолгВалПриход ИНАЧЕ 0 КОНЕЦ)) КАК УмДолг ИЗ РегистрНакопления.ВзаиморасчетыПоставщиков.Обороты(&ДатаНачала, &ДатаОкончание, Регистратор) КАК ВзаиморасчетыПоставщиковОбороты СГРУППИРОВАТЬ ПО ВзаиморасчетыПоставщиковОбороты.Договор, ВзаиморасчетыПоставщиковОбороты.КредДокумент, ВзаиморасчетыПоставщиковОбороты.Регистратор ) КАК ВзаиморасчетыПоставщиковОбороты ПО ВзаиморасчетыПоставщиковОбороты.Договор=ВзаиморасчетыПоставщиковОстаткиИОбороты.Договор И ВзаиморасчетыПоставщиковОбороты.КредДокумент=ВзаиморасчетыПоставщиковОстаткиИОбороты.КредДокумент ГДЕ ВзаиморасчетыПоставщиковОстаткиИОбороты.Контрагент В ИЕРАРХИИ (&Контрагент) СГРУППИРОВАТЬ ПО ВзаиморасчетыПоставщиковОстаткиИОбороты.КредДокумент, ВзаиморасчетыПоставщиковОбороты.Регистратор ИТОГИ СУММА(КонДолг), СУММА(УмДолг), СУММА(УвДолг) ПО КредДокумент Результат по все показателям: КредДокумент Регистратор КонДолг УмДолг УвДолг СФ 0000000000 9 419 9 420 9 419 СФ 0000000000 ПКО Неч-004481 -9 420 9 420 СФ 0000000000 РКО Неч-001629 9 419 9 419 Результат без "СУММА(УмДолг)": КредДокумент Регистратор КонДолг УмДолг УвДолг СФ 0000000000 -1 9 419 СФ 0000000000 РКО Неч-001629 9 419 9 419 СФ 0000000000 ПКО Неч-004481 -9 420 9 420 |
|||
1
PR
11.10.11
✎
13:43
|
(0) Хвалишься?
|
|||
2
UncleVader
11.10.11
✎
13:46
|
(1) не понял
|
|||
3
UncleVader
11.10.11
✎
13:46
|
мне надо задачу решить, я не знаю как
|
|||
4
PR
11.10.11
✎
13:47
|
(2) Во всей ветке единственный знак вопроса и он в моем первом посте. Ты что хотел-то?
|
|||
5
UncleVader
11.10.11
✎
13:51
|
(4) Извини, забыл поставить сакраментальный вопрос: что делать?
|
|||
6
PVV65
11.10.11
✎
13:53
|
||||
7
UncleVader
11.10.11
✎
18:40
|
(6) Спасибо, помогла сборка всех подзапросов в одну кучу и обработка итогов на верхнем уровне одним надзапросом
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |