Печатная форма как связать две табличные части
Добрый день
Подскажите как связать две табличные части в печатной форме.Сделал печатную форму данные все взял из табличной части документа " Выработка сотрудников" , после чего потребовали добавить еще данные ,но они находятся уже в табличной части документа "Производство без заказа" , данные так же я получил, но проблема в том , что данные из документа "Производство без заказа" выводятся хаотично, без привязки к табличной части первого документа
Вот код
Подскажите как связать две табличные части в печатной форме.Сделал печатную форму данные все взял из табличной части документа " Выработка сотрудников" , после чего потребовали добавить еще данные ,но они находятся уже в табличной части документа "Производство без заказа" , данные так же я получил, но проблема в том , что данные из документа "Производство без заказа" выводятся хаотично, без привязки к табличной части первого документа
Вот код
Функция СформироватьПечатнуюФорму(СсылкаНаДокумент, ОбъектыПечати)
ТабличныйДокумент = Новый ТабличныйДокумент;
ТабличныйДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ВыработкаГС";
МакетОбработки = ПолучитьМакет("Макет");
//заполняем шапку
ОбластьШапка = МакетОбработки.ПолучитьОбласть("Шапка");
ОбластьШапка.Параметры.НомерДокумента = УбратьНули(СсылкаНаДокумент.Номер);
ОбластьШапка.Параметры.ДатаДокумента = СсылкаНаДокумент.Дата;
ОбластьШапка.Параметры.Подразделение = СсылкаНаДокумент.Подразделение;
ОбластьШапка.Параметры.Работник = СсылкаНаДокумент.Исполнители;
//выводим шапку в табличный документ
ТабличныйДокумент.Вывести(ОбластьШапка);
ОбластьИмяТабВыполненныеРаботы = МакетОбработки.ПолучитьОбласть("ИмяТаб_ВыполненныеРаботы");
ОбластьИмяТабВыполненныеРаботы.Параметры.НачалоПериода = Формат(СсылкаНаДокумент.НачалоПериода,"ДФ=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");
ТабличныйДокумент.Вывести(ОбластьПодписи);
Возврат ТабличныйДокумент;
КонецФункции
ПоказатьПо теме из базы знаний
- Базовые версии 1С Предприятия 8 - доступно и всерьез
- Печатная форма OpenOffice (ODT) с объединением строк в таблицу
- Подключаемые печатные формы с .DOCX макетом без Word'а
- Как быстро развернуть автоматическую линию проверки своего решения на 1С, затратив 8 часов и получив выигрыш в 1 человеко/месяц
- Конструктор печатных форм (PrintWizard). Часть 1: Печатные формы. А что, собственно, не так?
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Ну так сделайте отбор строк во второй таблице на основании данных из текущей строки первой таблицы...
Для Каждого СтрокаПервойТаблицы Из ПерваяТаблица Цикл
// Что-тоДелаем
СтрокиВторойТаблицы = ВтораяТаблица.Найтистроки(ПараметрыОтбора);
Для Каждого СтрокаВторойТаблицы Из СтрокиВторойТаблицы Цикл
// Что-то делаем
КонецЦикла;
КонецЦикла;
(2)Получается примерно так должно быть?
ВтораяТаблица = ТекущаяСтрока.Распоряжение.Трудозатраты.Выгрузить();
Для Каждого СтрокаПервойТаблицы Из ПерваяТаблица Цикл
ОбластьСтроки.Параметры.ТрудоемкостьСумма = СтрокаПервойТаблицы.Количество;
ОбластьСтроки.Параметры.Расценка = СтрокаПервойТаблицы.Расценка;
ОбластьСтроки.Параметры.Сумма = СтрокаПервойТаблицы.Сумма;
СтрокиВторойТаблицы = ВтораяТаблица.Найтистроки(ПараметрыОтбора);
ПараметрыОтбора = Новый Структура;
ПараметрыОтбора.Вставить("Номенклатура",ТабличнаяЧастьТрудозатраты);
ПараметрыОтбора.Вставить("Количество",ТабличнаяЧастьТрудозатраты);
НайденныеСтроки = Состав.НайтиСтроки(ПараметрыОтбора);
Для Каждого СтрокаВторойТаблицы Из СтрокиВторойТаблицы Цикл
ОбластьСтроки.Параметры.Номенклатура = СтрокаВторойТаблицы.Номенклатура;
КонецЦикла;
КонецЦикла;
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот