Добрый день,
Я делаю отчет на базе класса XMLExcelReport_RU. В методе create report сформировал временную таблицу:
X++:
protected void createReport()
{
int i = 1;
this.initSectionMap();
this.execute(#HEADER);
while(qr.next())
{
smmActivityParentLinkTable = qr.get(tableNum(SMMActivityParentLinkTable));
smmActivities = qr.get(tableNum(smmActivities));
tsTimeSheetLine = qr.get(tableNum(tsTimeSheetLine));
tsTimesheetLineWeek = qr.get(tableNum(tsTimesheetLineWeek));
for (i=1; i<=7; i+=1)
{
if(tsTimesheetLineWeek.Hours[i])
{
taskDaysFactTmp_ICL.ActivityType = smmActivities.ICLPRJDevTaskActivityType;
taskDaysFactTmp_ICL.ResponsibleWorker = HcmWorker::worker2Name(smmActivities.ResponsibleWorker);
taskDaysFactTmp_ICL.ActivityDate = tsTimesheetLineWeek.DayFrom + (i-1);
taskDaysFactTmp_ICL.Hours = tsTimesheetLineWeek.Hours[i];
}
}
taskDaysFactTmp_ICL.insert();
}
this.execute(#PageHeader);
this.execute(#Body);
}
далее мне нужно добавить столбцы динамически в шаблон отчета для каждой уникальной даты из столбца ActivityDate временной таблицы taskDaysFactTmp_ICL. секция #PageHeader в шаблое является секцией шапки отчета. собственно туда и нужно добавлять столбцы. сделать это нужно в кастомном методе fillPageHeader() который запускается из стандартного метода fillData():
X++:
protected void fillData(MSOfficeBookMark_RU _bookmark)
{
switch (_bookmark)
{
case #HEADER:
this.fillHeader();
break;
case #PageHeader:
this.fillPageHeader();
break;
case #Body:
this.fillBody();
break;
}
}
как я понимаю в методе fillPageHeader() нужно идти по временной таблице и добавлять столбцы в шаблон с уникальными датами:
X++:
protected void fillPageHeader()
{
while select activitydate from taskDaysFactTmp_ICL
group by taskDaysFactTmp_ICL.ActivityDate
order by taskDaysFactTmp_ICL.ActivityDate
{
}
}
возможно ли добавлять столбцы в шаблон динамически используя класс XMLExcelReport_RU. Если да то как? Если нет то что лучше сипользвать в данном случае? Спасибо.