Вывод итого в различных областях макета ПФ

1. AndrewUs 11 23.05.19 10:49 Сейчас в теме
Здравствуйте!
Есть макет ПФ, в котором вывод суммы табличной части выводится в "ОбластьСписокИтого", подскажите, пожалуйста, как можно вывести итог в другой области макета ("Шапка"), т.е. продублировать данное значение?

Макет = Документы.ВедомостьПодотчет.ПолучитьМакет("Печать");
	Запрос = Новый Запрос;
	Запрос.Текст =
	"ВЫБРАТЬ
	|	ВедомостьПодотчет.Дата,
	|	ВедомостьПодотчет.Задание,
	|	ВедомостьПодотчет.Номер,
	|   ВедомостьПодотчет.Ответственный,
	|   ВедомостьПодотчет.Проверил,
	|   ВедомостьПодотчет.Куратор,
	|   ВедомостьПодотчет.Работы,
	|   ВедомостьПодотчет.МестоРабот,
	|   ВедомостьПодотчет.Контрагент,
	|	ВедомостьПодотчет.Список.(
	|		НомерСтроки,
	|		ФИО,
	|		Должность,
	|		Период,
	|		Сумма,
	|		ЛицевойСчет,
	|		МестоПроведенияРабот,	
	|		Примечание
	|	)
	|ИЗ
	|	Документ.ВедомостьПодотчет КАК ВедомостьПодотчет
	|ГДЕ
	|	ВедомостьПодотчет.Ссылка В (&Ссылка)";
	Запрос.Параметры.Вставить("Ссылка", Ссылка);
	Выборка = Запрос.Выполнить().Выбрать();

	ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
	Шапка = Макет.ПолучитьОбласть("Шапка");
	ОбластьСписокШапка = Макет.ПолучитьОбласть("СписокШапка");
	ОбластьСписок = Макет.ПолучитьОбласть("Список");
	ОбластьСписокИтого = Макет.ПолучитьОбласть("СписокИтого");
	Подвал = Макет.ПолучитьОбласть("Подвал");

	ТабДок.Очистить();

	ВставлятьРазделительСтраниц = Ложь;
	Пока Выборка.Следующий() Цикл
		Если ВставлятьРазделительСтраниц Тогда
			ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
		КонецЕсли;

		ТабДок.Вывести(ОбластьЗаголовок);

		Шапка.Параметры.Заполнить(Выборка);

		ТабДок.Вывести(Шапка, Выборка.Уровень());

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

		ОбластьСписокИтого.Параметры.ИтогоСумма = ИтогоСумма;
		ТабДок.Вывести(ОбластьСписокИтого);
		
		Подвал.Параметры.Заполнить(Выборка);
		Подвал.Параметры.Проверил = Выборка.Проверил;
		ТабДок.Вывести(Подвал);
		
		ТабДок.ФиксацияСверху = 9;
		ТабДок.ПовторятьПриПечатиСтроки = ТабДок.Область(9,,9,);
		ВставлятьРазделительСтраниц = Истина;
		ТабДок.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
		ТабДок.АвтоМасштаб = Истина;
	КонецЦикла;
Показать


Спасибо.
По теме из базы знаний
Найденные решения
9. tusv 211 23.05.19 12:13 Сейчас в теме
А ты по одному документу? Тогда (7) отставить. ДанныеТЧ .Итог("Сумма") Сразу без цикла доступно
AndrewUs; +1 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. tusv 211 23.05.19 11:20 Сейчас в теме
(1)Ну с таким запросом только через дополнительный табличный документ.
Пока Выборка.Следующий() Цикл
	ВремТабДок = Новый ТабличныйДокумент;
	
	ТабДок.Вывести(ОбластьЗаголовок);
	
	Шапка.Параметры.Заполнить(Выборка);
	
	ВремТабДок.Вывести(ОбластьСписокШапка);
	ВыборкаСписок = Выборка.Список.Выбрать();
	
	ИтогоСумма = 0;
	
	Пока ВыборкаСписок.Следующий() Цикл
		ОбластьСписок.Параметры.Заполнить(ВыборкаСписок);
		ОбластьСписок.Параметры.ТабНом = ВыборкаСписок.ФИО.Код;
		ОбластьСписок.Параметры.МестоРабот = ВыборкаСписок.МестоПроведенияРабот;
		
		ИтогоСумма = ИтогоСумма + ВыборкаСписок.Сумма;
		
		ВремТабДок.Вывести(ОбластьСписок);
	КонецЦикла;
	
	ОбластьСписокИтого.Параметры.ИтогоСумма = ИтогоСумма;
	ВремТабДок.Вывести(ОбластьСписокИтого);
	//с вершу шапку сюда
	Шапка.Параметры.ИтогоСумма = ИтогоСумма;
	ТабДок.Вывести(Шапка, Выборка.Уровень());
	//А тч выводим через врем табл док
	ТабДок.Вывести( ВремТабДок,Выборка.Уровень()+1);
	
	Подвал.Параметры.Заполнить(Выборка);
	Подвал.Параметры.Проверил = Выборка.Проверил;
	ТабДок.Вывести(Подвал);
	
	ТабДок.ФиксацияСверху = 9;
	ТабДок.ПовторятьПриПечатиСтроки = ТабДок.Область(9,,9,);
	ВставлятьРазделительСтраниц = Истина;
	ТабДок.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
	ТабДок.АвтоМасштаб = Истина;
КонецЦикла;
Показать
3. tusv 211 23.05.19 11:22 Сейчас в теме
Давно уже народ пишет пакетный запрос по шапке и по табличной части, Второй пакет выгружают в Таблицу значений, а Далее НайтиСтроки
4. ErshKUS 2 23.05.19 12:03 Сейчас в теме
(3) можно еще третий: итоги табличной части. Хотя конечно в шапку это можно засунуть, но по структуре удобнее: шапка, тч, итог ТЧ
6. tusv 211 23.05.19 12:07 Сейчас в теме
(4)Да ну. Третий запрос писать. Обойдется одинэсина. Выгрузить и в дерево можно итоги как бэ есть
8. ErshKUS 2 23.05.19 12:13 Сейчас в теме
(6) тут уже разный подход. Я больше люблю когда запрос максимально полно выдает инфу (если конечно не в разрез с производительностью / здравым смыслом). Ну в теории это должно работать быстрее, скуль быстрее с этим справится чем 1С (хотя эти мили-мили-мили секунды может погоды не сделают)
5. AndrewUs 11 23.05.19 12:06 Сейчас в теме
(3) Я запрос переделал. Теперь как у народа?)))
Макет = Документы.ВедомостьПодотчет.ПолучитьМакет("Печать");
	Запрос = Новый Запрос;
	Запрос.Текст =
	"ВЫБРАТЬ
	|	ВедомостьПодотчет.Дата КАК Дата,
	|	ВедомостьПодотчет.Задание КАК Задание,
	|	ВедомостьПодотчет.Номер КАК Номер,
	|	ВедомостьПодотчет.Ответственный КАК Ответственный,
	|	ВедомостьПодотчет.Проверил КАК Проверил,
	|	ВедомостьПодотчет.Куратор КАК Куратор,
	|	ВедомостьПодотчет.Работы КАК Работы,
	|	ВедомостьПодотчет.МестоРабот КАК МестоРабот,
	|	ВедомостьПодотчет.Контрагент КАК Контрагент
	|ИЗ
	|	Документ.ВедомостьПодотчет КАК ВедомостьПодотчет
	|ГДЕ
	|	ВедомостьПодотчет.Ссылка В(&Ссылка)
	|;
	|
	|////////////////////////////////////////////////////////////­////////////////////
	|ВЫБРАТЬ
	|	Список.НомерСтроки КАК НомерСтроки,
	|	Список.ФИО КАК ФИО,
	|	Список.Должность КАК Должность,
	|	Список.Период КАК Период,
	|	Список.Сумма КАК Сумма,
	|	Список.ЛицевойСчет КАК ЛицевойСчет,
	|	Список.МестоПроведенияРабот КАК МестоПроведенияРабот,
	|	Список.Примечание КАК Примечание
	|ИЗ
	|	Документ.ВедомостьПодотчет.Список КАК Список
	|ГДЕ
	|	Список.Ссылка В(&Ссылка)";
	Запрос.Параметры.Вставить("Ссылка", Ссылка);
	
	РезультатЗапроса = Запрос.ВыполнитьПакет();
    ДанныеШапки = РезультатЗапроса[0].Выбрать();
    ДанныеТЧ = РезультатЗапроса[1].Выгрузить();

	ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
	Шапка = Макет.ПолучитьОбласть("Шапка");
	ОбластьСписокШапка = Макет.ПолучитьОбласть("СписокШапка");
	ОбластьСписок = Макет.ПолучитьОбласть("Список");
	ОбластьСписокИтого = Макет.ПолучитьОбласть("СписокИтого");
	Подвал = Макет.ПолучитьОбласть("Подвал");

	ТабДок.Очистить();

	ВставлятьРазделительСтраниц = Ложь;
	Пока ДанныеШапки.Следующий() Цикл
		Если ВставлятьРазделительСтраниц Тогда
			ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
		КонецЕсли;

		ТабДок.Вывести(ОбластьЗаголовок);

		Шапка.Параметры.Заполнить(ДанныеШапки);
		ТабДок.Вывести(Шапка, ДанныеШапки.Уровень());

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

		ОбластьСписокИтого.Параметры.ИтогоСумма = ИтогоСумма;
		ТабДок.Вывести(ОбластьСписокИтого);
		
		Подвал.Параметры.Заполнить(ДанныеШапки);
		Подвал.Параметры.Проверил = ДанныеШапки.Проверил;
		ТабДок.Вывести(Подвал);
		
		ТабДок.ФиксацияСверху = 9;
		ТабДок.ПовторятьПриПечатиСтроки = ТабДок.Область(9,,9,);
		ВставлятьРазделительСтраниц = Истина;
		ТабДок.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
		ТабДок.АвтоМасштаб = Истина;
	КонецЦикла;
Показать
7. tusv 211 23.05.19 12:09 Сейчас в теме
(5)В дерево выгрузи. Это Выгрузить(ОбходРезультатаЗапросаПоГруппировкам);
А Там Строки.Итог("Сумма");
9. tusv 211 23.05.19 12:13 Сейчас в теме
А ты по одному документу? Тогда (7) отставить. ДанныеТЧ .Итог("Сумма") Сразу без цикла доступно
AndrewUs; +1 Ответить
10. AndrewUs 11 23.05.19 12:17 Сейчас в теме
(9) Да, документ один. Получилось, спасибо.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот