Подробный пример использования данной обработки в составе отчета по оплатам приведен здесь: //infostart.ru/projects/522/?&desc=1&ref=174
Обработка, которая приведена здесь, по сравнению с упомянутой выше ссылкой, расширена: стало лень каждый раз обозначать требуемую раскладку колонок для вывода РАЗНЫХ отчетов - вот и прикрутил сохранение/восстановление раскладки колонок для вывода отчетов. Причем, обработка сама распознает, какой набор/раскладка колонок подходит для полученного на вывода отчета.
От других навороченных обработок аналогичного типа отличается, на мой взгляд, идеальной сбалансированностью функционала и простоты использования.
Мое мнение - удобнейший инструментарий! В копилку программистаааааа!!
Оригинал обработки расположен здесь: http://1c.proclub.ru/modules/mydownloads/personal.php?cid=5&lid=3454 Разрешение от автора на выкладывание доработанной обработки - получено.
Пример использования данной обработки.
//здесь работает внешний отчет, формирующий какие-либо данные
//...
//если ошибка в запросе, то выход из процедуры
Если Запрос.Выполнить(ТекстЗапроса) = 0
Тогда Возврат;
КонецЕсли;
ТЗ = СоздатьОбъект("ТаблицаЗначений");
Запрос.Выгрузить(ТЗ,1,0);
Если ФлагГруппа = 0 Тогда ТЗ.УдалитьКолонку("ГруппаТовара"); КонецЕсли;
ТЗ.УдалитьКолонку("Количество"); //удаляем ненужные колонки
ТЗ.УдалитьКолонку("ПродСт");
ТЗ.УдалитьКолонку("ТекДок");
//здесь имеем ПЛОСКУЮ ТЗ с нужными для вывода данными
//ТЗ должна содержать нужные числовые данные и, по возможности, не содержать лишних колонок
//...
//сформируем параметры для передачи в обработку
/
//Параметр "ТаблицаЗначений"
//собственно, сама таблица значений для вывода, подготовленная ранее, плоская.
//Параметр "СписокПоказателей"
//положим в список значений "счетные" колонки ТЗ (числовые)
//(суммы, количества, себестоимости и прочее всякое что можно складывать...)
//все остальные неуказанные колонки будут считаться "измерениями" (группировками)
//формат элемента списка значений:
// значение элемента = идентификатор колонки ТЗ,
// представление элемента = заголовок колонки в отчете
//
СЗПоказателей = СоздатьОбъект("СписокЗначений");
СЗПоказателей.ДобавитьЗначение("СуммаПродСт","Сумма"); //"СуммаПродСТ" - идентификатор колонки ТЗ, "Сумма" - будет выводиться заголовком колонки
СЗПоказателей.ДобавитьЗначение("СуммаКоличество","Кол-во"); //"СуммаКоличество" - идентификатор колонки ТЗ, "Кол-во" - будет выводиться заголовком колонки
//Параметр "СписокВыводаГруппировок", может отсутствовать
//положим в список значений формат вывода группировок (этот параметр может быть опущен/не задан)
//0 -группировку по измерению не выводить (свертывать, с последующей расшифровкой)
//1 -группировать измерение по строкам (группировок может быть несколько)
//2 -группировать измерение по столбцам (группировку по столбцам можно не более одной!)
//
//формат элемента списка значений:
// значение элемента = число (0,1,2)
// представление элемента = идентификатор колонки ТЗ
//
СЗгруппировок = СоздатьОбъект("СписокЗначений");
СЗгруппировок.ДобавитьЗначение(2,"ТипЯчейки");
СЗгруппировок.ДобавитьЗначение(0,"АдресЯчейки");
//Параметр "Заголовок", может отсутствовать
//текст, выводится как заголовок отчета
Группировки (измерения) - все остальные колонки ТЗ, не упомянутые в списке показателей отчета.
Итоговый отчет выводится (если не задан вывод по столбцам, т.е. шахматкой) в виде нескольких колонок,
где первая колонка - это колонка с выводом занчений группировок/измерений, остальные колонки - значения показателей отчета.
Часто бывает необходимо вывести в строке группировки не только значение группировки (например, "Номенклатура"), но и дополнительное значение группировки, например "Артикул" номенклатуры.
Можно сделать двумя способами:
1. в таблице значений в колонке "Номенклатура" для группировки отчета сформировать текстовое представление,
содержащее все необходимые данные по номенклатуре, например: "арт.256987 # Кофварка для хорошего настроения"
2. добавить вывод дополнительного значения отдельной колонкой, например, предполагается вывод отчета с группировками "Номенклатура" и "Контрагент".
Если, например, для группировки/измерения "Номенклатура" надо вывести "Артикул", а для группировки/измерения "Контрагент" надо вывести "ИНН",
то ТЗ должна иметь колонки с дополнительными значениями для вывода, например: "Номенклатура,Контрагент,ИНН,Артикул,СуммаПродаж" и
организовать передачу параметров следующим образом:
СписокДопКолонок = СоздатьОбъект("СписокЗначений");
СписокДопКолонок.ДобавитьЗначение("Артикул", "Номенклатура");
СписокДопКолонок.ДобавитьЗначение("ИНН", "Контрагент");
Тогда при формировании отчета для группировки "Номенклатура" в доп.колонке будет выведено значение Артикула,
а для группировки "Контрагент" будет выведено значение ИНН.
Внимание: если в таблице для формирования отчета есть колонки "Артикул" и "ИНН", но эти колонки не упомянуты в списке дополнительных колонок,
то такие колонки рассматриваются как отдельные группировки - по ним также можно гурппировать отчет (например, для вывода товаров
с совпадающими артикулами можно задать вывод в порядке группировок "Артикул,Номенклатура". если вывод Артикула и ИНН - не нужен
при формированиии отчета, но такие колонки есть в таблице - перед выводом отчета надо отключить их вывод или передать в параметрах
отключение вывода (см. СЗгруппировок).
Иногда, для удобства манипулирования с готовым отчетом, подсчетом значений - в таблицу для отчета (на этапе ее формирования)
можно добавить числовую колонку "Счетчик" и по каждой строке заполнить ее значением 1.
//...
//вызовем универсальный отчет по ТЗ
//в списке значений передадим параметры
// - саму таблицу значений для вывода, параметр "ТаблицаЗначений"
// - список "счетных" колонок, параметр "СписокПоказателей"
// - список группировок, параметр "СписокВыводаГруппировок" (может отсутствовать)
// - список дополнительных колонок, параметр "СписокДополнительныхКолонок" (может отсутствовать)
// - заголовок для отчета, параметр "Заголовок" (может отсутствовать)
КонтекстВызова = СоздатьОбъект("СписокЗначений");
КонтекстВызова.ДобавитьЗначение(ТЗ,"ТаблицаЗначений");
КонтекстВызова.ДобавитьЗначение(СЗПоказателей,"СписокПоказателей");
КонтекстВызова.ДобавитьЗначение(СЗПоказателей,"СписокВыводаГруппировок"); //параметр может отсутствовать
КонтекстВызова.ДобавитьЗначение(СписокДопКолонок,"СписокДополнительныхКолонок"); //параметр может отсутствовать
КонтекстВызова.ДобавитьЗначение(МойЗаголовокОтчета,"Заголовок"); //параметр может отсутствовать
//...
ПутьОбработки = ""; ИмяОбработки = "";
РасположениеФайла(ПутьОбработки, ИмяОбработки);
ОткрытьФорму("Отчет", КонтекстВызова, ПутьОбработки+"ОтчетПоТЗ.ert");
КонецПроцедуры //Сформировать()
Обновление 12.10.22
Модифицировано: возможность вывода дополнительных колонок-значений для строк группировок
Обновление 30.11.19
Модифицировано: выполняется автонастройка ширины колонок таблицы расшифровки числовых показателей
Обновление 29.11.19
Добавлена возможность манипулировать настройками вывода группировок программно при вызове отчета.
ВНИМАНИЕ: СПЕЦИАЛЬНО ДЛЯ ТЕХ, КТО НЕ УМЕЕТ ЧИТАТЬ, ПИШУ БОЛЬШИМИ ЖИРНЫМИ КРАСНЫМИ БУКВАМИ: ОБРАБОТКУ СЛЕДУЕТ ВЫЗЫВАТЬ КАК ОПИСАНО ВЫШЕ, ИСПОЛЬЗУЯ ПРОГРАММНЫЙ ОПЕРАТОР ОткрытьФорму("Отчет",....) - НИКАКИМИ ДРУГИМИ СПОСОБаМИ ДАННУЮ ОБРАБОТКУ ОТКРЫВАТЬ НЕ СЛЕДУЕТ!