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