Имя: Пароль:
1C
1С v8
Итоги в Макете
0 Kamich
 
21.03.13
20:26
Добрый день. Ситуация такая.
При выводе макета происходит следующая процедура:
Стр=ЭлементыФормы.Инфо.ТекущаяСтрока;
   ТабДок = Новый ТабличныйДокумент;
   Макет = Обработки.РабочийСтол.ПолучитьМакет("Отчет");
   Запрос = Новый Запрос;
   Запрос.Текст =
   "ВЫБРАТЬ
   |    РасчетыОстаткиИОбороты.Заявка,
   |    ПРЕДСТАВЛЕНИЕ(РасчетыОстаткиИОбороты.Заявка),
   |    РасчетыОстаткиИОбороты.Клиент,
   |    ПРЕДСТАВЛЕНИЕ(РасчетыОстаткиИОбороты.Клиент),
   |    РасчетыОстаткиИОбороты.Программа,
   |    ПРЕДСТАВЛЕНИЕ(РасчетыОстаткиИОбороты.Программа),
   |    РасчетыОстаткиИОбороты.СуммаUSDОборотДт,
   |    РасчетыОстаткиИОбороты.СуммаUSDОборотКт,
   |    РасчетыОстаткиИОбороты.СуммаUSDКонечныйОстаток,
   |    РасчетыОстаткиИОбороты.ИтогоПрограммаСоставляетОборотДт
   |ИЗ
   |    РегистрБухгалтерии.Расчеты.ОстаткиИОбороты КАК РасчетыОстаткиИОбороты
   |ГДЕ
   |    РасчетыОстаткиИОбороты.Заявка = &Заявка";
   Запрос.УстановитьПараметр("Заявка", Стр.Заявка);
   Результат = Запрос.Выполнить();

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

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

   ВыборкаДетали = Результат.Выбрать();

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



Как мне вывести ОбщийИтог в область ОбластьШапкаТаблицы получив из области ОбластьДетальныхЗаписей?
1 Kamich
 
21.03.13
20:40
У кого какие предложения?
2 Max Street
 
21.03.13
20:43
Добавь ИТОГИ ПО в запрос, затем в цикле по итоговым записям что-нибудь вроде:

ОбластьШапкаТаблицы.Параметры.<Имя_Параметра> = ВыборкаИтог.<реквизит>
3 Kamich
 
21.03.13
20:47
Что-то типа :
   |ИТОГИ ПО
   |    СуммаUSDОборотКт
?
4 Max Street
 
21.03.13
20:52
скорее так:

|ИТОГИ
|Сумма(СуммаUSDОборотКт)
|ПО
|//поле, по которому требуется подсчитать итоги
5 Kamich
 
21.03.13
21:03
(4) Другой способ есть, ну чтобы было без "вкладок", и получалось буд-то бы берется из реквизита?
6 Max Street
 
21.03.13
21:14
Ну если не хочешь ИТОГИ, то можно, в принципе, накапливать значение в цикле. Но итоги в запросе по-моему проще
7 Kamich
 
21.03.13
21:19
Сделал следующее:
   |ИТОГИ
   |Сумма(СуммаUSDОборотКт) ПО СуммаUSDОборотКт

и добавил :
ОбластьШапкаТаблицы.Параметры.ИтогоПрограммаСоставляет=Рез.СуммаUSDОборотКт;

Выводит только последнюю позицию итога
8 Kamich
 
21.03.13
21:30
Что не так?
9 Max Street
 
21.03.13
21:30
неправильно сделал.
после ключевого слова ПО указывается поле, по которому будут подсчитываться итоги
10 Kamich
 
21.03.13
21:32
(9) Значит ПО Клиент?
11 Max Street
 
21.03.13
21:33
Да, если надо подсчитаь итоги по каждому клиенту
12 Max Street
 
21.03.13
21:35
ну а если по всем клиентам тогда:
|ИТОГИ
|Сумма(Сумма)
|ПО
|Общие

как-то так
13 Kamich
 
21.03.13
21:36
А то что касается вывода общего итога:
ОбластьШапкаТаблицы.Параметры.Сумма=Рез.СуммаUSDОборотКт;
14 Kamich
 
21.03.13
21:37
Выводит только последний итог, последнего клиента в списке
15 Max Street
 
21.03.13
21:46
По-моему должно быть так:

|ИТОГИ
|Сумма(Сумма)
|ПО
|Клиент";

Результат = Запрос.Выполнить();
ВыборкаИтог = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

Пока ВыборкаИтог.Следующий() Цикл
   ОбластьШапкаТаблицы.Параметры.Сумма = ВыборкаИтог.Сумма;
   ...
16 Kamich
 
21.03.13
21:55
(15)  Спасибо!)))
Работает),
Чуток только под корректировать и то что надо!)
Я ни когда не встречался с этим:
ВыборкаИтог = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

Что это означает("Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам)")?
17 Max Street
 
21.03.13
21:59
Не за что))
Итоги перебирают записи, добавляя результирующую строку перед ДетальнымиЗаписями. А ОбходРезультатаЗапроса.ПоГруппировкам означает, что выбираться будут только эти результирующие строки
18 Kamich
 
21.03.13
22:02
(17) Отлично) Спасибо Вам за выделенное время!)