Имя: Пароль:
1C
1С v8
Вывести в печатную форму итог по колонке Сумма
, ,
0 26021986
 
01.03.13
20:24
Есть документ "Накладная" В документе колонка "Сумма" Как вывести итог по колонке "Сумма" в печатную форму

Листинг


Процедура Печать(ТабДок, Ссылка) Экспорт
   //{{_КОНСТРУКТОР_ПЕЧАТИ(Печать)
   Макет = Документы.Накладная.ПолучитьМакет("Печать");
   Запрос = Новый Запрос;
   Запрос.Текст =
   "ВЫБРАТЬ
   |    Накладная.Дата,
   |    Накладная.Итого,
   |    Накладная.Клиент,
   |    Накладная.Номер,
   |    Накладная.Материалы.(
   |        НомерСтроки,
   |        Номенклатура,
   |        Количество,
   |        Цена,
   |        Сумма
   |    )
   |ИЗ
   |    Документ.Накладная КАК Накладная
   |ГДЕ
   |    Накладная.Ссылка В (&Ссылка)";
   Запрос.Параметры.Вставить("Ссылка", Ссылка);
   Выборка = Запрос.Выполнить().Выбрать();

   ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
   Шапка = Макет.ПолучитьОбласть("Шапка");
   ОбластьМатериалыШапка = Макет.ПолучитьОбласть("МатериалыШапка");
   ОбластьМатериалы = Макет.ПолучитьОбласть("Материалы");
   Подвал = Макет.ПолучитьОбласть("Подвал");

   ТабДок.Очистить();

   ВставлятьРазделительСтраниц = Ложь;
   Пока Выборка.Следующий() Цикл
       Если ВставлятьРазделительСтраниц Тогда
           ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
       КонецЕсли;

       ТабДок.Вывести(ОбластьЗаголовок);

       Шапка.Параметры.Заполнить(Выборка);
       ТабДок.Вывести(Шапка, Выборка.Уровень());

       ТабДок.Вывести(ОбластьМатериалыШапка);
       ВыборкаМатериалы = Выборка.Материалы.Выбрать();
       Пока ВыборкаМатериалы.Следующий() Цикл
           ОбластьМатериалы.Параметры.Заполнить(ВыборкаМатериалы);
           ТабДок.Вывести(ОбластьМатериалы, ВыборкаМатериалы.Уровень());
       КонецЦикла;

       Подвал.Параметры.Заполнить(Выборка);
       Подвал.Параметры.Итого=ТУТ ДОЛЖНА БЫТЬ ИТОГОВАЯ ПО КОЛОНКЕ СУММА;
       ТабДок.Вывести(Подвал);

       ВставлятьРазделительСтраниц = Истина;
   КонецЦикла;
   //}}
КонецПроцедуры
1 Жан Пердежон
 
01.03.13
20:30
86е атакуют
2 Serg_1960
 
01.03.13
20:45
А посмотреть в типовых формах? Там везде итоги по количеству и суммам выводятся.

Эх, 86-е... тяжелое детство... игрушки, прибитые к потолку...

:)
3 Жан Пердежон
 
01.03.13
20:48
эхо чернобыля
4 Lancer666
 
01.03.13
21:08
Собирай сумму в той части где ты делаешь обход по табличной части, не забыв при этом обнулить её перед обходом по циклу.

Пока Выборка.Следующий() Цикл
       Если ВставлятьРазделительСтраниц Тогда
           ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
       КонецЕсли;

       ТабДок.Вывести(ОбластьЗаголовок);

       Шапка.Параметры.Заполнить(Выборка);
       ТабДок.Вывести(Шапка, Выборка.Уровень());

       ТабДок.Вывести(ОбластьМатериалыШапка);
       ВыборкаМатериалы = Выборка.Материалы.Выбрать();
СуммаИтого=0;        
Пока ВыборкаМатериалы.Следующий() Цикл
           ОбластьМатериалы.Параметры.Заполнить(ВыборкаМатериалы);
СуммаИтого=СуммаИтого+ВыборкаМатериалы.Сумма;
           ТабДок.Вывести(ОбластьМатериалы, ВыборкаМатериалы.Уровень());
       КонецЦикла;

       Подвал.Параметры.Заполнить(Выборка);
       Подвал.Параметры.Итого=СуммаИтого;
       ТабДок.Вывести(Подвал);

       ВставлятьРазделительСтраниц = Истина;
   КонецЦикла;
   //}}
5 zak555
 
01.03.13
21:10
> СуммаИтого=СуммаИтого+ВыборкаМатериалы.Сумма;

убрать

заменить

> СуммаИтого=0;  


на

СуммаИтого=ВыборкаМатериалы.Сумма;
6 Lancer666
 
01.03.13
21:23
zak555, как так, мы же тогда не соберем сумму по всем строкам табличной части? Или я не прав?
7 zak555
 
01.03.13
21:23
а что сумма в запрос не вычисляется ?
8 Lancer666
 
01.03.13
21:32
zak555, в запросе нет, мы только когда проходим по всем строкам документа может собрать сумму
9 Neg
 
01.03.13
21:38
ИтогоСумма = Итог("Сумма");
10 26021986
 
01.03.13
21:41
zak555 Красава!!!!!!!!!!!!!!!!! Все получилось!!!
Спасибо большое!!!! Выучусь и тоже всем обьяснять буду!!!! zak555 Мегамозг!!!!!!!
11 Lancer666
 
01.03.13
22:33
То есть работает код???:
Пока Выборка.Следующий() Цикл
       Если ВставлятьРазделительСтраниц Тогда
           ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
       КонецЕсли;

       ТабДок.Вывести(ОбластьЗаголовок);

       Шапка.Параметры.Заполнить(Выборка);
       ТабДок.Вывести(Шапка, Выборка.Уровень());

       ТабДок.Вывести(ОбластьМатериалыШапка);
       ВыборкаМатериалы = Выборка.Материалы.Выбрать();
СуммаИтого = ВыборкаМатериалы.Сумма;        
Пока ВыборкаМатериалы.Следующий() Цикл
           ОбластьМатериалы.Параметры.Заполнить(ВыборкаМатериалы);

           ТабДок.Вывести(ОбластьМатериалы, ВыборкаМатериалы.Уровень());
       КонецЦикла;

       Подвал.Параметры.Заполнить(Выборка);
       Подвал.Параметры.Итого=СуммаИтого;
       ТабДок.Вывести(Подвал);

       ВставлятьРазделительСтраниц = Истина;
   КонецЦикла;
   //}}
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.