Вывод строк табличной части

1. user1745692 25.08.22 16:26 Сейчас в теме
Не могу вывести все строки табличной части в печатную форму.
Добавляет только одну строку

Процедура ЗаполнитьТабличныйДокументТН(ТабличныйДокумент, ТаблицаДанныхДляПечати, ОбъектыПечати,  ПервыйДокумент)  // после объекты печати ИмяМакета,
	Для Каждого ДанныеПечати Из ТаблицаДанныхДляПечати Цикл
		Если НЕ ПервыйДокумент Тогда
			ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
		КонецЕсли; 
		
		
		ПервыйДокумент = Ложь;
		
		НомерСтрокиНачало = ТабличныйДокумент.ВысотаТаблицы + 1;
		
		СведенияОКонтрагентах = Новый Структура;
		
		СведенияОКонтрагентах.Вставить("СведенияОГрузополучателе",  БухгалтерскийУчетПереопределяемый.СведенияОЮрФизЛице(ДанныеПечати.Грузополучатель,  ДанныеПечати.Дата));
		СведенияОКонтрагентах.Вставить("СведенияОГрузоотправителе", БухгалтерскийУчетПереопределяемый.СведенияОЮрФизЛице(ДанныеПечати.Грузоотправитель, ДанныеПечати.Дата));
		СведенияОКонтрагентах.Вставить("СведенияОПеревозчике",      БухгалтерскийУчетПереопределяемый.СведенияОЮрФизЛице(ДанныеПечати.Перевозчик,       ДанныеПечати.Дата));
		
		//Если ДанныеПечати.Дата < '20120313' Тогда
		//	ПараметрыМакета = ПараметрыМакетаТН(ДанныеПечати, СведенияОКонтрагентах);
		//ИначеЕсли ДанныеПечати.Дата < '20171222' Тогда 
		//	ПараметрыМакета = ПараметрыМакетаТН1208(ДанныеПечати, СведенияОКонтрагентах);
		//ИначеЕсли ДанныеПечати.Дата < '20210101' Тогда
		//	ПараметрыМакета = ПараметрыМакетаТН1529(ДанныеПечати, СведенияОКонтрагентах);
		//ИначеЕсли ДанныеПечати.Дата < '20220301' Тогда
		//	ПараметрыМакета = ПараметрыМакетаТН2200(ДанныеПечати, СведенияОКонтрагентах);
		//Иначе
		//ПараметрыМакета = ПараметрыМакетаТН2116(ДанныеПечати, СведенияОКонтрагентах);
		//КонецЕсли;
		
		Макет = ПолучитьМакет("ПФ_MXL_ТранспортнаяНакладная2116");
		//Если ИмяМакета = Неопределено Тогда
		//	ИмяМакета = ПараметрыМакета.ИмяМакета;
		//ИначеЕсли ИмяМакета <> ПараметрыМакета.ИмяМакета Тогда
		//	ИмяМакета = "";
		//КонецЕсли; 
		//
	      
	
	

		ОбластьМакета = Макет.ПолучитьОбласть("ГоризонтальнаяЛицеваяСторона"); 
		
		ПараметрыМакета = ПараметрыМакетаТН2116(ДанныеПечати, СведенияОКонтрагентах);
        	
		ОбластьМакета.Параметры.Заполнить(ПараметрыМакета);
		
		ТабличныйДокумент.Вывести(ОбластьМакета);
		ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц(); 
		
		ОбластьМакетаОборотная = Макет.ПолучитьОбласть("ГоризонтальнаяОборотнаяСторона");
		ОбластьМакетаОборотная.Параметры.Заполнить(ПараметрыМакета);
		
		ТабличныйДокумент.Вывести(ОбластьМакетаОборотная);
			

		УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, НомерСтрокиНачало, ОбъектыПечати, ДанныеПечати.Ссылка); 
		
			КонецЦикла;
КонецПроцедуры

Функция ПараметрыМакетаТН2116(ДанныеПечати, СведенияОКонтрагентах)
	
	   

	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	РеализацияТоваровУслугТовары.Номенклатура.Наименование КАК НоменклатураНаименование,
		|	РеализацияТоваровУслугТовары.Ссылка.СуммаДокумента КАК Сумма,
		|	РеализацияТоваровУслугТовары.Ссылка.Номер КАК Номер,
		|	РеализацияТоваровУслугТовары.Ссылка.Дата КАК Дата,
		|	Валюты.Представление КАК Представление
		|ИЗ
		|	Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
		|		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Валюты КАК Валюты
		|		ПО РеализацияТоваровУслугТовары.Ссылка.ВалютаДокумента = Валюты.Ссылка
		|ГДЕ
		|	РеализацияТоваровУслугТовары.Ссылка = &Ссылка
		|
		|СГРУППИРОВАТЬ ПО
		|	РеализацияТоваровУслугТовары.Номенклатура.Наименование,
		|	РеализацияТоваровУслугТовары.Ссылка.Номер,
		|	РеализацияТоваровУслугТовары.Ссылка.Дата,
		|	РеализацияТоваровУслугТовары.Ссылка.СуммаДокумента,
		|	Валюты.Представление";
	
	Запрос.УстановитьПараметр("Ссылка",ДанныеПечати.Ссылка);
	
	РезультатЗапроса = Запрос.Выполнить();  
	
	ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
	
	Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
 	
			
	
	ПараметрыМакета = Новый Структура;
	
	ПараметрыМакета.Вставить("ИмяМакета", "Обработка.ПечатьТранспортнойНакладной.ПФ_MXL_ТранспортнаяНакладная2116");
	
	СведенияОГрузополучателе  = СведенияОКонтрагентах.СведенияОГрузополучателе;
	СведенияОГрузоотправителе = СведенияОКонтрагентах.СведенияОГрузоотправителе;
	СведенияОПеревозчике      = СведенияОКонтрагентах.СведенияОПеревозчике;
	
	ПараметрыМакета.Вставить("Пункт0_2", Формат(ДанныеПечати.Дата, "ДЛФ=D"));
	ПараметрыМакета.Вставить("Пункт0_5", ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(ВыборкаДетальныеЗаписи.Номер,Истина,Истина));
	ПредставлениеГрузоотправителя = ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(СведенияОГрузоотправителе, 
		"НаименованиеДляПечатныхФорм,ИНН,ФактическийАдрес,Телефоны");
	 
	ПараметрыМакета.Вставить("Пункт1_1", ПредставлениеГрузоотправителя);
	
	ПараметрыМакета.Вставить("Пункт2_1", ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(СведенияОГрузополучателе, 
		"НаименованиеДляПечатныхФорм,ИНН,ФактическийАдрес,Телефоны"));
	

	
	
		
	ПараметрыМакета.Вставить("Пункт3_1",ВыборкаДетальныеЗаписи.НоменклатураНаименование); 
	
	
	
	ПараметрыМакета.Вставить("Пункт3_2", ЭтотОбъект.КоличествоГрузовыхМест );
	
	ПараметрыМакета.Вставить("Пункт3_3", ЭтотОбъект.МассаГруза );

		
    ПараметрыМакета.Вставить("Пункт3_5",ВыборкаДетальныеЗаписи.Сумма );
	
	ПараметрыМакета.Вставить("Пункт3_5_1",ВыборкаДетальныеЗаписи.Представление);
	
	//ПараметрыМакета.Вставить("Пункт4_1", ДанныеПечати.СопроводительныеДокументы); 
	
	ПараметрыМакета.Вставить("Пункт4_1","№ " + ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(ВыборкаДетальныеЗаписи.Номер,Истина,Истина) + " от " + Формат(ДанныеПечати.Дата, "ДЛФ=D"));

	
	ПараметрыМакета.Вставить("Пункт6_1", ЭтотОбъект.Перевозчик); 

	
	ПараметрыМакета.Вставить("Пункт8_2", ЭтотОбъект.АдресМестаПогрузки);  
	
	ПараметрыМакета.Вставить("Пункт8_5", ЭтотОбъект.МассаГруза);

	ПараметрыМакета.Вставить("Пункт8_51", ЭтотОбъект.КоличествоГрузовыхМест);

	
	Если ЗначениеЗаполнено(ДанныеПечати.ОтпускПроизвел) Тогда 
		ДанныеФизЛица = ОбщегоНазначенияБПВызовСервера.ДанныеФизЛица(ДанныеПечати.Организация, ДанныеПечати.ОтпускПроизвел, ДанныеПечати.Дата);
		ПараметрыМакета.Вставить("Пункт8_0", СокрЛП(СтрШаблон(НСтр("ru = '%1 %2 %3 %4'"), ДанныеФизЛица.Должность, ДанныеФизЛица.Фамилия, ДанныеФизЛица.Имя, ДанныеФизЛица.Отчество)));
	КонецЕсли;
	
	ПараметрыМакета.Вставить("Пункт8_8", ДанныеПечати.Водитель);
	ПараметрыМакета.Вставить("Пункт10_9", ДанныеПечати.Водитель);
	
	ПараметрыМакета.Вставить("Пункт10_1", ЭтотОбъект.АдресМестаВыгрузки);
	
	ПредставлениеПеревозчика = ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(СведенияОПеревозчике, 
		"НаименованиеДляПечатныхФорм,ИНН,ФактическийАдрес,Телефоны");
	
	// Начиная с 01.03.2022 реквизиты перевозчика указываются в одном и том же поле и для юр. и для физлиц
	//ПараметрыМакета.Вставить("Пункт6_1", ПредставлениеПеревозчика);
	
	ДанныеПечатиВодитель = ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(ДанныеПечати.Водитель);
	Если ЗначениеЗаполнено(ДанныеПечати.ВодительскоеУдостоверение) Тогда
		ДанныеПечатиВодитель.Добавить(ДанныеПечати.ВодительскоеУдостоверение);
	КонецЕсли; 
	
	ПараметрыМакета.Вставить("Пункт6_2", СтрСоединить(ДанныеПечатиВодитель,", в/у "));
	
	ПараметрыМакета.Вставить("Пункт7_1", ДанныеПечати.МаркаАвтомобиля);
	ПараметрыМакета.Вставить("Пункт7_2", ДанныеПечати.РегистрационныйЗнакАвтомобиля);
	
	// Раздел "Стоимость перевозки груза"
	ПараметрыМакета.Вставить("Пункт12_7", ПредставлениеГрузоотправителя);
	
	//ПараметрыМакета.Вставить("Пункт12_6", ПредставлениеПеревозчика);
	ПараметрыМакета.Вставить("Пункт12_10", ЭтотОбъект.ОтКогоДенежныеСредства);
	
	ПараметрыМакета.Вставить("Пункт16_11", Формат(ДанныеПечати.Дата, "ДЛФ=D"));
	ПараметрыМакета.Вставить("Пункт16_21", Формат(ДанныеПечати.Дата, "ДЛФ=D"));
	
	
	
	Возврат ПараметрыМакета; 
		
	КонецЦикла;

	КонецФункции
Показать
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. user1745692 25.08.22 16:28 Сейчас в теме
Вот такой код
Для Каждого ДанныеПечати Из ТаблицаДанныхДляПечати Цикл
		Если НЕ ПервыйДокумент Тогда
			ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
		КонецЕсли; 
		
		
		ПервыйДокумент = Ложь;
		
		НомерСтрокиНачало = ТабличныйДокумент.ВысотаТаблицы + 1;
		
		СведенияОКонтрагентах = Новый Структура;
		
		СведенияОКонтрагентах.Вставить("СведенияОГрузополучателе",  БухгалтерскийУчетПереопределяемый.СведенияОЮрФизЛице(ДанныеПечати.Грузополучатель,  ДанныеПечати.Дата));
		СведенияОКонтрагентах.Вставить("СведенияОГрузоотправителе", БухгалтерскийУчетПереопределяемый.СведенияОЮрФизЛице(ДанныеПечати.Грузоотправитель, ДанныеПечати.Дата));
		СведенияОКонтрагентах.Вставить("СведенияОПеревозчике",      БухгалтерскийУчетПереопределяемый.СведенияОЮрФизЛице(ДанныеПечати.Перевозчик,       ДанныеПечати.Дата));
		
		//Если ДанныеПечати.Дата < '20120313' Тогда
		//	ПараметрыМакета = ПараметрыМакетаТН(ДанныеПечати, СведенияОКонтрагентах);
		//ИначеЕсли ДанныеПечати.Дата < '20171222' Тогда 
		//	ПараметрыМакета = ПараметрыМакетаТН1208(ДанныеПечати, СведенияОКонтрагентах);
		//ИначеЕсли ДанныеПечати.Дата < '20210101' Тогда
		//	ПараметрыМакета = ПараметрыМакетаТН1529(ДанныеПечати, СведенияОКонтрагентах);
		//ИначеЕсли ДанныеПечати.Дата < '20220301' Тогда
		//	ПараметрыМакета = ПараметрыМакетаТН2200(ДанныеПечати, СведенияОКонтрагентах);
		//Иначе
		ПараметрыМакета = ПараметрыМакетаТН2116(ДанныеПечати, СведенияОКонтрагентах);
		//КонецЕсли;
		
		Макет = ПолучитьМакет("ПФ_MXL_ТранспортнаяНакладная2116");
		//Если ИмяМакета = Неопределено Тогда
		//	ИмяМакета = ПараметрыМакета.ИмяМакета;
		//ИначеЕсли ИмяМакета <> ПараметрыМакета.ИмяМакета Тогда
		//	ИмяМакета = "";
		//КонецЕсли; 
		//
	      
	
	

		ОбластьМакета = Макет.ПолучитьОбласть("ГоризонтальнаяЛицеваяСторона"); 
		
		ПараметрыМакета = ПараметрыМакетаТН2116(ДанныеПечати, СведенияОКонтрагентах);
        	
		ОбластьМакета.Параметры.Заполнить(ПараметрыМакета);
		
		ТабличныйДокумент.Вывести(ОбластьМакета);
		ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц(); 
		
		ОбластьМакетаОборотная = Макет.ПолучитьОбласть("ГоризонтальнаяОборотнаяСторона");
		ОбластьМакетаОборотная.Параметры.Заполнить(ПараметрыМакета);
		
		ТабличныйДокумент.Вывести(ОбластьМакетаОборотная);
			

		УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, НомерСтрокиНачало, ОбъектыПечати, ДанныеПечати.Ссылка); 
		
			КонецЦикла;
КонецПроцедуры

Функция ПараметрыМакетаТН2116(ДанныеПечати, СведенияОКонтрагентах)
	
	   

	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	РеализацияТоваровУслугТовары.Номенклатура.Наименование КАК НоменклатураНаименование,
		|	РеализацияТоваровУслугТовары.Ссылка.СуммаДокумента КАК Сумма,
		|	РеализацияТоваровУслугТовары.Ссылка.Номер КАК Номер,
		|	РеализацияТоваровУслугТовары.Ссылка.Дата КАК Дата,
		|	Валюты.Представление КАК Представление
		|ИЗ
		|	Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
		|		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Валюты КАК Валюты
		|		ПО РеализацияТоваровУслугТовары.Ссылка.ВалютаДокумента = Валюты.Ссылка
		|ГДЕ
		|	РеализацияТоваровУслугТовары.Ссылка = &Ссылка
		|
		|СГРУППИРОВАТЬ ПО
		|	РеализацияТоваровУслугТовары.Номенклатура.Наименование,
		|	РеализацияТоваровУслугТовары.Ссылка.Номер,
		|	РеализацияТоваровУслугТовары.Ссылка.Дата,
		|	РеализацияТоваровУслугТовары.Ссылка.СуммаДокумента,
		|	Валюты.Представление";
	
	Запрос.УстановитьПараметр("Ссылка",ДанныеПечати.Ссылка);
	
	РезультатЗапроса = Запрос.Выполнить();  
	
	ДанныеТЧ = РезультатЗапроса.Выгрузить();
	
	ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
	
	Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
 	
			
	
	ПараметрыМакета = Новый Структура;
	
	ПараметрыМакета.Вставить("ИмяМакета", "Обработка.ПечатьТранспортнойНакладной.ПФ_MXL_ТранспортнаяНакладная2116");
	
	СведенияОГрузополучателе  = СведенияОКонтрагентах.СведенияОГрузополучателе;
	СведенияОГрузоотправителе = СведенияОКонтрагентах.СведенияОГрузоотправителе;
	СведенияОПеревозчике      = СведенияОКонтрагентах.СведенияОПеревозчике;
	
	ПараметрыМакета.Вставить("Пункт0_2", Формат(ДанныеПечати.Дата, "ДЛФ=D"));
	ПараметрыМакета.Вставить("Пункт0_5", ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(ВыборкаДетальныеЗаписи.Номер,Истина,Истина));
	ПредставлениеГрузоотправителя = ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(СведенияОГрузоотправителе, 
		"НаименованиеДляПечатныхФорм,ИНН,ФактическийАдрес,Телефоны");
	 
	ПараметрыМакета.Вставить("Пункт1_1", ПредставлениеГрузоотправителя);
	
	ПараметрыМакета.Вставить("Пункт2_1", ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(СведенияОГрузополучателе, 
		"НаименованиеДляПечатныхФорм,ИНН,ФактическийАдрес,Телефоны"));
	

	
	//ПараметрыМакета.Вставить("Пункт3_1", ДанныеПечати.КраткоеНаименованиеГруза);
	
	//Для Каждого Стр Из ДанныеТЧ Цикл
		
	ПараметрыМакета.Вставить("Пункт3_1",ВыборкаДетальныеЗаписи.НоменклатураНаименование); 
	
	//КонецЦикла;
	
	ПараметрыМакета.Вставить("Пункт3_2", ЭтотОбъект.КоличествоГрузовыхМест );
	
	ПараметрыМакета.Вставить("Пункт3_3", ЭтотОбъект.МассаГруза );

		
    ПараметрыМакета.Вставить("Пункт3_5",ВыборкаДетальныеЗаписи.Сумма );
	
	ПараметрыМакета.Вставить("Пункт3_5_1",ВыборкаДетальныеЗаписи.Представление);
	
	//ПараметрыМакета.Вставить("Пункт4_1", ДанныеПечати.СопроводительныеДокументы); 
	
	ПараметрыМакета.Вставить("Пункт4_1","№ " + ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(ВыборкаДетальныеЗаписи.Номер,Истина,Истина) + " от " + Формат(ДанныеПечати.Дата, "ДЛФ=D"));

	
	ПараметрыМакета.Вставить("Пункт6_1", ЭтотОбъект.Перевозчик); 

	
	ПараметрыМакета.Вставить("Пункт8_2", ЭтотОбъект.АдресМестаПогрузки);  
	
	ПараметрыМакета.Вставить("Пункт8_5", ЭтотОбъект.МассаГруза);

	ПараметрыМакета.Вставить("Пункт8_51", ЭтотОбъект.КоличествоГрузовыхМест);

	
	Если ЗначениеЗаполнено(ДанныеПечати.ОтпускПроизвел) Тогда 
		ДанныеФизЛица = ОбщегоНазначенияБПВызовСервера.ДанныеФизЛица(ДанныеПечати.Организация, ДанныеПечати.ОтпускПроизвел, ДанныеПечати.Дата);
		ПараметрыМакета.Вставить("Пункт8_0", СокрЛП(СтрШаблон(НСтр("ru = '%1 %2 %3 %4'"), ДанныеФизЛица.Должность, ДанныеФизЛица.Фамилия, ДанныеФизЛица.Имя, ДанныеФизЛица.Отчество)));
	КонецЕсли;
	
	ПараметрыМакета.Вставить("Пункт8_8", ДанныеПечати.Водитель);
	ПараметрыМакета.Вставить("Пункт10_9", ДанныеПечати.Водитель);
	
	ПараметрыМакета.Вставить("Пункт10_1", ЭтотОбъект.АдресМестаВыгрузки);
	
	ПредставлениеПеревозчика = ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(СведенияОПеревозчике, 
		"НаименованиеДляПечатныхФорм,ИНН,ФактическийАдрес,Телефоны");
	
	// Начиная с 01.03.2022 реквизиты перевозчика указываются в одном и том же поле и для юр. и для физлиц
	//ПараметрыМакета.Вставить("Пункт6_1", ПредставлениеПеревозчика);
	
	ДанныеПечатиВодитель = ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(ДанныеПечати.Водитель);
	Если ЗначениеЗаполнено(ДанныеПечати.ВодительскоеУдостоверение) Тогда
		ДанныеПечатиВодитель.Добавить(ДанныеПечати.ВодительскоеУдостоверение);
	КонецЕсли; 
	
	ПараметрыМакета.Вставить("Пункт6_2", СтрСоединить(ДанныеПечатиВодитель,", в/у "));
	
	ПараметрыМакета.Вставить("Пункт7_1", ДанныеПечати.МаркаАвтомобиля);
	ПараметрыМакета.Вставить("Пункт7_2", ДанныеПечати.РегистрационныйЗнакАвтомобиля);
	
	// Раздел "Стоимость перевозки груза"
	ПараметрыМакета.Вставить("Пункт12_7", ПредставлениеГрузоотправителя);
	
	//ПараметрыМакета.Вставить("Пункт12_6", ПредставлениеПеревозчика);
	ПараметрыМакета.Вставить("Пункт12_10", ЭтотОбъект.ОтКогоДенежныеСредства);
	
	ПараметрыМакета.Вставить("Пункт16_11", Формат(ДанныеПечати.Дата, "ДЛФ=D"));
	ПараметрыМакета.Вставить("Пункт16_21", Формат(ДанныеПечати.Дата, "ДЛФ=D"));
	
	
	
	Возврат ПараметрыМакета; 
		
	КонецЦикла;

	КонецФункции
Показать
6. ishelper 25.08.22 16:37 Сейчас в теме
(2)
Вот такой код
Это - не код, это - текст.

Для кода на форуме предусмотрено специальное оформление кнопкой "</>", что существенно облегчает его чтение желающими помочь... если, конечно вам на них не наплевать.

P.S. Можно не благодарить. ;-)
user1831019; +1 Ответить
3. user1203706 15 25.08.22 16:29 Сейчас в теме
(1) Запрос в топку.
Зачем вам сумма из шапки документа по каждой строке табличной части ? Когда нужна сумма из самой табличной части, это, для начала
4. user1203706 15 25.08.22 16:32 Сейчас в теме
На счет добавления одной строки... Да уж, вы в обходе выборки в структуру перетираете все значения, и у вас - там всегда будет "последняя" строка, и она одна.
5. user1745692 25.08.22 16:33 Сейчас в теме
Оставьте свое сообщение

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