AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 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. Если да то как? Если нет то что лучше сипользвать в данном случае? Спасибо.
Старый 26.05.2020, 06:46   #2  
Pandasama is offline
Pandasama
Участник
 
457 / 137 (5) +++++
Регистрация: 11.08.2014
Адрес: Барнаул
Насколько я понимаю, в самом XMLExcelReport_RU вы столбцы динамически добавлять не сможете. Точнее, стандартными средствами Аксапты не сможете

Вижу такие варианты:
1) Дописать-создать методы, которые будут работать с XML-файлом, создавая там нужные столбцы с нужным форматом - вероянто, в библиотеке для OXML это все уже есть, надо только сделать обертку в DAX
2) предварительно через COM открыть ваш шаблон Excel и динамически добавить нужные столбцы в шаблон (с метками и т.д.). Затем уже заполнить шаблон через XMLExcelReport_RU как обычно
3) не использовать XMLExcelReport_RU вообще, а использовать какой-нибудь COM или, например, ADO для заполнения + COM для необходимого форматирования
За это сообщение автора поблагодарили: dark_knight (1).
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
AX365 Выгрузка в шаблон Excel raniel DAX: Программирование 9 20.05.2019 09:28
Выбор столбцов при импорте\экспорте Excel add-in user_ax DAX: Программирование 19 12.11.2014 14:23
Создание файла-xlsx (Excel 2007) из файла - xltx (шаблон Excel 2007) не работает 111andrei DAX: Программирование 2 11.11.2010 17:57
экспорт в шаблон excel Dimk DAX: База знаний и проекты 9 29.04.2009 18:11
Как открыть готовый шаблон Excel в ActiveX Microsoft Office Spreadsheet 10.0? chi DAX: Программирование 0 16.11.2004 15:33

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 21:30.