![]() |
![]() |
|
Остатки на каждый день в запросе | ☑ | ||
---|---|---|---|---|
0
John83
30.11.15
✎
15:04
|
Взял из Книга знаний: Полные остатки по периоду во вложенном запросе; запрос, но не могу понять, почему в группировке берется именно МИНИМУМ?
Получилась ситуация, когда запрос отрабатывает неверно и если поставить МАКСИМУМ, то все приходит в норму. ВЫБРАТЬ Дебиторка.СуммаВзаиморасчетовКонечныйОстаток КАК Долг, КурсыВалют.Период КАК Период, Дебиторка.ДоговорКонтрагента КАК ДоговорКонтрагента, Дебиторка.ДоговорКонтрагента.Владелец КАК Контрагент, ВЫБОР КОГДА Дебиторка.СуммаВзаиморасчетовКонечныйОстаток < 0 ТОГДА 1 ИНАЧЕ 0 КОНЕЦ КАК КвоОтрицательных ИЗ РегистрСведений.КурсыВалют КАК КурсыВалют ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ Оборот1.Дата КАК ДатаС, МИНИМУМ(ВЫБОР КОГДА Оборот2.Дата ЕСТЬ NULL ТОГДА КОНЕЦПЕРИОДА(&КонецПериода, ДЕНЬ) ИНАЧЕ КОНЕЦПЕРИОДА(ДОБАВИТЬКДАТЕ(Оборот2.Дата, ДЕНЬ, -1), ДЕНЬ) КОНЕЦ) КАК ДатаПо, Оборот1.СуммаВзаиморасчетовКонечныйОстаток КАК СуммаВзаиморасчетовКонечныйОстаток, Оборот1.ДоговорКонтрагента КАК ДоговорКонтрагента ИЗ (ВЫБРАТЬ ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Период КАК Дата, ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовКонечныйОстаток КАК СуммаВзаиморасчетовКонечныйОстаток, ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента КАК ДоговорКонтрагента ИЗ РегистрНакопления.ВзаиморасчетыСКонтрагентами.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, День, , {(ДоговорКонтрагента.Организация).* КАК Организация, (ДоговорКонтрагента.Владелец).* КАК Контрагент, (ДоговорКонтрагента).*}) КАК ВзаиморасчетыСКонтрагентамиОстаткиИОбороты) КАК Оборот1 ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Период КАК Дата, ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента КАК ДоговорКонтрагента ИЗ РегистрНакопления.ВзаиморасчетыСКонтрагентами.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, День, , {(ДоговорКонтрагента.Организация).* КАК Организация, (ДоговорКонтрагента.Владелец).* КАК Контрагент, (ДоговорКонтрагента).*}) КАК ВзаиморасчетыСКонтрагентамиОстаткиИОбороты) КАК Оборот2 ПО Оборот1.Дата < Оборот2.Дата И Оборот1.ДоговорКонтрагента = Оборот2.ДоговорКонтрагента СГРУППИРОВАТЬ ПО Оборот1.Дата, Оборот1.СуммаВзаиморасчетовКонечныйОстаток, Оборот1.ДоговорКонтрагента) КАК Дебиторка ПО (КурсыВалют.Период МЕЖДУ Дебиторка.ДатаС И Дебиторка.ДатаПо) ГДЕ КурсыВалют.Период МЕЖДУ &НачалоПериода И &КонецПериода И КурсыВалют.Валюта = &Валюта ИТОГИ СУММА(Долг), СУММА(КвоОтрицательных) ПО ОБЩИЕ, Контрагент, ДоговорКонтрагента, Период АВТОУПОРЯДОЧИВАНИЕ |
|||
1
John83
30.11.15
✎
15:05
|
так читабельней будет
ВЫБРАТЬ Дебиторка.СуммаВзаиморасчетовКонечныйОстаток КАК Долг, КурсыВалют.Период КАК Период, Дебиторка.ДоговорКонтрагента КАК ДоговорКонтрагента, Дебиторка.ДоговорКонтрагента.Владелец КАК Контрагент, ВЫБОР КОГДА Дебиторка.СуммаВзаиморасчетовКонечныйОстаток < 0 ТОГДА 1 ИНАЧЕ 0 КОНЕЦ КАК КвоОтрицательных ИЗ РегистрСведений.КурсыВалют КАК КурсыВалют ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ Оборот1.Дата КАК ДатаС, МИНИМУМ(ВЫБОР КОГДА Оборот2.Дата ЕСТЬ NULL ТОГДА КОНЕЦПЕРИОДА(&КонецПериода, ДЕНЬ) ИНАЧЕ КОНЕЦПЕРИОДА(ДОБАВИТЬКДАТЕ(Оборот2.Дата, ДЕНЬ, -1), ДЕНЬ) КОНЕЦ) КАК ДатаПо, Оборот1.СуммаВзаиморасчетовКонечныйОстаток КАК СуммаВзаиморасчетовКонечныйОстаток, Оборот1.ДоговорКонтрагента КАК ДоговорКонтрагента ИЗ (ВЫБРАТЬ ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Период КАК Дата, ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовКонечныйОстаток КАК СуммаВзаиморасчетовКонечныйОстаток, ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента КАК ДоговорКонтрагента ИЗ РегистрНакопления.ВзаиморасчетыСКонтрагентами.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, День, , {(ДоговорКонтрагента.Организация).* КАК Организация, (ДоговорКонтрагента.Владелец).* КАК Контрагент, (ДоговорКонтрагента).*}) КАК ВзаиморасчетыСКонтрагентамиОстаткиИОбороты) КАК Оборот1 ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Период КАК Дата, ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента КАК ДоговорКонтрагента ИЗ РегистрНакопления.ВзаиморасчетыСКонтрагентами.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, День, , {(ДоговорКонтрагента.Организация).* КАК Организация, (ДоговорКонтрагента.Владелец).* КАК Контрагент, (ДоговорКонтрагента).*}) КАК ВзаиморасчетыСКонтрагентамиОстаткиИОбороты) КАК Оборот2 ПО Оборот1.Дата < Оборот2.Дата И Оборот1.ДоговорКонтрагента = Оборот2.ДоговорКонтрагента СГРУППИРОВАТЬ ПО Оборот1.Дата, Оборот1.СуммаВзаиморасчетовКонечныйОстаток, Оборот1.ДоговорКонтрагента) КАК Дебиторка ПО (КурсыВалют.Период МЕЖДУ Дебиторка.ДатаС И Дебиторка.ДатаПо) ГДЕ КурсыВалют.Период МЕЖДУ &НачалоПериода И &КонецПериода И КурсыВалют.Валюта = &Валюта ИТОГИ СУММА(Долг), СУММА(КвоОтрицательных) ПО ОБЩИЕ, Контрагент, ДоговорКонтрагента, Период АВТОУПОРЯДОЧИВАНИЕ |
|||
2
aleks_default
30.11.15
✎
15:31
|
наверное поэтому
ПО Оборот1.Дата < Оборот2.Дата |
|||
3
Cyberhawk
30.11.15
✎
15:31
|
А ты без этой группировки покажи, какой результат (таблица) у вложенного запроса
|
|||
4
John83
30.11.15
✎
15:45
|
(3) таким образом
http://savepic.org/7985855.png |
|||
5
John83
30.11.15
✎
15:48
|
(2) какие будут мысли/предложения?
|
|||
6
Cyberhawk
30.11.15
✎
16:05
|
(4) Ты бы картинку побольше-то вставлял, а то плевок тебе за такое
И покажи картинку, где имеет значение, максимум или минимум там берется |
|||
7
John83
30.11.15
✎
16:35
|
(6) http://savepic.org/7954096.png
оборотов с 30.10.2015 по 30.11.2015 не было, поэтому значения не выводятся PS хз почему так вставляется, но если увеличить, то вроде вполне разобрать можно |
|||
8
aleks_default
30.11.15
✎
16:53
|
(7) Изменение МИНИМУМ на МАКСИМУМ приведет только к тому что увеличится количество детальных записей в результате запроса и соответсвенно ИТОГИ будут неверные.
|
|||
9
Marinelle
30.11.15
✎
16:56
|
Минимум берется, чтобы получить последовательные интервалы постоянства остатка. У Вас должен был получиться интервал с 05.10.15 00:00:00 по 30.11.2015 23:59:59
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |