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

Как правильно передать значение в макет?

Автор Yamuna, 04 мар 2020, 11:27

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

Yamuna

Добрый день, подскажите как правильно передать значение в ячейку макета. В отчете есть под заголовок "Прочие нематериальные активы" и у него должно выводиться сумма количества и сумма денег накапливаемые в цикле, а ниже проходит сам цикл. и у меня не получается вывести суммируемые количество и сумму в макет так как подзаголовок находится выше Цикла. как быть в этой ситуации?

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

ef0din

Цитата: Yamuna от 04 мар 2020, 11:27
Добрый день, подскажите как правильно передать значение в ячейку макета. В отчете есть под заголовок "Прочие нематериальные активы" и у него должно выводиться сумма количества и сумма денег накапливаемые в цикле, а ниже проходит сам цикл. и у меня не получается вывести суммируемые количество и сумму в макет так как подзаголовок находится выше Цикла. как быть в этой ситуации?

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

Может прям в запросе вычислить сумму, добавить ее в каждую из строк запроса и, при первой итерации, выводить шапку?

Yamuna

Цитата: ef0din от 04 мар 2020, 11:31
Может прям в запросе вычислить сумму, добавить ее в каждую из строк запроса и, при первой итерации, выводить шапку?
можете подсказать как это реализовать?

LexaK

самое простое, попробуйте так
ВыборкаНемАктивы = РезультатЗапроса.Выбрать();     Пока ВыборкаНемАктивы.Следующий() Цикл         ОбластьНемАктивы.Параметры.НаименованиеНемАктив = ВыборкаНемАктивы.НаименованиеНемАкт;         ОбластьНемАктивы.Параметры.КолВоНемАкт = ВыборкаНемАктивы.КоличествоНемАкт;         ОбластьНемАктивы.Параметры.СуммаНемАкт = ВыборкаНемАктивы.СуммаНемАкт;         ТабДок.Вывести(ОбластьНемАктивы, ВыборкаНемАктивы.Уровень());         ВсегоКолНемАкт = ВсегоКолНемАкт+ВыборкаНемАктивы.КоличествоНемАкт;         ВсегоСумНемАкт = ВсегоСумНемАкт+ВыборкаНемАктивы.СуммаНемАкт;     КонецЦикла;     //вывод итогов         ОбластьНемАктивы.Параметры.НаименованиеНемАктив = "ИТОГИ";         ОбластьНемАктивы.Параметры.КолВоНемАкт = ВсегоКолНемАкт;         ОбластьНемАктивы.Параметры.СуммаНемАкт = ВсегоСумНемАкт;         ТабДок.Вывести(ОбластьНемАктивы); // уровень?
если помогло нажмите: Спасибо!

Yamuna

Цитата: LexaK от 04 мар 2020, 11:36
самое простое, попробуйте так
ВыборкаНемАктивы = РезультатЗапроса.Выбрать();     Пока ВыборкаНемАктивы.Следующий() Цикл         ОбластьНемАктивы.Параметры.НаименованиеНемАктив = ВыборкаНемАктивы.НаименованиеНемАкт;         ОбластьНемАктивы.Параметры.КолВоНемАкт = ВыборкаНемАктивы.КоличествоНемАкт;         ОбластьНемАктивы.Параметры.СуммаНемАкт = ВыборкаНемАктивы.СуммаНемАкт;         ТабДок.Вывести(ОбластьНемАктивы, ВыборкаНемАктивы.Уровень());         ВсегоКолНемАкт = ВсегоКолНемАкт+ВыборкаНемАктивы.КоличествоНемАкт;         ВсегоСумНемАкт = ВсегоСумНемАкт+ВыборкаНемАктивы.СуммаНемАкт;     КонецЦикла;     //вывод итогов         ОбластьНемАктивы.Параметры.НаименованиеНемАктив = "ИТОГИ";         ОбластьНемАктивы.Параметры.КолВоНемАкт = ВсегоКолНемАкт;         ОбластьНемАктивы.Параметры.СуммаНемАкт = ВсегоСумНемАкт;         ТабДок.Вывести(ОбластьНемАктивы); // уровень?

LexaK а там у меня итоги должны вывестись выше цикла в макете, сначала выводится итоги, а потом уже разные записи, а итоги сверху хотят выводить, это надо как то в запросе уже сразу считать и потом когда выводить сначала итоги в цикле а потом записи,вот только не знаю как итоги сразу посчитать в запросе, это еще один пакетный запрос надо?

LexaK

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

ef0din

Цитата: Yamuna от 04 мар 2020, 11:27
Добрый день, подскажите как правильно передать значение в ячейку макета. В отчете есть под заголовок "Прочие нематериальные активы" и у него должно выводиться сумма количества и сумма денег накапливаемые в цикле, а ниже проходит сам цикл. и у меня не получается вывести суммируемые количество и сумму в макет так как подзаголовок находится выше Цикла. как быть в этой ситуации?

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


В запросе добавляете поле и заполняете для каждой из строк необходимой общей суммой.
Перед циклом: "ЭтоПервый = Истина". В цикле:
Если ЭтоПервый Тогда
//получаем макет шапки, подставляем значением добавленного в запросе поля, выводим
ЭтоПервый = Ложь;
Иначе
КонецЕсли;

LexaK, видимо имеет в виду, что это через параметр метода "Вывести" "уровень" можно сделать проще. Самому как-то не приходилось пользоваться им, так что почитайте об этом методе подробней в синтаксис-помощнике, мб и правда изобретать велосипед нет смысла.

Yamuna

Цитата: LexaK от 04 мар 2020, 12:43
можно так сделать, вот это
ВыборкаНемАктивы = РезультатЗапроса.Выбрать();
замените на
ТЗНемАктивы = РезультатЗапроса.Выгрузить();
получаете таблицу значений, по ней легко посчитать итоги
//вывод итогов         ОбластьНемАктивы.Параметры.НаименованиеНемАктив = "ИТОГИ";         ОбластьНемАктивы.Параметры.КолВоНемАкт = ТЗНемАктивы.Итог("КоличествоНемАкт");         ОбластьНемАктивы.Параметры.СуммаНемАкт = ТЗНемАктивы.Итог("СуммаНемАкт");         ТабДок.Вывести(ОбластьНемАктивы); //затем выводите ТЗ Для каждого ВыборкаНемАктивы Из ТЗНемАктивы Цикл     //как было КонецЦикла;

LexaK Как всегда у Вас все правильно, спасибо большое!

Теги:

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

Рейтинг@Mail.ru

Поиск