SELECT
СпрКонтр.ID as [Клиент $Справочник.Контрагенты],
Докум as [Докум $Документ],
Докум_вид as Докум_вид,
SUM(НачДолг) as НачДолг,
SUM(РасхДолг) as РасхДолг,
SUM(ПрихДолг) as ПрихДолг,
SUM(НачДолгПост) as НачДолгПост,
SUM(РасхДолгПост) as РасхДолгПост,
SUM(ПрихДолгПост) as ПрихДолгПост,
SUM(НачДолг)+SUM(ПрихДолг)-SUM(РасхДолг) as КонДолг,
SUM(НачДолгПост)+SUM(ПрихДолгПост)-SUM(РасхДолгПост) as КонДолгПост
FROM
SELECT
Клиент,
SUM(НачДолг) as НачДолг,
SUM(РасхДолг) as РасхДолг,
SUM(ПрихДолг) as ПрихДолг,
SUM(НачДолгПост) as НачДолгПост,
SUM(РасхДолгПост) as РасхДолгПост,
SUM(ПрихДолгПост) as ПрихДолгПост,
'' as Докум,
'' as Докум_вид
FROM (
SELECT
Клиент,
НачДолг as НачДолг,
РасхДолг as РасхДолг,
ПрихДолг as ПрихДолг,
0 as НачДолгПост,
0 as РасхДолгПост,
0 as ПрихДолгПост
FROM (
//Регистр итогов по покупателям
SELECT
$ОстаткиПер.Клиент as Клиент,
$ОстаткиПер.Долг as НачДолг,
0 as РасхДолг,
0 as ПрихДолг
FROM
$РегистрИтоги.ВзаиморасчетыПокупателей as ОстаткиПер
WHERE
period = :НачалоПрошПериода
AND $ОстаткиПер.Фирма = :УсловиеФирма
AND $ОстаткиПер.Клиент IN (
SELECT $ВидСправочника36.Контрагенты+Контр1.id as id
FROM $Справочник.Контрагенты as Контр1
LEFT JOIN $Справочник.Контрагенты as Контр2 On Контр2.ID = Контр1.ParentID
WHERE Контр1.id "+УслКлиенты+" OR Контр2.id "+УслКлиенты+" OR Контр2.ParentID "+УслКлиенты+")
UNION ALL
//Регистр оборотов до даты нач по покупателям
SELECT
$ОстаткиНаДату.Клиент,
CASE WHEN ОстаткиНаДату.debkred = 0 THEN $ОстаткиНаДату.Долг ELSE -$ОстаткиНаДату.Долг END,
0,
0
FROM
$Регистр.ВзаиморасчетыПокупателей as ОстаткиНаДату
INNER JOIN
_1SJourn as Журн On Журн.IDDoc = ОстаткиНаДату.IDDoc
AND Журн.Date_Time_IDDoc >= :КонецПрошПериода AND Журн.Date_Time_IDDoc < :ДатаНач2
WHERE
$ОстаткиНаДату.Фирма = :УсловиеФирма
AND $ОстаткиНаДату.Клиент IN (
SELECT $ВидСправочника36.Контрагенты+Контр1.id as id
FROM $Справочник.Контрагенты as Контр1
LEFT JOIN $Справочник.Контрагенты as Контр2 On Контр2.ID = Контр1.ParentID
WHERE Контр1.id "+УслКлиенты+" OR Контр2.id "+УслКлиенты+" OR Контр2.ParentID "+УслКлиенты+")
UNION ALL
SELECT
$Обороты1.Клиент,
0,
(Обороты1.debkred)*$Обороты1.Долг,
(1-Обороты1.debkred)*$Обороты1.Долг
FROM
$Регистр.ВзаиморасчетыПокупателей as Обороты1
INNER JOIN
_1SJourn as Журн On Журн.IDDoc = Обороты1.IDDoc
AND Журн.Date_Time_IDDoc BETWEEN :ДатаНач AND:ДатаКон~
WHERE
$Обороты1.Фирма = :УсловиеФирма
AND $Обороты1.Клиент IN (
SELECT $ВидСправочника36.Контрагенты+Контр1.id as id
FROM $Справочник.Контрагенты as Контр1
LEFT JOIN $Справочник.Контрагенты as Контр2 On Контр2.ID = Контр1.ParentID
WHERE Контр1.id "+УслКлиенты+" OR Контр2.id "+УслКлиенты+" OR Контр2.ParentID "+УслКлиенты+")
) as Остатки
UNION ALL
SELECT
$ВидСправочника36.Контрагенты + Клиент,
0 as НачДолг,
0,
0,
НачДолгПост,
РасхДолгПост,
ПрихДолгПост
FROM (
//Регистр итогов по поставщикам
SELECT
$ОстаткиПерПост.Клиент as Клиент,
$ОстаткиПерПост.Долг as НачДолгПост,
0 as РасхДолгПост,
0 as ПрихДолгПост
FROM
$РегистрИтоги.ВзаиморасчетыПоставщиков as ОстаткиПерПост
WHERE
period = :НачалоПрошПериода AND
$ОстаткиПерПост.Фирма = :УсловиеФирма
AND $ОстаткиПерПост.Клиент IN (
SELECT Контр1.id as id
FROM $Справочник.Контрагенты as Контр1
LEFT JOIN $Справочник.Контрагенты as Контр2 On Контр2.ID = Контр1.ParentID
WHERE Контр1.id "+УслКлиенты+" OR Контр2.id "+УслКлиенты+" OR Контр2.ParentID "+УслКлиенты+")
UNION ALL
//регистр оборостов до даты нач по поставщикам
SELECT
$ОстаткиНаДату2.Клиент,
CASE WHEN ОстаткиНаДату2.debkred = 0 THEN $ОстаткиНаДату2.Долг ELSE -$ОстаткиНаДату2.Долг END as НачДолгПост,
0,
0
FROM
$Регистр.ВзаиморасчетыПоставщиков as ОстаткиНаДату2
INNER JOIN
_1SJourn as Журн On Журн.IDDoc = ОстаткиНаДату2.IDDoc
AND Журн.Date_Time_IDDoc >= :КонецПрошПериода AND Журн.Date_Time_IDDoc < :ДатаНач,
WHERE
$ОстаткиНаДату2.Фирма = :УсловиеФирма
AND $ОстаткиНаДату2.Клиент IN (
SELECT Контр1.id as id
FROM $Справочник.Контрагенты as Контр1
LEFT JOIN $Справочник.Контрагенты as Контр2 On Контр2.ID = Контр1.ParentID
WHERE Контр1.id "+УслКлиенты+" OR Контр2.id "+УслКлиенты+" OR Контр2.ParentID "+УслКлиенты+")
UNION ALL
SELECT
$Обороты2.Клиент,
0,
(Обороты2.debkred)*$Обороты2.Долг,
(1-Обороты2.debkred)*$Обороты2.Долг
FROM
$Регистр.ВзаиморасчетыПоставщиков as Обороты2
INNER JOIN
_1SJourn as Журн On Журн.IDDoc = Обороты2.IDDoc
"AND Журн.Date_Time_IDDoc BETWEEN :ДатаНач AND :ДатаКон~
WHERE
$Обороты2.Фирма = :УсловиеФирма
AND $Обороты2.Клиент IN (
SELECT Контр1.id as id
FROM $Справочник.Контрагенты as Контр1
LEFT JOIN $Справочник.Контрагенты as Контр2 On Контр2.ID = Контр1.ParentID
WHERE Контр1.id "+УслКлиенты+" OR Контр2.id "+УслКлиенты+" OR Контр2.ParentID "+УслКлиенты+")
) as Остатки
) ВсеВзаиморасч
GROUP BY Клиент