Показать сообщение отдельно
Старый 25.05.2020, 12:47   #1  
dark_knight is offline
dark_knight
Участник
 
20 / 10 (1) +
Регистрация: 20.01.2019
добавление столбцов в шаблон Excel
Добрый день,

Я делаю отчет на базе класса 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. Если да то как? Если нет то что лучше сипользвать в данном случае? Спасибо.