Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 06:54

Вывод итогов после запроса

Автор 2С, 05 окт 2014, 01:50

0 Пользователей и 1 гость просматривают эту тему.

Всем привет! У меня возник наилегчайший вопрос по выводу итогов, подскажите пожалуйста. Существует запрос:

Запрос.Текст="ВЫБРАТЬ РАЗЛИЧНЫЕ
             | ЕСТЬNULL(ТиповойОстаткиИОбороты.СуммаКонечныйОстатокДт, 0) КАК СумКон,
             | ЕСТЬNULL(ТиповойОстаткиИОбороты.СуммаКонечныйРазвернутыйОстатокДт, 0) КАК СумРаз,
             | ЕСТЬNULL(ТиповойОстаткиИОбороты.СуммаКонечныйОстатокДт, 0) КАК КонСум,
             | СУММА(ЕСТЬNULL(ТиповойОстаткиИОбороты.СуммаКонечныйОстатокДт, 0)) КАК СумСум,
             | ТиповойОстаткиИОбороты.Валюта КАК Валюта,
             | ТиповойОстаткиИОбороты.СуммаКонечныйОстатокДт КАК СуммаКонечныйОстатокДт,
             | ТиповойОстаткиИОбороты.СуммаКонечныйРазвернутыйОстатокДт КАК СуммаКонечныйРазвернутыйОстатокДт
             |ИЗ
             | Документ.Остатки КАК Остатки
             | ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Типовой.ОстаткиИОбороты(&ДатаНач, &ДатаКон) КАК ТиповойОстаткиИОбороты
             | ПО Остатки.Валюта = ТиповойОстаткиИОбороты.Валюта
             |ГДЕ
             | И ТиповойОстаткиИОбороты.Валюта <> &Валюта
             |
             |СГРУППИРОВАТЬ ПО
             | ТиповойОстаткиИОбороты.Валюта,
             | ТиповойОстаткиИОбороты.СуммаКонечныйОстатокДт,
             | ТиповойОстаткиИОбороты.СуммаКонечныйРазвернутыйОстатокДт

Запрос.УстановитьПараметр("СуммаКонечныйРазвернутыйОстатокДт", СумРаз);
Запрос.УстановитьПараметр("СуммаКонечныйОстатокДт",СумКон);
Запрос.УстановитьПараметр("СуммаКонечныйОстатокДт",КонСум);
Запрос.УстановитьПараметр("СуммаКонечныйОстатокДт",СумСум);

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


Требуется вывести итого (СумСум), но уже в отдельную область макета. Делаю следующее:

ОбластьМакета = Макет.ПолучитьОбласть("Группа2_Ито");
ОбластьМакета.Параметры.ПерваяСумма = Выборка.СумСум;
ОбластьМакета.Параметры.ВтораяСумма = Выборка.СумСум;
ТабДокумент.Вывести(ОбластьМакета);


       В разделе "Итого" выводится только последнее значение, умноженное на 3. Поскольку имеется цикл, хотелось бы, чтобы сумма выводилась общая, а не только операции с последним значением. Буду благодарен за любую помощь!

Цитата: 2С от 05 окт 2014, 01:50ОбластьМакета.Параметры.ПерваяСумма = Выборка.СумСум;
ОбластьМакета.Параметры.ВтораяСумма = Выборка.СумСум;

Цитата: 2С от 05 окт 2014, 01:50


Пардон, чтобы не ввести в заблуждение, читайте только первую строчку: ОбластьМакета.Параметры.ПерваяСумма = Выборка.СумСум;

cska-fanat-kz

В цикле обхода выборки считайте параллельно итоговую сумму в отдельную переменную, а по окончании цикла выводите в соответствующий параметр...
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

freez1301


Цитата: cska-fanat-kz от 06 окт 2014, 09:38
В цикле обхода выборки считайте параллельно итоговую сумму в отдельную переменную, а по окончании цикла выводите в соответствующий параметр...

А можно поподробнее, пожалуйста. Лучше на моем примере, если можно.

cska-fanat-kz

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

ОбластьИтог. Параметры.ИтогСумСум = ИтогСумСум;
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Цитата: cska-fanat-kz от 06 окт 2014, 10:43
...
Выборка = Запрос.Выполнить().Выбрать();
ИтогСумСум = 0;
    Пока Выборка.Следующий() Цикл
    ОбластьМакета.Параметры.ВидВалСтр = Выборка.Валюта;
    ОбластьМакета.Параметры.СумРаз    = Выборка.СумРаз;
    ОбластьМакета.Параметры.СумКон    = Выборка.СумКон;
    ОбластьМакета.Параметры.КонСум      = Выборка.КонСум;
    ТабДокумент.Вывести(ОбластьМакета);
ИтогСумСум = ИтогСумСум + 0;
    КонецЦикла;

ОбластьИтог. Параметры.ИтогСумСум = ИтогСумСум;


Спасибо большое! Сделал, но из-за моей криворукости итог не вывелся. В чем может быть причина (помимо кривых рук):

Запрос.Текст="ВЫБРАТЬ РАЗЛИЧНЫЕ
                 |    СУММА (ЕСТЬNULL(Типовой.СуммаК, 0)) КАК СумКон,
                 |    ЕСТЬNULL(ТиповойОстаткиИОбороты.СуммаКонечныйРазвернутыйОстатокДт, 0) КАК СумРаз,
                 |    ЕСТЬNULL(ТиповойОстаткиИОбороты.СуммаКонечныйОстатокДт, 0) КАК КонСум,
                 |    СУММА(ЕСТЬNULL(ТиповойОстаткиИОбороты.СуммаКонечныйОстатокДт, 0)) КАК СумСум,
                 |    СУММА(ЕСТЬNULL(Типовой.Сумма, 0)) КАК ИтогСумСум,
                 |    ТиповойОстаткиИОбороты.Валюта КАК Валюта,
                 |    ТиповойОстаткиИОбороты.СуммаКонечныйОстатокДт КАК СуммаКонечныйОстатокДт,
                 |    ТиповойОстаткиИОбороты.СуммаКонечныйРазвернутыйОстатокДт КАК СуммаКонечныйРазвернутыйОстатокДт
                 |ИЗ
                 |    Документ.Остатки КАК Остатки
                 |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Типовой.ОстаткиИОбороты(&ДатаНач, &ДатаКон) КАК ТиповойОстаткиИОбороты
                 |        ПО Остатки.Валюта = ТиповойОстаткиИОбороты.Валюта
                 |ГДЕ
                 |    И ТиповойОстаткиИОбороты.Валюта <> &Валюта
                 |
                 |СГРУППИРОВАТЬ ПО
                 |    ТиповойОстаткиИОбороты.Валюта,
                 |    ТиповойОстаткиИОбороты.СуммаКонечныйОстатокДт,
                 |    ТиповойОстаткиИОбороты.СуммаКонечныйРазвернутыйОстатокДт

    Запрос.УстановитьПараметр("СуммаКонечныйРазвернутыйОстатокДт", СумРаз);
    Запрос.УстановитьПараметр("СуммаКонечныйОстатокДт",СумКон);
    Запрос.УстановитьПараметр("СуммаКонечныйОстатокДт",КонСум);
    Запрос.УстановитьПараметр("СуммаКонечныйОстатокДт",СумСум);


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


    ОбластьМакета = Макет.ПолучитьОбласть("Группа3_Ито");
    ОбластьМакета.Параметры. ИтогСумСум = Выборка.ИтогСумСум;
    ТабДокумент.Вывести(ОбластьМакета);



cska-fanat-kz

сперва я немного наврал, потом - ВЫ.

ИтогСумСум = ИтогСумСум + Выборка.СумСум;
...
ОбластьМакета.Параметры. ИтогСумСум = ИтогСумСум;
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Цитата: cska-fanat-kz от 06 окт 2014, 13:16
сперва я немного наврал, потом - ВЫ.

ИтогСумСум = ИтогСумСум + Выборка.СумСум;
...
ОбластьМакета.Параметры. ИтогСумСум = ИтогСумСум;

Все равно не подводит итог - только последнее число выводится, я в замешательстве :dfbsdfbsdf:

cska-fanat-kz

приведите текст запроса (и весь остальной код) на текущий момент...
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Теги: итоги Запрос 

Похожие темы (5)

Рейтинг@Mail.ru

Поиск