Он у меня сильно динамичный, поэтому в коде ногу сломишь.
![Улыбка Улыбка](https://www.1cpp.ru/forumfiles/Templates/Forum/default/smiley.gif)
Покажу пример для двух группировок - Производитель и Товар.
SELECT
СпрТов.SP3500 [Производитель $Справочник.Производитель], MainTab2.SP6886 [Товар1 $Справочник.Номенклатура],
SUM(Kol1) Kol1, SUM(Seb1) Seb1, SUM(ST1) ST1,
MAX(СпрТов.SP4385) Модель,
GROUPING (СпрТов.SP3500) as Группа1,
GROUPING (MainTab2.SP6886) as Группа2
FROM
(SELECT SP6886, SP6888,
SUM(Kol1) Kol1, SUM(Seb1) Seb1, SUM(ST1) ST1
FROM
(SELECT SP6886, SP6888,
CASE WHEN DATE_TIME_IDDOC BETWEEN :НачДата1 AND :КонДата1~ THEN SP6889 ELSE 0 END Kol1,
CASE WHEN DATE_TIME_IDDOC BETWEEN :НачДата1 AND :КонДата1~ THEN SP6890 ELSE 0 END ST1,
CASE WHEN DATE_TIME_IDDOC BETWEEN :НачДата1 AND :КонДата1~ THEN SP6891 ELSE 0 END Seb1,
IDDOC
FROM $Регистр.УчетПродажОб AS РегПрод
WHERE (РегПрод.DATE_TIME_IDDOC BETWEEN :НачДата AND :КонДата~)) AS MainTab
GROUP BY SP6886, SP6888) AS MainTab2
INNER JOIN SC33 СпрТов ON MainTab2.SP6886 = СпрТов.ID
WHERE (СпрТов.SP3500 = :ВыбПроизводитель) GROUP BY СпрТов.SP3500,
MainTab2.SP6886 WITH ROLLUP
P.S. извращаться приходится, т.к. очень много динамичных группировок + по горизонтали выводится периодика (n произвольных периодов)