Книга знаний

1С:Предприятие / Объекты конфигурации / Отчеты

Расчет итогов по группировкам в уже сформированной таблице 7.7

Иногда удобнее вывести итоги по группировкам в уже сформированной таблице. Вместо итоговых сумм для этой цели нужно вывести признаки, например "***" и "****", а числовые значения для суммирования вывести в расшифровках. Приведен код для 1С:Предприятие 7.7, который расчитывает суммы и помещает их вместо признаков в таблицу.Автор статьи: romix
Последняя редакция №1 от 17.08.11
URL: http://kb.mista.ru/article.php?id=837

Ключевые слова: таблица, итоги, группировки


Процедура РасчетИтоговСнизуВверх(прм_Таблица, прм_Колонка, прм_Признак)
    //Принимает на входе ссылку на таблицу, номер колонки таблицы и признак.
    //В колонке таблицы должны быть расставлены признаки, куда писать сумму, например "***",
    //а числовые значения, которые надо суммировать, должны быть выведены в расшифровках.
    //Просматривает таблицу снизу вверх (это нужно, например, для построения промежуточных итогов, 
    //где итоги выше самих сумм).
    таб=прм_Таблица;
    нс=таб.ВысотаТаблицы();
    сумма=0;
    Пока нс>=1 Цикл
        обл=таб.Область(нс,прм_Колонка);
        зн=СокрЛП(обл.Текст);

        Если зн=прм_Признак Тогда
            //Если встретили признак, например "***"
            //пишем вместо него сумму
            обл.Текст=Формат(сумма,"N19.2, ");
            //Обнуляем сумму
            сумма=0;
        Иначе
            //Считываем числовое значение из расшифровки
            ч=Число(обл.Расшифровка());
            сумма=сумма+ч;
        КонецЕсли;    
        //Движемся вверх по таблице
        нс=нс-1;
    КонецЦикла;    
КонецПроцедуры    


Процедура РасчетИтоговСверхуВниз(прм_Таблица, прм_Колонка, прм_Признак)
    //Принимает на входе ссылку на таблицу, номер колонки таблицы и признак.
    //В колонке таблицы должны быть расставлены признаки, куда писать сумму, например "****",
    //а числовые значения, которые надо суммировать, должны быть выведены в расшифровках.
    //Просматривает таблицу сверху вниз (это нужно, например, для построения окончательных итогов, 
    //где итоги расположены ниже самих сумм).
    таб=прм_Таблица;
    сумма=0;
    Для нс=1 по таб.ВысотаТаблицы() Цикл
        обл=таб.Область(нс,прм_Колонка);
        зн=СокрЛП(обл.Текст);

        Если зн=прм_Признак Тогда
            //Если встретили признак, например "***"
            //пишем вместо него сумму
            обл.Текст=Формат(сумма,"N19.2, ");
            //Обнуляем сумму
            сумма=0;
        Иначе
            //Считываем числовое значение из расшифровки
            ч=Число(обл.Расшифровка());
            сумма=сумма+ч;
        КонецЕсли;    
    КонецЦикла;    
КонецПроцедуры    


//*******************************************
Процедура Сформировать()
    таб=СоздатьОбъект("Таблица");
    таб.ИсходнаяТаблица("Таблица");
    таб.ВывестиСекцию("Шапка");
    таб.ВывестиСекцию("Строки");
    
    //Таблица сформирована - расчитаем итоги
    
    колонка=1;
    РасчетИтоговСнизуВверх(таб, колонка, "***");
    РасчетИтоговСверхуВниз(таб, колонка, "****");
    колонка=2;
    РасчетИтоговСнизуВверх(таб, колонка, "***");
    РасчетИтоговСверхуВниз(таб, колонка, "****");
    
    таб.Показать();

КонецПроцедуры
Закладка

Описание | Рубрикатор | Поиск | ТелепатБот | Захваченные статьи | Установки | Форум
© Станислав Митичкин (Волшебник), 2005-2011 | Mista.ru

Яндекс.Метрика