|   |   | 
| 
 | Итоги в Макете | ☑ | ||
|---|---|---|---|---|
| 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) Отлично) Спасибо Вам за выделенное время!)     | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |