Вот текст запроса (не пинайте сильно
) к базе на DBF. Просто в самом запросе я не придумал как это слепить. Может через ИТЗ будет проще?
тЗапроса = "
|SELECT
| *
|FROM
| (
| SELECT
| $ДокР.Клиент as [Покупатель $Справочник.Контрагенты],
| $ДокР.АдресСсылка as [Адрес $Справочник.Адреса],
| $ДокР.Экспедитор as [Экспедитор $Справочник.Сотрудники],
| ВыборкаТоваров.ЭлементРодитель as [Родитель $Справочник.Номенклатура],
| ВыборкаТоваров.глЭлементРодитель as [гРодитель $Справочник.Номенклатура],
| $ДокСР.Товар as [Товар $Справочник.Номенклатура],
| ВыборкаТоваров.Коэффициент,
| ВыборкаТоваров.int_RuCase,
| SUM($ДокСР.Количество) as итКол,
| SUM($ДокСР.Количество*ВыборкаТоваров.Вес) as итВес,
| SUM(($ДокСР.Количество*ВыборкаТоваров.int_RuCase)/ВыборкаТоваров.Коэффициент) as итРК,
| SUM($ДокСР.Количество*ВыборкаТоваров.int_Density) as итЛит,
| SUM($ДокСР.НДС) as СуммаНДС,
| SUM(0) as СуммаНДСВ,
| SUM($ДокСР.Сумма) as Оборот,
| SUM(0) as ОборотВ,
| SUM($ДокСР.Количество) as КоличествоРасход
| FROM
| $ДокументСтроки.РасходнаяНакладная as ДокСР
| LEFT JOIN
| 1SJourn Жур on ДокСР.IDDoc = Жур.IDDoc
| LEFT JOIN
| (
| SELECT
| $спрТов.Вес as Вес,
| $спрТов.int_RuCase as int_RuCase,
| $спрТов.int_Density as int_Density,
| $спрТов.ЕдиницаУпаковки,
| $Единицы.Коэффициент as Коэффициент,
| спрТов.ParentID as ЭлементРодитель,
| Родит.ParentID as глЭлементРодитель,
| спрТов.ID as ID
| FROM
| $Справочник.Номенклатура as спрТов
| LEFT JOIN
| $Справочник.Единицы Единицы on $спрТов.ЕдиницаУпаковки = Единицы.ID
| LEFT JOIN
| $Справочник.Номенклатура Родит on спрТов.ParentID = Родит.ID
| )
| as ВыборкаТоваров on ВыборкаТоваров.ID = $ДокСР.Товар
| LEFT JOIN
| $Документ.РасходнаяНакладная as ДокР ON ДокР.IDDoc = ДокСР.IDDoc
| WHERE
| Жур.Date BETWEEN :НачДата~~ AND :КонДата~~ AND
| Жур.Closed = 1 AND
| $ДокР.Клиент IN (Select Val From :Покупатели) AND
| $ДокСР.Товар IN (Select Val From :Товары) AND
| $ДокР.Экспедитор IN (Select Val From :Торговые) AND
| $ДокР.Клиент IN (Select Val From :выбПокупатели)
| GROUP BY оваров.int_RuCase
| UNION ALL
| SELECT
| $ДокП.Клиент as [Покупатель $Справочник.Контрагенты],
| $ДокП.АдресСсылка as [Адрес $Справочник.Адреса],
| $ДокП.Экспедитор as [Экспедитор $Справочник.Сотрудники],
| ВыборкаТоваров.ЭлементРодитель as [Родитель $Справочник.Номенклатура],
| ВыборкаТоваров.глЭлементРодитель as [гРодитель $Справочник.Номенклатура],
| $ДокСП.Товар as [Товар $Справочник.Номенклатура],
| ВыборкаТоваров.Коэффициент,
| ВыборкаТоваров.int_RuCase,
| SUM(-1*$ДокСП.Количество) as итКол,
| SUM(-1*$ДокСП.Количество*ВыборкаТоваров.Вес) as итВес,
| as итРК,
| SUM(-1*$ДокСП.Количество*ВыборкаТоваров.int_Density) as итЛит,
| SUM(-1*$ДокСП.НДС) as СуммаНДС,
| SUM(0) as СуммаНДСВ,
| SUM(-1*$ДокСП.Сумма) as Оборот,
| SUM(0) as ОборотВ,
| SUM(-1*$ДокСП.Количество) as КоличествоРасход
| FROM
| $ДокументСтроки.ПриходнаяНакладная as ДокСП
| LEFT JOIN
| 1SJourn Жур on ДокСП.IDDoc = Жур.IDDoc
| LEFT JOIN
| (
| SELECT
| $спрТов.Вес as Вес,
| $спрТов.int_RuCase as int_RuCase,
| $спрТов.int_Density as int_Density,
| $спрТов.ЕдиницаУпаковки,
| $Единицы.Коэффициент as Коэффициент,
| спрТов.ParentID as ЭлементРодитель,
| Родит.ParentID as глЭлементРодитель,
| спрТов.ID as ID
| FROM
| $Справочник.Номенклатура as спрТов
| LEFT JOIN
| $Справочник.Единицы Единицы on $спрТов.ЕдиницаУпаковки = Единицы.ID
| LEFT JOIN
| $Справочник.Номенклатура Родит on спрТов.ParentID = Родит.ID
| )
| as ВыборкаТоваров on ВыборкаТоваров.ID = $ДокСП.Товар
| LEFT JOIN
| $Документ.ПриходнаяНакладная as ДокП ON ДокП.IDDoc = ДокСП.IDDoc
| WHERE
| Жур.Date BETWEEN :НачДата~~ AND :КонДата~~ AND
| Жур.Closed = 1 AND
| $ДокП.Клиент IN (Select Val From :Покупатели) AND
| $ДокСП.Товар IN (Select Val From :Товары) AND
| $ДокП.Экспедитор IN (Select Val From :Торговые) AND
| $ДокП.Клиент IN (Select Val From :выбПокупатели)
| GROUP BY оваров.int_RuCase
| ) as Выборка
|";