Вывод итого в различных областях макета ПФ
Здравствуйте!
Есть макет ПФ, в котором вывод суммы табличной части выводится в "ОбластьСписокИтого", подскажите, пожалуйста, как можно вывести итог в другой области макета ("Шапка"), т.е. продублировать данное значение?
Спасибо.
Есть макет ПФ, в котором вывод суммы табличной части выводится в "ОбластьСписокИтого", подскажите, пожалуйста, как можно вывести итог в другой области макета ("Шапка"), т.е. продублировать данное значение?
Макет = Документы.ВедомостьПодотчет.ПолучитьМакет("Печать");
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ВедомостьПодотчет.Дата,
| ВедомостьПодотчет.Задание,
| ВедомостьПодотчет.Номер,
| ВедомостьПодотчет.Ответственный,
| ВедомостьПодотчет.Проверил,
| ВедомостьПодотчет.Куратор,
| ВедомостьПодотчет.Работы,
| ВедомостьПодотчет.МестоРабот,
| ВедомостьПодотчет.Контрагент,
| ВедомостьПодотчет.Список.(
| НомерСтроки,
| ФИО,
| Должность,
| Период,
| Сумма,
| ЛицевойСчет,
| МестоПроведенияРабот,
| Примечание
| )
|ИЗ
| Документ.ВедомостьПодотчет КАК ВедомостьПодотчет
|ГДЕ
| ВедомостьПодотчет.Ссылка В (&Ссылка)";
Запрос.Параметры.Вставить("Ссылка", Ссылка);
Выборка = Запрос.Выполнить().Выбрать();
ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
Шапка = Макет.ПолучитьОбласть("Шапка");
ОбластьСписокШапка = Макет.ПолучитьОбласть("СписокШапка");
ОбластьСписок = Макет.ПолучитьОбласть("Список");
ОбластьСписокИтого = Макет.ПолучитьОбласть("СписокИтого");
Подвал = Макет.ПолучитьОбласть("Подвал");
ТабДок.Очистить();
ВставлятьРазделительСтраниц = Ложь;
Пока Выборка.Следующий() Цикл
Если ВставлятьРазделительСтраниц Тогда
ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
ТабДок.Вывести(ОбластьЗаголовок);
Шапка.Параметры.Заполнить(Выборка);
ТабДок.Вывести(Шапка, Выборка.Уровень());
ТабДок.Вывести(ОбластьСписокШапка);
ВыборкаСписок = Выборка.Список.Выбрать();
ИтогоСумма = 0;
Пока ВыборкаСписок.Следующий() Цикл
ОбластьСписок.Параметры.Заполнить(ВыборкаСписок);
ОбластьСписок.Параметры.ТабНом = ВыборкаСписок.ФИО.Код;
ОбластьСписок.Параметры.МестоРабот = ВыборкаСписок.МестоПроведенияРабот;
ИтогоСумма = ИтогоСумма + ВыборкаСписок.Сумма;
ТабДок.Вывести(ОбластьСписок, ВыборкаСписок.Уровень());
КонецЦикла;
ОбластьСписокИтого.Параметры.ИтогоСумма = ИтогоСумма;
ТабДок.Вывести(ОбластьСписокИтого);
Подвал.Параметры.Заполнить(Выборка);
Подвал.Параметры.Проверил = Выборка.Проверил;
ТабДок.Вывести(Подвал);
ТабДок.ФиксацияСверху = 9;
ТабДок.ПовторятьПриПечатиСтроки = ТабДок.Область(9,,9,);
ВставлятьРазделительСтраниц = Истина;
ТабДок.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
ТабДок.АвтоМасштаб = Истина;
КонецЦикла;
ПоказатьСпасибо.
По теме из базы знаний
Найденные решения
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)Ну с таким запросом только через дополнительный табличный документ.
Пока Выборка.Следующий() Цикл
ВремТабДок = Новый ТабличныйДокумент;
ТабДок.Вывести(ОбластьЗаголовок);
Шапка.Параметры.Заполнить(Выборка);
ВремТабДок.Вывести(ОбластьСписокШапка);
ВыборкаСписок = Выборка.Список.Выбрать();
ИтогоСумма = 0;
Пока ВыборкаСписок.Следующий() Цикл
ОбластьСписок.Параметры.Заполнить(ВыборкаСписок);
ОбластьСписок.Параметры.ТабНом = ВыборкаСписок.ФИО.Код;
ОбластьСписок.Параметры.МестоРабот = ВыборкаСписок.МестоПроведенияРабот;
ИтогоСумма = ИтогоСумма + ВыборкаСписок.Сумма;
ВремТабДок.Вывести(ОбластьСписок);
КонецЦикла;
ОбластьСписокИтого.Параметры.ИтогоСумма = ИтогоСумма;
ВремТабДок.Вывести(ОбластьСписокИтого);
//с вершу шапку сюда
Шапка.Параметры.ИтогоСумма = ИтогоСумма;
ТабДок.Вывести(Шапка, Выборка.Уровень());
//А тч выводим через врем табл док
ТабДок.Вывести( ВремТабДок,Выборка.Уровень()+1);
Подвал.Параметры.Заполнить(Выборка);
Подвал.Параметры.Проверил = Выборка.Проверил;
ТабДок.Вывести(Подвал);
ТабДок.ФиксацияСверху = 9;
ТабДок.ПовторятьПриПечатиСтроки = ТабДок.Область(9,,9,);
ВставлятьРазделительСтраниц = Истина;
ТабДок.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
ТабДок.АвтоМасштаб = Истина;
КонецЦикла;
Показать
(6) тут уже разный подход. Я больше люблю когда запрос максимально полно выдает инфу (если конечно не в разрез с производительностью / здравым смыслом). Ну в теории это должно работать быстрее, скуль быстрее с этим справится чем 1С (хотя эти мили-мили-мили секунды может погоды не сделают)
(3) Я запрос переделал. Теперь как у народа?)))
Макет = Документы.ВедомостьПодотчет.ПолучитьМакет("Печать");
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ВедомостьПодотчет.Дата КАК Дата,
| ВедомостьПодотчет.Задание КАК Задание,
| ВедомостьПодотчет.Номер КАК Номер,
| ВедомостьПодотчет.Ответственный КАК Ответственный,
| ВедомостьПодотчет.Проверил КАК Проверил,
| ВедомостьПодотчет.Куратор КАК Куратор,
| ВедомостьПодотчет.Работы КАК Работы,
| ВедомостьПодотчет.МестоРабот КАК МестоРабот,
| ВедомостьПодотчет.Контрагент КАК Контрагент
|ИЗ
| Документ.ВедомостьПодотчет КАК ВедомостьПодотчет
|ГДЕ
| ВедомостьПодотчет.Ссылка В(&Ссылка)
|;
|
|//////////////////////////////////////////////////////////// ////////////////////
|ВЫБРАТЬ
| Список.НомерСтроки КАК НомерСтроки,
| Список.ФИО КАК ФИО,
| Список.Должность КАК Должность,
| Список.Период КАК Период,
| Список.Сумма КАК Сумма,
| Список.ЛицевойСчет КАК ЛицевойСчет,
| Список.МестоПроведенияРабот КАК МестоПроведенияРабот,
| Список.Примечание КАК Примечание
|ИЗ
| Документ.ВедомостьПодотчет.Список КАК Список
|ГДЕ
| Список.Ссылка В(&Ссылка)";
Запрос.Параметры.Вставить("Ссылка", Ссылка);
РезультатЗапроса = Запрос.ВыполнитьПакет();
ДанныеШапки = РезультатЗапроса[0].Выбрать();
ДанныеТЧ = РезультатЗапроса[1].Выгрузить();
ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
Шапка = Макет.ПолучитьОбласть("Шапка");
ОбластьСписокШапка = Макет.ПолучитьОбласть("СписокШапка");
ОбластьСписок = Макет.ПолучитьОбласть("Список");
ОбластьСписокИтого = Макет.ПолучитьОбласть("СписокИтого");
Подвал = Макет.ПолучитьОбласть("Подвал");
ТабДок.Очистить();
ВставлятьРазделительСтраниц = Ложь;
Пока ДанныеШапки.Следующий() Цикл
Если ВставлятьРазделительСтраниц Тогда
ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
ТабДок.Вывести(ОбластьЗаголовок);
Шапка.Параметры.Заполнить(ДанныеШапки);
ТабДок.Вывести(Шапка, ДанныеШапки.Уровень());
ТабДок.Вывести(ОбластьСписокШапка);
ИтогоСумма = 0;
Для каждого Стр Из ДанныеТЧ Цикл
ОбластьСписок.Параметры.Заполнить(Стр);
ОбластьСписок.Параметры.ТабНом = Стр.ФИО.Код;
ОбластьСписок.Параметры.МестоРабот = Стр.МестоПроведенияРабот;
ИтогоСумма = ИтогоСумма + Стр.Сумма;
ТабДок.Вывести(ОбластьСписок);
КонецЦикла;
ОбластьСписокИтого.Параметры.ИтогоСумма = ИтогоСумма;
ТабДок.Вывести(ОбластьСписокИтого);
Подвал.Параметры.Заполнить(ДанныеШапки);
Подвал.Параметры.Проверил = ДанныеШапки.Проверил;
ТабДок.Вывести(Подвал);
ТабДок.ФиксацияСверху = 9;
ТабДок.ПовторятьПриПечатиСтроки = ТабДок.Область(9,,9,);
ВставлятьРазделительСтраниц = Истина;
ТабДок.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
ТабДок.АвтоМасштаб = Истина;
КонецЦикла;
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот