Уважаемые коллеги, помогите с головоломкой уже 3 дня бьемся:
УФ 8.3.17
Запросом получили ТЗ (рис. Исходная ТЗ)
А в макете надо путем присоединения областей, справа добавлять продукты, чтобы получить на выходе (рис. Макет)
Пробовал сделать на СКД, не получается вывести данные в таком виде.
Пробую сделать отчет - не выходит.

```1c
    ТабДок = Новый ТабличныйДокумент;

    Макет = УправлениеПечатью.МакетПечатнойФормы("Отчет.ОтчетПоЛидамИПродуктам.Макет");

    ШапкаИсточников = Макет.ПолучитьОбласть("Шапка|ОбластьИсточники");
    ТабДок.Вывести(ШапкаИсточников);

    Запрос = Новый Запрос
    ("ВЫБРАТЬ
    | СУММА(ВЫБОР
    | КОГДА Лиды.ВариантЗавершения = ЗНАЧЕНИЕ(Перечисление.ВариантЗавершенияРаботыСЛидом.НекачественныйЛид)
    | ТОГДА 1
    | ИНАЧЕ 0
    | КОНЕЦ) КАК Некач,
    |СУММА(ВЫБОР
    | КОГДА Лиды.ВариантЗавершения = ЗНАЧЕНИЕ(Перечисление.ВариантЗавершенияРаботыСЛидом.ПереведенВПокупателя)
    | ТОГДА 1
    | ИНАЧЕ 0
    | КОНЕЦ) КАК Квалиф,
    |СУММА(ВЫБОР
    | КОГДА Лиды.ВариантЗавершения <> ЗНАЧЕНИЕ(Перечисление.ВариантЗавершенияРаботыСЛидом.ПереведенВПокупателя)
    | И Лиды.ВариантЗавершения <> ЗНАЧЕНИЕ(Перечисление.ВариантЗавершенияРаботыСЛидом.НекачественныйЛид)
    | ТОГДА 1
    | ИНАЧЕ 0
    | КОНЕЦ) КАК Лид,
    |КОЛИЧЕСТВО(Лиды.Ссылка) КАК Лиды,
    |СпрИсточникиПривлеченияПокупателей.Наименование КАК Источники,
    |СпрКатегорииНоменклатуры.Родитель КАК ГруппаПродукта
    |ИЗ
    |Справочник.Лиды КАК Лиды
    | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ИсточникиПривлеченияПокупателей КАК СпрИсточникиПривлеченияПокупателей
    | ПО Лиды.ИсточникПривлечения = СпрИсточникиПривлеченияПокупателей.Ссылка
    | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.КатегорииНоменклатуры КАК СпрКатегорииНоменклатуры
    | ПО Лиды.КатегорииНоменклатуры = СпрКатегорииНоменклатуры.Ссылка
    |СГРУППИРОВАТЬ ПО
    |СпрИсточникиПривлеченияПокупателей.Наименование,
    |СпрКатегорииНоменклатуры.Родитель
    |
    |УПОРЯДОЧИТЬ ПО
    | СпрКатегорииНоменклатуры.Родитель");
    РезультатЗапросаГр=Запрос.Выполнить().Выгрузить();
    РезультатЗапросаИст=Запрос.Выполнить().Выгрузить();
    РезультатЗапросаСтр=Запрос.Выполнить().Выгрузить();

    // обходим результат запроса
    РезультатЗапросаГр.Свернуть("ГруппаПродукта");
    Для каждого СтрокаЗапросаГр из РезультатЗапросаГр Цикл

    //Выводим шапку продуктов
    ШапкаГрупп = Макет.ПолучитьОбласть("Шапка|ОбластьГруппаПродукта");
    ШапкаГрупп.Параметры.ГруппаПродукта = СтрокаЗапросаГр.ГруппаПродукта;
    ТабДок.Присоединить(ШапкаГрупп);
    КонецЦикла;

    РезультатЗапросаИст.Свернуть("Источники");
    Для каждого СтрокаЗапросаИст из РезультатЗапросаИст Цикл
    СтрокиИст = Макет.ПолучитьОбласть("ОбластьИсточники|Строки");
    СтрокиИст.Параметры.Источники = СтрокаЗапросаИст.Источники;
    ТабДок.Вывести(СтрокиИст);

    КонецЦикла;

    Для каждого СтрокаЗапросаСтр из РезультатЗапросаСтр Цикл
    СтрокиТабДок = Макет.ПолучитьОбласть("ОбластьГруппаПродукта|Строки");
    СтрокиТабДок.Параметры.Некач = СтрокаЗапросаСтр.Некач;
    СтрокиТабДок.Параметры.Квалиф = СтрокаЗапросаСтр.Квалиф;
    СтрокиТабДок.Параметры.Лид = СтрокаЗапросаСтр.Лид;
    СтрокиТабДок.Параметры.лиды = СтрокаЗапросаСтр.Некач + СтрокаЗапросаСтр.Квалиф + СтрокаЗапросаСтр.Лид;
    ТабДок.Вывести(СтрокиТабДок);
    КонецЦикла;
    Возврат(ТабДок);

    ПодвалТД = Макет.ПолучитьОбласть("Подвал");
    ТабДок.Вывести(ПодвалТД);
```
---
Примерно так:

```1c
    тПродукты = Новый ТаблицаЗначений;
    тПродукты.Колонки.Добавить("Продукт");
    тПродукты.Колонки.Добавить("Источники");

    тИсточники = Новый ТаблицаЗначений;
    тИсточники.Колонки.Добавить("Источник");
    тИсточники.Колонки.Добавить("Статусы");

    заготовкаИсточники = ЗначениеВСтрокуВнутр(тИсточники);

    масИсточники = Новый Массив;

    выб = Запрос.Выполнить().Выбрать();
    Пока выб.Следующий() Цикл

    стрПродукты = тПродукты.Найти(выб.Продукт, "Продукт";
    Если стрПродукты = Неопределено Тогда
    стрПродукты = тПродукты.Добавить();
    стрПродукты.Продукт = выб.Продукт;
    стрПродукты.Источники = ЗначениеИзСтрокиВнутр(заготовкаИсточники);
    КонецЕсли;

    стрИсточники = стрПродукты.Источники.Найти(выб.Источник, "Источник");
    Если стрИсточники = Неопределено Тогда
    стрИсточники = стрПродукты.Источники.Добавить();
    стрИсточники.Источник = выб.Источник;
    стрИсточники.Статусы = Новый Структура("Неудачно, Отремонтировано, ВРемонте, Всего", 0, 0, 0, 0);
    КонецЕсли;

    стрИсточники.Статусы.Неудачно = стрИсточники.Статусы.Неудачно + выб.Неудачно;
    стрИсточники.Статусы.Неудачно = стрИсточники.Статусы.Отремонтировано + выб.Отремонтировано;
    стрИсточники.Статусы.Неудачно = стрИсточники.Статусы.ВРемонте + выб.ВРемонте;
    стрИсточники.Статусы.Неудачно = стрИсточники.Статусы.Всего + выб.Всего;

    Если масИсточники.Найти(выб.Источник) = Неопределено Тогда
    масИсточники.Добавить(выб.Источник);
    КонецЕсли;

    КонецЦикла;

    // шапка

    обл = Макет.ПолучитьОбласть("Шапка|ОбластьИсточники");
    таб.Вывести(обл);
    обл = Макет.ПолучитьОбласть("Шапка|ОбластьГруппаПродукта");
    Для каждого стрПродукты из тПродукты Цикл
    обл.Параметры.ГруппаПродукта = стрПродукты.Продукт;
    таб.Присоединить(обл);
    КонецЦикла;

    // строки

    Для каждого Источник из масИсточники Цикл
    обл = Макет.ПолучитьОбласть("Строки|ОбластьИсточники");
    обл.Параметры.Источник = Источник;
    таб.Вывести(обл);

    обл = Макет.ПолучитьОбласть("Строки|ОбластьГруппаПродукта");
    Для каждого стрПродукты из тПродукты Цикл
    стрИсточники = стрПродукты.Источники.Найти(Источник, "Источник");
    обл.Параметры.Установить(стрИсточники);
    таб.Присоединить(обл);
    КонецЦикла;

    КонецЦикла;
```
---
Примерно так:

```1c
    тПродукты = Новый ТаблицаЗначений;
    тПродукты.Колонки.Добавить("Продукт");
    тПродукты.Колонки.Добавить("Источники");

    тИсточники = Новый ТаблицаЗначений;
    тИсточники.Колонки.Добавить("Источник");
    тИсточники.Колонки.Добавить("Статусы");

    заготовкаИсточники = ЗначениеВСтрокуВнутр(тИсточники);

    масИсточники = Новый Массив;

    выб = Запрос.Выполнить().Выбрать();
    Пока выб.Следующий() Цикл

    стрПродукты = тПродукты.Найти(выб.Продукт, "Продукт";
    Если стрПродукты = Неопределено Тогда
    стрПродукты = тПродукты.Добавить();
    стрПродукты.Продукт = выб.Продукт;
    стрПродукты.Источники = ЗначениеИзСтрокиВнутр(заготовкаИсточники);
    КонецЕсли;

    стрИсточники = стрПродукты.Источники.Найти(выб.Источник, "Источник");
    Если стрИсточники = Неопределено Тогда
    стрИсточники = стрПродукты.Источники.Добавить();
    стрИсточники.Источник = выб.Источник;
    стрИсточники.Статусы = Новый Структура("Неудачно, Отремонтировано, ВРемонте, Всего", 0, 0, 0, 0);
    КонецЕсли;

    стрИсточники.Статусы.Неудачно = стрИсточники.Статусы.Неудачно + выб.Неудачно;
    стрИсточники.Статусы.Неудачно = стрИсточники.Статусы.Отремонтировано + выб.Отремонтировано;
    стрИсточники.Статусы.Неудачно = стрИсточники.Статусы.ВРемонте + выб.ВРемонте;
    стрИсточники.Статусы.Неудачно = стрИсточники.Статусы.Всего + выб.Всего;

    Если масИсточники.Найти(выб.Источник) = Неопределено Тогда
    масИсточники.Добавить(выб.Источник);
    КонецЕсли;

    КонецЦикла;

    // шапка

    обл = Макет.ПолучитьОбласть("Шапка|ОбластьИсточники");
    таб.Вывести(обл);
    обл = Макет.ПолучитьОбласть("Шапка|ОбластьГруппаПродукта");
    Для каждого стрПродукты из тПродукты Цикл
    обл.Параметры.ГруппаПродукта = стрПродукты.Продукт;
    таб.Присоединить(обл);
    КонецЦикла;

    // строки

    Для каждого Источник из масИсточники Цикл
    обл = Макет.ПолучитьОбласть("Строки|ОбластьИсточники");
    обл.Параметры.Источник = Источник;
    таб.Вывести(обл);

    обл = Макет.ПолучитьОбласть("Строки|ОбластьГруппаПродукта");
    Для каждого стрПродукты из тПродукты Цикл
    стрИсточники = стрПродукты.Источники.Найти(Источник, "Источник");
    обл.Параметры.Установить(стрИсточники);
    таб.Присоединить(обл);
    КонецЦикла;

    КонецЦикла;
```
---
Уважаемый, jmw. Отдельно Благодарю Вас за предложенный вариант. Вы лучший!
(2)
---
Учебные задачи логичнее спрашивать у преподавателя, им за это платят... иначе за что деньги берут?