Добрый день, как посчитать и суммировать строки в макете печатных форм?

1. user914002 09.03.18 14:21 Сейчас в теме
Пытался взять пример с типовой, но т.к. я совсем уж зеленый в этой среде, то я испугался того количества несуразицы, что там есть и убежал. Вот, собственно, каюсь и прошу вашей помощи. Так-то нужно просто, чтобы количество строк переходило в параметр: КоличествоНаименований

Сосбтвенно строки, которые надо посчитать:
- Материалы
- Работы
- ПрочиеУслуги

Прикрепил изображение с визуальным видом макета.

И собственно код:
(И если там много грязи, а я думаю, что много, то не бейте. Я почищу, когда стану опытнее! Честно!)


Процедура ПечатьСчётаИВыдача(ТабДок, Ссылка) Экспорт

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

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

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

	ВставлятьРазделительСтраниц = Ложь;
	Пока Выборка.Следующий() Цикл
		Если ВставлятьРазделительСтраниц Тогда
			ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
		КонецЕсли;
				
		Заголовок.Параметры.Заполнить(Выборка);
		Заголовок.Параметры.ДатаВыдачи = Формат(Выборка.ДатаВыдачи, "ДФ=dd.MM.yyyy"); 
		ТабДок.Вывести(Заголовок);
		
		ТабДок.Вывести(Шапка);
		
		ВыборкаМатериалы = Выборка.Материалы.Выбрать();
		
		СуммаМатериалы = 0;        
		
		Пока ВыборкаМатериалы.Следующий() Цикл
			ОбластьМатериалы.Параметры.Заполнить(ВыборкаМатериалы);
			ТабДок.Вывести(ОбластьМатериалы, ВыборкаМатериалы.Уровень());
			
			СуммаМатериалы = СуммаМатериалы + ВыборкаМатериалы.Сумма;
		КонецЦикла;
		
		


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

	  	ВставлятьРазделительСтраниц = Истина;
	КонецЦикла;
	
КонецПроцедуры
Показать
Прикрепленные файлы:
По теме из базы знаний
Найденные решения
6. qazaas 09.03.18 14:34 Сейчас в теме
(4) Или, как вариант
КоличествоНаименований = ВыборкаМатериалы.Количество() + ВыборкаУслуги.Количество() + ВыборкаРаботы.Количество();
Sahautdinova1987; user914002; +2 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. user914002 09.03.18 14:26 Сейчас в теме
Я пытался посчитать высотой строк, но когда в сумме больше трех элементов, всё равно возвращается: три наименования. Как-то так...
3. qazaas 09.03.18 14:27 Сейчас в теме
Перед выборкой заведи переменную, типа "КоличествоНаименований = 0" и "ИтоговаяСтоимостьРемонта = 0", а в каждой подвыборке напиши:
КоличествоНаименований = КоличествоНаименований + 1;
ИтоговаяСтоимостьРемонта = ИтоговаяСтоимостьРемонта + ВыборкаМатериалы.Стоимость; // ВыборкаРаботы // ВыборкаУслуги

Итоговую стоимость ремонта у тебя можно вывести суммировав другие итоги:
ИтоговаяСтоимостьРемонта = СуммаМатериалы + СуммаУслуги + СуммаРаботы;
4. user914002 09.03.18 14:31 Сейчас в теме
(3) С итоговой стоимостью у меня проблем нет, только с количеством наименований
5. qazaas 09.03.18 14:32 Сейчас в теме
(4) Ну я привел пример, попробуйте подсчитать количество таким путем и все будет
6. qazaas 09.03.18 14:34 Сейчас в теме
(4) Или, как вариант
КоличествоНаименований = ВыборкаМатериалы.Количество() + ВыборкаУслуги.Количество() + ВыборкаРаботы.Количество();
Sahautdinova1987; user914002; +2 Ответить
7. user914002 09.03.18 14:35 Сейчас в теме
(6) Ох, ну спасибо. Завелась-таки рухлять!
Sahautdinova1987; +1 Ответить
Оставьте свое сообщение

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