Печатная форма как связать две табличные части

1. user913525 30.11.20 10:35 Сейчас в теме
Добрый день
Подскажите как связать две табличные части в печатной форме.Сделал печатную форму данные все взял из табличной части документа " Выработка сотрудников" , после чего потребовали добавить еще данные ,но они находятся уже в табличной части документа "Производство без заказа" , данные так же я получил, но проблема в том , что данные из документа "Производство без заказа" выводятся хаотично, без привязки к табличной части первого документа
Вот код
Функция СформироватьПечатнуюФорму(СсылкаНаДокумент, ОбъектыПечати)

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

			ТабличныйДокумент.Вывести(ОбластьМакетаИтог);
									
		КонецЕсли;
				
		Если Дата1 <> Формат(ТекущаяСтрока.Распоряжение.Дата,"ДФ=dd.MM.yyyy") и Дата1 <> " " Тогда
			
			ИтогНаДатуЗП       = 0;
		    ИтогНаДатуТр       = 0;
			
		КонецЕсли;
		////// Вывод данных из табличной части Производство без заказа
		ТабличнаяЧастьТрудозатраты                                     = ТекущаяСтрока.Распоряжение.Трудозатраты.Выгрузить();
		
		Для Каждого ТекущаяСтрокаТр Из ТабличнаяЧастьТрудозатраты  Цикл
		 	    		
		Номенклатура                                                   = ТекущаяСтрокаТр.velan_Спецификация;
		КоличествоТР                                                   = ТекущаяСтрокаТр.velan_КоличествоИзделий;
			
		КонецЦикла;
		
		////// Вывод данных из табличной части Производство без заказа

		Дата1                                                          = Формат(ТекущаяСтрока.Распоряжение.Дата,"ДФ=dd.MM.yyyy");
	    ОбластьСтроки.Параметры.НомерСтроки                            = НомерСтроки;
		ОбластьСтроки.Параметры.ВидРабот                               = "" + ТекущаяСтрока.ВидРабот + Номенклатура;
		ОбластьСтроки.Параметры.Количество                             = КоличествоТР;
		Если КоличествоТР > 0 Тогда
		ОбластьСтроки.Параметры.Трудоемкость                           = Формат(ТекущаяСтрока.Количество / КоличествоТР,"ЧДЦ=3")
	    иначе
		ОбластьСтроки.Параметры.Трудоемкость                           = Формат(ТекущаяСтрока.Количество / ТекущаяСтрока.Количество,"ЧДЦ=3");
		КонецЕсли;
		ОбластьСтроки.Параметры.ТрудоемкостьСумма                      = ТекущаяСтрока.Количество;
		ОбластьСтроки.Параметры.Расценка                               = Формат(ТекущаяСтрока.Расценка,"ЧДЦ=2");
		ОбластьСтроки.Параметры.Сумма                                  = ТекущаяСтрока.Сумма;
		ОбластьСтроки.Параметры.Распоряжение                           = Формат(Дата1,"ДФ=dd.MM.yyyy");
		ОбластьСтроки.Параметры.velan_РаспоряжениеНаИзменениеРасценки  = ТекущаяСтрока.velan_РаспоряжениеНаИзменениеРасценки;
		ОбластьСтроки.Параметры.Смена                                  = ТекущаяСтрока.velan_СменыРаботыСотрудников;
		ТрудоемкостьИтого                                              = ТрудоемкостьИтого + ТекущаяСтрока.ВидРабот.Трудоемкость;
		ИтогНаДатуЗП                                                   = ИтогНаДатуЗП + ОбластьСтроки.Параметры.Сумма ;
		ИтогНаДатуТр                                                   = ИтогНаДатуТр + ОбластьСтроки.Параметры.ТрудоемкостьСумма;
		
		
		
		

		
				                                                                  
			
        ТабличныйДокумент.Вывести(ОбластьСтроки);
							
	КонецЦикла;
	
	ОбластьМакетаИтог  = МакетОбработки.ПолучитьОбласть("Итог");
	ОбластьМакетаИтог.Параметры.ИтогНаДатуЗП = ИтогНаДатуЗП;
	ОбластьМакетаИтог.Параметры.ИтогНаДатуТр = ИтогНаДатуТр;
	ТабличныйДокумент.Вывести(ОбластьМакетаИтог);

	
		
	//заполняем подвал
					
	ОбластьПодвал                   = МакетОбработки.ПолучитьОбласть("Подвал");
	ОбластьПодвал.Параметры.Итого   = Формат(СсылкаНаДокумент.СуммаДокумента,"ЧДЦ=2");
	ОбластьПодвал.Параметры.ТрИтого	= ТрудоемкостьИтого;	
	ТабличныйДокумент.Вывести(ОбластьПодвал);
		 		
	ТабличныйДокумент.АвтоМасштаб = Истина;
	
	ОбластьПодписи                     = МакетОбработки.ПолучитьОбласть("Подписи");
	ОбластьПодписи.Параметры.ДатаДок   = Формат(ТекущаяДата(),"ДФ=dd.MM.yyyy");
		
	ТабличныйДокумент.Вывести(ОбластьПодписи);

	Возврат ТабличныйДокумент;

КонецФункции		

Показать
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. FatPanzer 30.11.20 10:39 Сейчас в теме
Ну так сделайте отбор строк во второй таблице на основании данных из текущей строки первой таблицы...
Для Каждого СтрокаПервойТаблицы Из ПерваяТаблица Цикл
    //   Что-тоДелаем
    СтрокиВторойТаблицы = ВтораяТаблица.Найтистроки(ПараметрыОтбора);
    Для Каждого СтрокаВторойТаблицы Из СтрокиВторойТаблицы Цикл
        // Что-то делаем
    КонецЦикла;
КонецЦикла;
4. user913525 30.11.20 14:35 Сейчас в теме
(2)Получается примерно так должно быть?

ВтораяТаблица                                             = ТекущаяСтрока.Распоряжение.Трудозатраты.Выгрузить();

Для Каждого СтрокаПервойТаблицы Из ПерваяТаблица Цикл
     ОбластьСтроки.Параметры.ТрудоемкостьСумма                         = СтрокаПервойТаблицы.Количество;
     ОбластьСтроки.Параметры.Расценка                                  = СтрокаПервойТаблицы.Расценка;
     ОбластьСтроки.Параметры.Сумма                                     = СтрокаПервойТаблицы.Сумма;
	 СтрокиВторойТаблицы                                               = ВтораяТаблица.Найтистроки(ПараметрыОтбора);
	 ПараметрыОтбора = Новый Структура;
     ПараметрыОтбора.Вставить("Номенклатура",ТабличнаяЧастьТрудозатраты);
	 ПараметрыОтбора.Вставить("Количество",ТабличнаяЧастьТрудозатраты);
     НайденныеСтроки = Состав.НайтиСтроки(ПараметрыОтбора);

	 
	 Для Каждого СтрокаВторойТаблицы Из СтрокиВторойТаблицы Цикл
		  ОбластьСтроки.Параметры.Номенклатура                        = СтрокаВторойТаблицы.Номенклатура;
	 КонецЦикла;
КонецЦикла;
Показать
3. andy_zhav 197 30.11.20 10:42 Сейчас в теме
(1) лучше всего получить данные запросом с соединением исходных таблиц
alex-l19041; +1 Ответить
Оставьте свое сообщение

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