Суммировать строки во внешней печатной форме

1. user2144590 05.05.25 12:40 Сейчас в теме
Добрый день. С помощью конструктора запросов сделал внешнюю печатную форму для документа РеализацияТоваровУслуг (конфигурация "Бухгалтерия для Беларуси, редакция 2.1"). Как сделать, чтобы в макете суммировались в итоговые значения сумма и сумма НДС для раздела услуг и раздела товаров. И еще - надо, чтобы было суммирование сумм и сумм НДС в графу Всего с НДС.

Процедура ПечатьОбъекта(ТабДок, Ссылка) Экспорт
	
    	//{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
	// Данный фрагмент построен конструктором.
	// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
	
	Макет = ПолучитьМакет("Макет");  
	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	РеализацияТоваровУслуг.Номер КАК Номер,
		|	РеализацияТоваровУслуг.Дата КАК Дата,
		|	РеализацияТоваровУслуг.Организация.НаименованиеПолное КАК ОрганизацияНаименованиеПолное,
		|	РеализацияТоваровУслуг.Организация.ОсновнойБанковскийСчет.НомерСчета КАК ОрганизацияОсновнойБанковскийСчетНомерСчета,
		|	РеализацияТоваровУслуг.Организация.ОсновнойБанковскийСчет.Банк.Наименование КАК ОрганизацияОсновнойБанковскийСчетБанкНаименование,
		|	РеализацияТоваровУслуг.Организация.ОсновнойБанковскийСчет.Банк.Код КАК ОрганизацияОсновнойБанковскийСчетБанкКод,
		|	РеализацияТоваровУслуг.Организация.ИНН КАК ОрганизацияИНН,
		|	РеализацияТоваровУслуг.Контрагент.НаименованиеПолное КАК КонтрагентНаименованиеПолное,
		|	РеализацияТоваровУслуг.Контрагент.ИНН КАК КонтрагентИНН,
		|	РеализацияТоваровУслуг.ОснованиеОтпуска КАК ОснованиеОтпуска,
		|	РеализацияТоваровУслуг.ПунктПогрузки КАК ПунктПогрузки,
//              |   РеализацияТоваровУслуг.Организация.Адрес КАК ОрганизацияАдрес, 
                |	РеализацияТоваровУслуг.ПунктРазгрузки КАК ПунктРазгрузки,
		|	РеализацияТоваровУслуг.СуммаДокумента КАК СуммаДокумента,
		|   РеализацияТоваровУслуг.АвтомобильДляСТО КАК АвтомобильДляСТО,
		|	РеализацияТоваровУслуг.Товары.(
		|		НомерСтроки КАК НомерСтроки,
		|		Номенклатура.Наименование КАК НоменклатураНаименование,
		|		Номенклатура.ЕдиницаИзмерения.Наименование КАК НоменклатураЕдиницаИзмеренияНаименование,
		|		Количество КАК Количество,
		|		Цена КАК Цена,
		|		Сумма КАК Сумма,
		|		СтавкаНДС КАК СтавкаНДС,
		|		СуммаНДС КАК СуммаНДС
		|	) КАК Товары,
      	|	РеализацияТоваровУслуг.Услуги.(
		|		НомерСтроки КАК НомерСтроки,
		|		Номенклатура.Наименование КАК НоменклатураНаименование,
		|		Номенклатура.ЕдиницаИзмерения.Наименование КАК НоменклатураЕдиницаИзмеренияНаименование,
		|		Количество КАК Количество,
		|		Цена КАК Цена,
		|		Сумма КАК Сумма,
		|		СтавкаНДС КАК СтавкаНДС,
		|		СуммаНДС КАК СуммаНДС
		|	) КАК Услуги
				|ИЗ
		|	Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
		|ГДЕ
		|	РеализацияТоваровУслуг.Ссылка = &Ссылка";  
   	
	
	Запрос.УстановитьПараметр("Ссылка", Ссылка);
	
	РезультатЗапроса = Запрос.Выполнить();
	
	ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
	ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
	ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
	ОбластьПодвалТаблицы = Макет.ПолучитьОбласть("ПодвалТаблицы");
	ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали");   
	УслугиОбластьШапкаТаблицы = Макет.ПолучитьОбласть("УслугиШапкаТаблицы");
	УслугиОбластьПодвалТаблицы = Макет.ПолучитьОбласть("УслугиПодвалТаблицы");
	УслугиОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("УслугиДетали");
	ТоварыОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ТоварыШапкаТаблицы");
	ТоварыОбластьПодвалТаблицы = Макет.ПолучитьОбласть("ТоварыПодвалТаблицы");
	ТоварыОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("ТоварыДетали");
		
//	ТабДок.Очистить();   
	ТабДок.Вывести(ОбластьЗаголовок);
	ТабДок.Вывести(ОбластьШапкаТаблицы);
	ТабДок.НачатьАвтогруппировкуСтрок();
	
	ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
	
	Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
		ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетальныеЗаписи);
		ОбластьДетальныхЗаписей.Параметры.Дата = Формат(ВыборкаДетальныеЗаписи.Дата, "ДФ=dd.MM.yyyy"); 
		ТабДок.Вывести(ОбластьДетальныхЗаписей, ВыборкаДетальныеЗаписи.Уровень());
	
		ТабДок.НачатьГруппуСтрок();
        ТабДок.Вывести(УслугиОбластьШапкаТаблицы);
		ТабДок.НачатьАвтогруппировкуСтрок();

		УслугиВыборкаДетальныеЗаписи = ВыборкаДетальныеЗаписи.Услуги.Выбрать();
		
        
		
		Пока УслугиВыборкаДетальныеЗаписи.Следующий() Цикл
			УслугиОбластьДетальныхЗаписей.Параметры.Заполнить(УслугиВыборкаДетальныеЗаписи);   
			ТабДок.Вывести(УслугиОбластьДетальныхЗаписей, УслугиВыборкаДетальныеЗаписи.Уровень());
		КонецЦикла;
	
		ТабДок.ЗакончитьАвтогруппировкуСтрок();
		ТабДок.Вывести(УслугиОбластьПодвалТаблицы);
		ТабДок.Вывести(ТоварыОбластьШапкаТаблицы); 
		ТабДок.НачатьАвтогруппировкуСтрок();
	
		ТоварыВыборкаДетальныеЗаписи = ВыборкаДетальныеЗаписи.Товары.Выбрать();
	
		Пока ТоварыВыборкаДетальныеЗаписи.Следующий() Цикл
			ТоварыОбластьДетальныхЗаписей.Параметры.Заполнить(ТоварыВыборкаДетальныеЗаписи);
			ТабДок.Вывести(ТоварыОбластьДетальныхЗаписей, ТоварыВыборкаДетальныеЗаписи.Уровень());
		КонецЦикла;  
		
		
		ТабДок.ЗакончитьАвтогруппировкуСтрок();
		ТабДок.Вывести(ТоварыОбластьПодвалТаблицы);
		ТабДок.ЗакончитьГруппуСтрок();
	КонецЦикла;
	
	ТабДок.ЗакончитьАвтогруппировкуСтрок();
	ТабДок.Вывести(ОбластьПодвалТаблицы);
	ТабДок.Вывести(ОбластьПодвал);
	
	//}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА


КонецПроцедуры

Показать
Прикрепленные файлы:
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. miniogn 47 05.05.25 20:23 Сейчас в теме
Так например, если особо не заморачиваться. Необходимо добавить в макет строки с итогами.
СуммаИтого  = 0;
        Пока ТоварыВыборкаДетальныеЗаписи.Следующий() Цикл
            ТоварыОбластьДетальныхЗаписей.Параметры.Заполнить(ТоварыВыборкаДетальныеЗаписи);
            ТабДок.Вывести(ТоварыОбластьДетальныхЗаписей, ТоварыВыборкаДетальныеЗаписи.Уровень());
            СуммаИтого  = СуммаИтого  + ТоварыВыборкаДетальныеЗаписи.Сумма;
        КонецЦикла;
        п = ТоварыОбластьИтоги.Параметры;
        п.СуммаИтого = СуммаИтого;
        ТабДок.Вывести(ТоварыОбластьИтоги, ВыборкаДетальныеЗаписи.Уровень() + 1); // с уровнем проверить надо
Показать


Запрос, конечно мог бы вернуть готовые итоги, но не думаю, что получится проще, но кто предложат вариант получше, и для себя возьму...
3. user2144590 06.05.25 11:57 Сейчас в теме
Пишет - переменная не определена (ТоварыОбластьИтоги)
Прикрепленные файлы:
4. reg0303 06.05.25 12:14 Сейчас в теме
(3) Нужно заменить "ТоварыОбластьИтоги" на "ТоварыОбластьПодвалТаблицы "
5. user2144590 06.05.25 12:36 Сейчас в теме
(4) Заменил, в конфигураторе ошибок нет, в режиме 1С Предприятие пишет "Поле объекта не обнаружено (СуммаИтого)"
Прикрепленные файлы:
Ошибка.txt
7. reg0303 06.05.25 12:56 Сейчас в теме
(5) В свойствах ячейки "СуммаИтого", заполнение = "параметр"?
Прикрепленные файлы:
8. user2144590 06.05.25 13:00 Сейчас в теме
(7) Да, так конечно.
Прикрепленные файлы:
6. user2107191 06.05.25 12:54 Сейчас в теме
Никогда, (слышите?) никгда не давайте новичкам примеры кода. Они не понимают слова "пример". Они копипастят его в своё поделье, а потом делают круглые глаза - "ой, а чо ето?"... Никогда в голову им не приходит посмотреть на использование переменных, сравнить их имена и предназначения в своем коде и в приведенном примере.
Программа же сама разберется, фигли.
9. user2144590 06.05.25 15:05 Сейчас в теме
(6) А может быть у Вас есть идеи, подскажите. Я не думаю, что программа сама разберется.
10. user2107191 06.05.25 15:12 Сейчас в теме
(9) Не, мне до таких идей еще учиться и учиться. Пока что я освоил только "Как на инфостарте комментарии писать".
Вывести параметр в печатную форму для меня - недостижимые чудеса.
Я даже ничего не знаю про разницу символов С и C, куда уж мне...
Оставьте свое сообщение

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