Итоги таблицы в отчетной форме

Новая тема
Показывать по 10 20 40 сообщений
"> Есть отчет, в котором может быть произвольное количество выводимых столбцов (зависит от данных) и, естественно, - произвольное количество строк. Как можно просчитать итоги по каждому столбцу не утяжеляя отчет на написание процедур? Если сравнивать с экселем, то что-то наподобие: Итоговая строка = ячейка1 + ячейка3 + ячека5 и т.д.

1. вообще-то нужно хоть видеть трафорет выходной таблицы
2. знаить начальный отсчет ячейки
3. ну что-то вроде такого накатать! :

//Таб - таблица из вне или уже сформированная!
Функция ЗнЯч(Т, х, у)
  ТабОбл = Т.Область(х,у);
  Возврат ТабОбл.Текст;
КонецФункции
   

х=1; у=1;
Пока 1=1 Цикл
 
  Если ПустаяСтрока(ЗнЯч(Таб, х, у))=0 Тогда
     //ТекТекст - твои данные
  Иначе
     
     Если ПустаяСтрока(ЗнЯч(Таб, х, у + 1))=0 Тогда
         у = у + 1;
     ИначеЕсли ПустаяСтрока(ЗнЯч(Таб, х + 1, 1))=0 Тогда
         х = х + 1;
         у = 1;
     Иначе
         Прервать;
     КонецЕсли;
  КонецЕсли;
КонецЦикла;
"
> Там есть какая-то функция (я не разу ею не пользовался) перебора ячеек в отчетной таблице.
Где "там"?
Горная масса (габбро) 0-500          108540.08              76.25 1081730-18 -                   -                  
          1423.500 13870-000 -                   -                  
Всего по:  Полуфабрикат

Горная масса (известняк)           70246.21              30.54 -                   1825750-45 -                  
          2300.000 -                   60043-000 -                  
Всего по:  горная масса

Известняк для флюсования 20-40 - - -                   -                   38174-00
- -                   -                   1908-700
Мука известняковая молотая             780.45             410.76 -                   -                   -                  
             1.900 -                   -                   -                  
Отсев 0-20          113105.38              20.00 -                   -                   305860-00
          5655.269 -                   -                   15293-000
Отсев 0-5           76484.56              20.00 -                   -                   57199-40
          3824.228 -                   -                   2859-970
Песок 0-5          192999.15              86.12 -                   -                   -                  
          2240.970 -                   -                   -
скрин можно?
еще бы знать, как его сюда вставить????
закинь сюда скрин radikal.ru
а потом ссылку в пост!
http://s57.radikal.ru/i156/0812/b3/0d24182132e7.jpg
вот
она - ссылка!

То, что выделено зеленым цветом - это промежуточные итоги. Естественно, что в конце таблицы будет ИТОГО общее (по промежуточным итогам).
И еще: на "скрипте" не видно (такая база попалась), но в реальности в каждой ячейке по два значения (в самом деле - это две ячейки). Для примера первый столбец с цифирями. Верхняя цифра - сумма, нижняя - количество. В таком же порядке и нужно присчитать.
покрупнее нельзя?
а то глаза можно сломапть!
http://webfile.ru/2437986

это
ссылка на файл в экселе.
"> Как можно просчитать итоги по каждому столбцу не утяжеляя отчет на написание процедур

ну что сам так и не смог написать?

Фунцкия ЗнЯч(Т, у, х)
  облТаб = Т.Область(у, х);
  Возврат ОблТаб.Текст;
КонецФункции

Процедура Подсчитать()
  //таб -- уже сформированная
  //нач точка будет у = 5, х = 2
  //у - строка, х - столбец
  х0 = 2; у0 = 5; у = у0 + 1; х = х0;
  ТЗ_Сум = СоздатьОбъект("ТаблицаЗначений");
  ТЗ_Кол = СоздатьОбъект("ТаблицаЗначений");
  Пока ПустаяСтрока(ЗнЯч(Таб, у0, х + 1))=0 Цикл
     ТЗ_Сум.НоваяКолонка("Колонка_" + х - х0 + 1, "Число");
     ТЗ_Кол.НоваяКолонка("Колонка_" + х - х0 + 1, "Число");
     х = х + 1;
  КонецЦикла;

 
  Пока (ПустаяСтрока(ЗнЯч(Таб, у, х0))=0) и (ПустаяСтрока(ЗнЯч(Таб, у + 1, х0))=1) Цикл
     Если Найти(ЗнЯч(Таб, у, х0),"Всего по:")>0 Тогда
         у = у + 1;
         Продолжить;
     КонецЕсли;
     ТЗ_Сум.НоваяСтрока();
     ТЗ_Кол.НоваяСтрока();
     Для н = 1 по х Цикл
        ТекЗн = ЗнЯч(Таб, у,  н + х0);
        ТЗ_Сум.УстановитьЗначение(у, н, ?(Найти(ТекЗн, "-")>0,0,СтрЗаменить(ТекЗн, ",", ".")));
        ТекЗн = ЗнЯч(Таб, у + 1, н + х0);
        ТЗ_Кол.УстановитьЗначение(у, н, ?(Найти(ТекЗн, "-")>0,0,СтрЗаменить(ТекЗн, ",", ".")));
     КонецЦикла;
  КонецЦикла;

  //ну и всё... можно смотреть итоги по колонкам!
  //пример, у первой посмотрим
  Сообщить("Итого сум по первой колонке = " + ТЗ_сум.Итог(1));
  Сообщить("Итого кол по первой колонке = " + ТЗ_кол.Итог(1));
КонецПроцедура

можно ещё красивеее сделать...
ну это думаю не надо!"
Читают тему
(гостей: 1)

Быстрый переход