Имя: Пароль:
1C
1С v8
Как правильно передать значение в макет?
0 YamEgor
 
04.03.20
11:33
Добрый день, подскажите как правильно передать значение в ячейку макета. В отчете есть под заголовок "Прочие нематериальные активы" и у него должно выводиться сумма количества и сумма денег накапливаемые в цикле, а ниже проходит сам цикл. и у меня не получается вывести суммируемые количество и сумму в макет так как подзаголовок находится выше Цикла. как быть в этой ситуации?

    //Итог области ШапкаНемАктивы
    ШапкаНемАктивы.Параметры.ВсегоКолВоНемАкт = ВсегоКолНемАкт;
    ШапкаНемАктивы.Параметры.ВсегоСуммаНемАкт = ВсегоСумНемАкт;
    ТабДок.Вывести(ШапкаНемАктивы);
    
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    ТиповойОстатки.Субконто1.Представление КАК НаименованиеНемАкт,
        |    1 КАК КоличествоНемАкт,
        |    ТиповойОстатки.СуммаОстаток КАК СуммаНемАкт
        |ИЗ
        |    РегистрБухгалтерии.Типовой.Остатки(&ДатаНачала, Счет = &Счет, &СубНемАкт, Субконто1.ВидНМА = &ПрочНемАктивы) КАК ТиповойОстатки";
    
    Запрос.УстановитьПараметр("ДатаНачала", ДатаНачала);
    Запрос.УстановитьПараметр("ПрочНемАктивы", Перечисления.ВидыНМА.ПрочиеНематериальныеАктивы);
    
    СубНемАкт = Новый Массив;
    СубНемАкт.Добавить(ПланыВидовХарактеристик.ВидыСубконтоТиповые.НематериальныеАктивы);
    
    Запрос.УстановитьПараметр("СубНемАкт", СубНемАкт);
    Запрос.УстановитьПараметр("Счет", ПланыСчетов.Типовой.ПрочиеНематериальныеАктивы);
    
    РезультатЗапроса = Запрос.Выполнить();
    
    ВсегоКолНемАкт = 0;
    ВсегоСумНемАкт = 0;

    ВыборкаНемАктивы = РезультатЗапроса.Выбрать();
    Пока ВыборкаНемАктивы.Следующий() Цикл
        ОбластьНемАктивы.Параметры.НаименованиеНемАктив = ВыборкаНемАктивы.НаименованиеНемАкт;
        ОбластьНемАктивы.Параметры.КолВоНемАкт = ВыборкаНемАктивы.КоличествоНемАкт;
        ОбластьНемАктивы.Параметры.СуммаНемАкт = ВыборкаНемАктивы.СуммаНемАкт;
        ТабДок.Вывести(ОбластьНемАктивы, ВыборкаНемАктивы.Уровень());
        ВсегоКолНемАкт = ВсегоКолНемАкт+ВыборкаНемАктивы.КоличествоНемАкт;
        ВсегоСумНемАкт = ВсегоСумНемАкт+ВыборкаНемАктивы.СуммаНемАкт;
    КонецЦикла;
1 K1RSAN
 
04.03.20
11:35
То есть надо сначала "группу" с итогом по "подгруппе", а потом сама "подгруппа" выводится?
2 ДенисЧ
 
04.03.20
11:35
Посчитать заранее. И сразу вывести итог.
3 dka80
 
04.03.20
11:37
В запросе добавить Итоги
4 YamEgor
 
04.03.20
11:39
(2) можете подсказать как это сделать?
5 YamEgor
 
04.03.20
13:22
сделал вот так (может кому понадобится):      
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    ТиповойОстатки.Субконто1.Представление КАК НаименованиеНемАкт,
        |    1 КАК КоличествоНемАкт,
        |    ТиповойОстатки.СуммаОстаток КАК СуммаНемАкт
        |ИЗ
        |    РегистрБухгалтерии.Типовой.Остатки(&ДатаНачала, Счет = &Счет, &СубНемАкт, Субконто1.ВидНМА = &ПрочНемАктивы) КАК ТиповойОстатки";
    
    Запрос.УстановитьПараметр("ДатаНачала", ДатаНачала);
    Запрос.УстановитьПараметр("ПрочНемАктивы", Перечисления.ВидыНМА.ПрочиеНематериальныеАктивы);
    
    СубНемАкт = Новый Массив;
    СубНемАкт.Добавить(ПланыВидовХарактеристик.ВидыСубконтоТиповые.НематериальныеАктивы);
    
    Запрос.УстановитьПараметр("СубНемАкт", СубНемАкт);
    Запрос.УстановитьПараметр("Счет", ПланыСчетов.Типовой.ПрочиеНематериальныеАктивы);
    
    РезультатЗапроса = Запрос.Выполнить();

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