|
Удваивается сумма долга в запросе при левом соединении | ☑ | ||
---|---|---|---|---|
0
barsik123
20.06.14
✎
16:40
|
Совсем туплю, отчет в целом работает нормально, но вот при таком случае начинает задваиваться долг.
Есть регистр накопления, по которому отражаются долги в разрезе Лицевой счет, Услуга, Квитанция, Квитанция это документ отражающий дату оказания услуги и другую информацию по этой услуге. На лицевой счет по конкретной квитанции выставили два иска. Два, потому что по первому иску был отказ и выставили второй. В иске нет поля квитанции,зато есть два поля Начало искового периода и конец искового периода. Дата квитанции попадает в диапазон дат начала искового периода и конец искового периода для двух исков. Код запроса такой: ВЫБРАТЬ Остатки.ЛицевойСчет КАК ЛицевойСчет, Остатки.Квитанция КАК Квитанция, Количество(1) КАК КоличествоЗаписей, СУММА(Остатки.СуммаОстаток) КАК Долг, СтатусыИсковСрезПоследних.Иск КАК Иск, СтатусыИсковСрезПоследних.Статус КАК Статус ИЗ РегистрНакопления.НачислениеКвартПлатыЛС.Остатки( &Дата, ЛицевойСчет = &ЛС И Услуги = &Услуга ) КАК Остатки ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СтатусыИсков.СрезПоследних(, Иск.ЛицевойСчет = &ЛС) КАК СтатусыИсковСрезПоследних ПО Остатки.ЛицевойСчет = СтатусыИсковСрезПоследних.Иск.ЛицевойСчет И (Остатки.Квитанция.Дата МЕЖДУ СтатусыИсковСрезПоследних.Иск.НачалоИсковогоПериода И СтатусыИсковСрезПоследних.Иск.КонецИсковогоПериода) СГРУППИРОВАТЬ ПО Остатки.ЛицевойСчет, СтатусыИсковСрезПоследних.Иск, СтатусыИсковСрезПоследних.Статус, Остатки.Квитанция ИТОГИ ПО ЛицевойСчет, Иск, Статус, Квитанция И в результате этого запроса, долг по лицевому счету увеличивается в двое. Такое увеличение у меня происходит только в случает если на одну квитанцию проходят более одного иска. Подскажите как правильнее было бы изменить запрос,чтобы не происходило удвоение. |
|||
1
Жан Пердежон
20.06.14
✎
16:43
|
странно, что только задваивается
|
|||
2
Крошка Ру
20.06.14
✎
16:49
|
(0) По "СтатусыИсковСрезПоследних.Иск" группируешь, а по "Остатки.СуммаОстаток" - суммируешь.
Иска - два, сумм остатков - тоже две |
|||
3
barsik123
20.06.14
✎
17:23
|
(2) Вот думаю как лучше выкрутится именно сделав это в запросе, без дополнительных манипуляций при прохождении результатов запроса. по смыслу в иске нет никакой задолженности, задолженность есть только у квитанции и у лицевого счета. Иск я здесь приплетаю лишь только для того,чтобы сразу получить нужную информацию в запросе, которую выведу в печатную форму.
|
|||
4
Господин ПЖ
20.06.14
✎
17:24
|
группировать например
|
|||
5
Segate
20.06.14
✎
18:22
|
(3)Максимум() к примеру
|
|||
6
barsik123
20.06.14
✎
18:35
|
(5) ну если я тупо вместо Сумма Поставлю Максимум,то если будут две и более квитанций по этому лс,то он и выдаст в качестве долга по лицевому счету максимальную задолжность по одной из квитанций. Здесь как-то хитрее нужно сделать.
|
|||
7
barsik123
20.06.14
✎
19:13
|
Придумал пока только так сделать, сначала в одну таблицу собираю долги по лицевым счетам, во второй таблице собираю долги по квитанциям, в третью таблицу кидаю последние иски. И все это объединяю:
ВЫБРАТЬ Остатки.ЛицевойСчет КАК ЛицевойСчет, СУММА(Остатки.СуммаОстаток) КАК Долг ПОМЕСТИТЬ ДолгПоЛС ИЗ РегистрНакопления.НачислениеКвартПлатыЛС.Остатки( &Дата, ЛицевойСчет = &ЛС И Услуги = &Услуга) КАК Остатки СГРУППИРОВАТЬ ПО Остатки.ЛицевойСчет ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Остатки.ЛицевойСчет КАК ЛицевойСчет, Остатки.Квитанция КАК Квитанция, Остатки.Квитанция.Дата КАК ДатаДок, КОЛИЧЕСТВО(1) КАК КоличествоЗаписей, СУММА(Остатки.СуммаОстаток) КАК Долг ПОМЕСТИТЬ ДолгКвитанцииПоЛС ИЗ РегистрНакопления.НачислениеКвартПлатыЛС.Остатки( &Дата, ЛицевойСчет = &ЛС И Услуги = &Услуга) КАК Остатки СГРУППИРОВАТЬ ПО Остатки.ЛицевойСчет, Остатки.Квитанция, Остатки.Квитанция.Дата ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ СтатусыИсковСрезПоследних.Иск, СтатусыИсковСрезПоследних.Статус, СтатусыИсковСрезПоследних.Иск.НачалоИсковогоПериода КАК НачалоИсковогоПериода, СтатусыИсковСрезПоследних.Иск.КонецИсковогоПериода КАК КонецИсковогоПериода ПОМЕСТИТЬ ИСКИ ИЗ РегистрСведений.СтатусыИсков.СрезПоследних(, Иск.ЛицевойСчет = &ЛС) КАК СтатусыИсковСрезПоследних ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ДолгПоЛС.ЛицевойСчет КАК ЛицевойСчет, ДолгКвитанцииПоЛС.Квитанция КАК Квитанция, ДолгПоЛС.Долг КАК Долг, ДолгКвитанцииПоЛС.Долг КАК ДолгПоКвитанции, Иски.Иск, Иски.Статус ИЗ ДолгПоЛС КАК ДолгПоЛС ВНУТРЕННЕЕ СОЕДИНЕНИЕ ДолгКвитанцииПоЛС КАК ДолгКвитанцииПоЛС ПО ДолгПоЛС.ЛицевойСчет = ДолгКвитанцииПоЛС.ЛицевойСчет ЛЕВОЕ СОЕДИНЕНИЕ ИСКИ КАК Иски ПО (ДолгКвитанцииПоЛС.ЛицевойСчет = Иски.Иск.ЛицевойСчет) И (ДолгКвитанцииПоЛС.ДатаДок МЕЖДУ Иски.НачалоИсковогоПериода И Иски.КонецИсковогоПериода) Конечно,обрабатывать такой результат выполнения не очень удобно, получается придется бежать по обычной таблице значений, а не по группировкам. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |