Оптимизация работы CrossTab

Обсуждение Stimulsoft Reports.JS
Ответить
angolub
Сообщения: 38
Зарегистрирован: 11 май 2018, 16:51

Оптимизация работы CrossTab

Сообщение angolub »

Здравствуйте,

У нас возникли сложности со скоростью рендеринга отчета с 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);
                        });
Спасибо.
Вложения
cross.rar
(409.36 КБ) 247 скачиваний
Aleksey
Сообщения: 2906
Зарегистрирован: 22 апр 2010, 06:57

Re: Оптимизация работы CrossTab

Сообщение Aleksey »

Здравствуйте,

Необходимо время для анализа проблемы, о результатах дадим знать.

Спасибо.
Ответить