У нас возникли сложности со скоростью рендеринга отчета с CrossTab.
62000 строки простой таблицы изменяются на cross data в 2000 строк.
Рендеринг такого отчета занимает 1 час 20 минут.
Рендеринг отчета с 62000 строками в простой таблице занимает 2 минуты 20 секунд.
Есть ли возможность ускорить процесс рендеринга?
Во вложении файл mrt и json данные.
Страница в файле mrt выставлена в большой размер. В коде после рендеринга для страниц переустанавливаем ширину.
Код: Выделить всё
new Promise((resolve, reject) => {
report.renderAsync(function () {
try {
//Переопределяем ширину страницы для отчетов с кросс-таблицей
if (report.renderedPages && report.renderedPages.list) {
let crossTab1_LeftTitle = undefined;
let crossTab1_RightTitle = undefined;
let page = -1;
do {
page ++;
crossTab1_LeftTitle = report.renderedPages.list[page].components.list.find(c => c.name === 'CrossTab1_LeftTitle');
crossTab1_RightTitle = report.renderedPages.list[page].components.list.find(c => c.name === 'CrossTab1_RightTitle');
} while (page < report.renderedPages.list.length - 1 && !crossTab1_LeftTitle);
let width = (crossTab1_LeftTitle && crossTab1_RightTitle) ? crossTab1_LeftTitle.width + crossTab1_RightTitle.width : 0;
if (width) {
report.renderedPages.list.forEach(page => {
page.width = width;
})
} else {
report.renderedPages.list.forEach(page => {
page.width = 29.7;
})
}
}
service.exportToAsync(function () {
try {
fs.writeFileSync(fileName, Buffer.from(stream.toArray()));
resolve();
}
catch (err) {
reject(Utils.extendErrorWithCodeLocation(err, __filename, self.CLASS_NAME, 'doRun.export'));
process.exit(1);
}
}, report, stream, settings);
}
catch (err) {
reject(Utils.extendErrorWithCodeLocation(err, __filename, self.CLASS_NAME, 'doRun.render'));
process.exit(1);
}
}, false);
});