Формируем новый отчет с макетом:
Источником данных для запроса возьмем виртуальную таблицу «ДвиженияССубконто», но в запросе свернем таблицу по поставщику.
Для свертки данных исходной таблицы используем при расчете числовых полей функцию «СУММА» и команду «Сгруппировать», которые обеспечат получение свернутых по группировкам числовых значений.
роме того, в запросе обеспечим хранение в одной строке (по поставщику) суммового оборота по счетам 10, 01,51.
Получим запрос:
счет10=ПланыСчетов.Хозрасчетный.Материалы;
счет01=ПланыСчетов.Хозрасчетный.ОсновныеСредства;
счет51=ПланыСчетов.Хозрасчетный.РасчетныйСчет;
Макет = ОтчетОбъект.ПолучитьМакет("ЗапросКРегиструБухгалтерии");
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
|ЖурналОперацийДвиженияССубконто.СубконтоКт1 КАК Контрагент,
| Сумма (выбор Когда ЖурналОперацийДвиженияССубконто.СчетДт=&Счет10 | Тогда ЖурналОперацийДвиженияССубконто.Сумма Иначе 0 Конец) КАК |Сумма10,
| Сумма(выбор Когда ЖурналОперацийДвиженияССубконто.СчетДт=&Счет01 Тогда ЖурналОперацийДвиженияССубконто.Сумма Иначе 0 Конец) КАК Сумма01,
| Сумма(выбор Когда ЖурналОперацийДвиженияССубконто.СчетДт=&Счет51 Тогда ЖурналОперацийДвиженияССубконто.Сумма Иначе 0 Конец) КАК Сумма51
|ИЗ
| РегистрБухгалтерии.ЖурналОпераций.ДвиженияССубконто(&Нач,&Кон) КАК ЖурналОперацийДвиженияССубконто
| Сгруппировать по ЖурналОперацийДвиженияССубконто.СубконтоКт1
|ИТОГИ ПО ОБЩИЕ";
Запрос.УстановитьПараметр("Нач", НачалоДня(НачПериода));
Запрос.УстановитьПараметр("Кон", КонецДня(КонПериода));
Запрос.УстановитьПараметр("счет10", счет10);
Запрос.УстановитьПараметр("счет01", счет01);
Запрос.УстановитьПараметр("счет51", счет51);
Результат = Запрос.Выполнить();
ТабличноеПоле1=Результат.Выгрузить();
ЭлементыФормы.ТабличноеПоле1.СоздатьКолонки();
//Возврат;
Результат запроса в ТабличномПоле:
В запросе есть обороты по поставщикам, а также Общий итог
Продолжаем модуль расчета:
ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали");
ТабДок.Очистить();
ТабДок.Вывести(ОбластьЗаголовок);
ТабДок.Вывести(ОбластьШапкаТаблицы);
ТабДок.НачатьАвтогруппировкуСтрок();
//Выборка = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
Если Выборка.ТипЗаписи()=ТипЗаписиЗапроса.ОбщийИтог Тогда
Продолжить;
КонецЕсли;
ОбластьДетальныхЗаписей.Параметры.Заполнить(Выборка);
ОбластьДетальныхЗаписей.Параметры.Итого=ОбластьДетальныхЗаписей.Параметры.Сумма01+ОбластьДетальныхЗаписей.Параметры.Сумма10+ОбластьДетальныхЗаписей.Параметры.Сумма51;
ТабДок.Вывести(ОбластьДетальныхЗаписей);
КонецЦикла;
Выборка = Результат.Выбрать();
Если Выборка.Следующий() Тогда
ОбластьПодвал.Параметры.Заполнить(Выборка);
ОбластьПодвал.Параметры.Итого=ОбластьПодвал.Параметры.Сумма01+ОбластьПодвал.Параметры.Сумма10+ОбластьПодвал.Параметры.Сумма51;
ТабДок.Вывести(ОбластьПодвал);
КонецЕСли;
Окончательный отчет: