Каталог решений - [NotaBene] Универсальный отчет по таблице значений

[NotaBene] Универсальный отчет по таблице значений

[NotaBene] Универсальный отчет по таблице значений

В наличии

1C v.7.7 Готовое решение. Не требует настройки. Не требует допрограммирования. Данная обработка решает часто встречающуюся задачу вывода в «красивом» виде таблицы значений (полученной, например, из запроса). Поддерживается произвольное группирование данных, отключение/включение группировок, в т.ч и создание «шахматок» (типа «продажи понедельно»). Обработка может использоваться как и в отладочных целях (для нормального просмотра ТЗ), так и в составе вполне рабочих отчетов. По крайней мере, я неоднократно клиентам данную обработку ставил вместо того, чтобы каждый раз писать замороченные выводы данных. И клиенты довольны, и мне — проще…

Категория:

Описание

Подробный пример использования данной обработки в составе отчета по оплатам приведен здесь: //sale.itcity.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,"ТипЯчейки"); //неуказаннные группировки имеют значение 1 — по строкам
        СЗгруппировок.ДобавитьЗначение(0,"АдресЯчейки");
 
//Параметр "Заголовок", может отсутствовать        
//текст, выводится как заголовок отчета
        
//…
//вызовем универсальный отчет по ТЗ
//в списке значений передадим параметры
// — саму таблицу значений для вывода, параметр "ТаблицаЗначений"
// — список "счетных" колонок, параметр "СписокПоказателей"
// — список группировок, параметр "СписокВыводаГруппировок" (может отсутствовать)
// — заголовок для отчета, параметр "Заголовок" (может отсутствовать)

КонтекстВызова = СоздатьОбъект("СписокЗначений");
КонтекстВызова.ДобавитьЗначение(ТЗ,"ТаблицаЗначений");
КонтекстВызова.ДобавитьЗначение(МойЗаголовокОтчета,"Заголовок");
КонтекстВызова.ДобавитьЗначение(СЗПоказателей,"СписокПоказателей");
КонтекстВызова.ДобавитьЗначение(СЗПоказателей,"СписокВыводаГруппировок"); //если не указывать параметр — все группировки = по строкам
//…
ПутьОбработки = ""; ИмяОбработки = "";
РасположениеФайла(ПутьОбработки, ИмяОбработки);
ОткрытьФорму("Отчет", КонтекстВызова, ПутьОбработки+"ОтчетПоТЗ.ert");

КонецПроцедуры //Сформировать()

Обновление 30.11.19
Модифицировано: выполняется автонастройка ширины колонок таблицы расшифровки числовых показателей

Обновление 29.11.19
Добавлена возможность манипулировать настройками вывода группировок программно при вызове отчета.

ВНИМАНИЕ: СПЕЦИАЛЬНО ДЛЯ ТЕХ, КТО НЕ УМЕЕТ ЧИТАТЬ, ПИШУ БОЛЬШИМИ ЖИРНЫМИ КРАСНЫМИ БУКВАМИ: ОБРАБОТКУ СЛЕДУЕТ ВЫЗЫВАТЬ КАК ОПИСАНО ВЫШЕ, ИСПОЛЬЗУЯ ПРОГРАММНЫЙ ОПЕРАТОР  ОткрытьФорму("Отчет",….) — НИКАКИМИ ДРУГИМИ СПОСОБаМИ ДАННУЮ ОБРАБОТКУ ОТКРЫВАТЬ НЕ СЛЕДУЕТ!

has been added to your cart:
Оформление заказа