Описание различных способов получения отчетов MS Excel в "ПАРУС - Предприятие 8" Миндияров Илья Главный специалист Центра информационных технологий и консалтинга ПАРУС
Комплексная система управления. Вопросы рассматриваемые в презентации Использование пользовательских приложений. Способы ускорения вывода данных в пользовательские приложения. Способы формирования отчета в формате XML на стороне сервера (отчет с типом "Двоичные данные"). Способ ускорения формирования уже существующих отчетов MS Excel.
Комплексная система управления. Использование пользовательских приложений. Использования переменных vararray Плюсы – минимальные переделки. Минусы – незначительное ускорение работы
Комплексная система управления. Использование пользовательских приложений. Метод дает хорошие результаты при выводе большого кол-ва столбцов
Комплексная система управления. Использование пользовательских приложений. Написание программы на Visual Basic использую PL/SQL Минусы – сложно писать, сложно сопровождать Плюсы – очень быстро работает, не нужно полностью перерабатывать пользовательское приложение. Пишем процедуру на PL/SQL следующим образом – большие статичные блоки кода на VB описываем функциями, которые возвращают clob
Комплексная система управления. Использование пользовательских приложений. Написание программы на Visual Basic использую PL/SQL Затем такие функции будем добавлять в программу следующим образом. Где С,С1,С2 - clob
Комплексная система управления. Использование пользовательских приложений. Написание программы на Visual Basic использую PL/SQL Пишем программу так, чтобы все данные из запроса попали в текст программы VB
Комплексная система управления. Использование пользовательских приложений. Написание программы на Visual Basic использую PL/SQL ВАЖНО! Размер одной процедуры на VBA не может превышать 64 Кб. Я разбивал процедуры по 500 записей
Комплексная система управления. Использование пользовательских приложений. Написание программы на Visual Basic использую PL/SQL Запишем все Clobы в один. Преобразуем Clob в Blob
Комплексная система управления. Использование пользовательских приложений. Написание программы на Visual Basic использую PL/SQL Преобразование Clob в Blob нужно если у вас кодировка БД отлична от CP-1251.
Комплексная система управления. Использование пользовательских приложений. Написание программы на Visual Basic использую PL/SQL В пользовательском приложении пишем следующий код.
Комплексная система управления. Использование пользовательских приложений. Написание программы на Visual Basic использую PL/SQL Чтобы такой код работал необходимо разрешение Доверять доступ к объектной модели проектов VBAДоверять доступ к объектной модели проектов VBA
Комплексная система управления. Отчеты с типом Двоичные данные Первый способ – формирование книги MS Excel на основе SQL запроса с последующим форматированием на стороне клиента Плюсы – быстро работает Минусы – сложно описывать форматирование
Комплексная система управления. Отчеты с типом Двоичные данные Первый способ – формирование книги MS Excel на основе SQL запроса с последующим форматированием на стороне клиента Форматирование можно описать либо в тексте процедуры отчета, либо загрузить и обработать любой clob/blob из штатного раздела (шаблоны документов, пользовательские приложения)
Комплексная система управления. Отчеты с типом Двоичные данные Первый способ – формирование книги MS Excel на основе SQL запроса с последующим форматированием на стороне клиента Значение NULL для поля RUN_CMD означает, что файл необходимо сохранить в каталоге %TEMP%, но НЕ вызывать никакую команду ОС Данная возможность появилась в релизе от
Комплексная система управления. Отчеты с типом Двоичные данные Первый способ – формирование книги MS Excel на основе SQL запроса с последующим форматированием на стороне клиента
Комплексная система управления. Отчеты с типом Двоичные данные Второй способ – на PL/SQL сгенерировать HTML, а затем HTML открыть в MS Excel. Плюсы – просто и быстро Минусы – нет формул, отформатированные числа являются строками, сложно сделать отчет на несколько листов.
Комплексная система управления. Отчеты с типом Двоичные данные Второй способ – на PL/SQL сгенерировать HTML, а затем HTML открыть в MS Excel.
Комплексная система управления. Отчеты с типом Двоичные данные Второй способ – на PL/SQL сгенерировать HTML, а затем HTML открыть в MS Excel. Данная возможность появилась в релизе от
Комплексная система управления. Отчеты с типом Двоичные данные Третий способ – на PL/SQL напрямую сгенерировать MS Excel. Плюсы – быстрее невозможно Минусы – очень трудно исправлять печатную форму отчета 1 шаг Подготовить книгу Excel. Важно сразу хорошо подготовить все стили – затем это будет сложно исправить
Комплексная система управления. Отчеты с типом Двоичные данные Третий способ – на PL/SQL напрямую сгенерировать MS Excel. 2 шаг Сохранить книгу в формате XML. Открыть книгу в XML-редакторе
Комплексная система управления. Отчеты с типом Двоичные данные Третий способ – на PL/SQL напрямую сгенерировать MS Excel. 3 шаг Скопировать всю книгу в функцию, которая возвращает Clob
Комплексная система управления. Отчеты с типом Двоичные данные Третий способ – на PL/SQL напрямую сгенерировать MS Excel. 4 шаг Удаляем атрибуты Удаляем атрибуты ss:ExpandedColumnCount ss:ExpandedRowCount в тэге Table Заменяем значение на переменную
Комплексная система управления. Отчеты с типом Двоичные данные Третий способ – на PL/SQL напрямую сгенерировать MS Excel. 4 шаг Результат
Комплексная система управления. Отчеты с типом Двоичные данные Третий способ – на PL/SQL напрямую сгенерировать MS Excel. 5 шаг Вырезаем в текстовый редактор тэг Row с данными
Комплексная система управления. Отчеты с типом Двоичные данные Третий способ – на PL/SQL напрямую сгенерировать MS Excel. 6 шаг Вырезаем в новую функцию весь xml, который идет после тэга Row, где описан заголовок таблицы
Комплексная система управления. Отчеты с типом Двоичные данные Третий способ – на PL/SQL напрямую сгенерировать MS Excel. 7 шаг Проверим работу отчета следующим образом
Комплексная система управления. Отчеты с типом Двоичные данные Третий способ – на PL/SQL напрямую сгенерировать MS Excel. 7 шаг Результатом должна быть таблица без данных
Комплексная система управления. Отчеты с типом Двоичные данные Третий способ – на PL/SQL напрямую сгенерировать MS Excel. 7 шаг Если что-то сделали не так, то появится подобное окно. Внимательно прочитайте указанный файл отчета, для исправления ошибки. Или выполните действия заново начиная с шага 2.
Комплексная система управления. Отчеты с типом Двоичные данные Третий способ – на PL/SQL напрямую сгенерировать MS Excel. 8 шаг Проверим, что корректно формируется таблица
Комплексная система управления. Отчеты с типом Двоичные данные Третий способ – на PL/SQL напрямую сгенерировать MS Excel. 8 шаг Результат
Комплексная система управления. Отчеты с типом Двоичные данные Третий способ – на PL/SQL напрямую сгенерировать MS Excel. 9 шаг Подставляем поля курсора
Комплексная система управления. Отчеты с типом Двоичные данные Третий способ – на PL/SQL напрямую сгенерировать MS Excel. Результат
Комплексная система управления. Отчеты с типом Двоичные данные Третий способ – на PL/SQL напрямую сгенерировать MS Excel. Сложности: Если в тэге Row с данными (либо в строках после отчета) встречается атрибут ss:Index, то необходимо в пустых строках добавить пробелы в любую ячейку, чтобы избавиться от ss:Index.
Комплексная система управления. Ускорение существующих отчетов MS Excel Силами ЦИТК Парус разработан пакет PL/SQL, который по данным, сгенерированным штатным пакетом Силами ЦИТК Парус разработан пакет PL/SQL, который по данным, сгенерированным штатным пакетом PRSG_EXCEL, создает XML формата OfficeML на сервере. Ограничения пакета: Никогда не будет реализован PRSG_EXCEL.EXECUTE_MACROS. Пока ТОЛЬКО реализованы методы PRSG_EXCEL.LINE_APPEND PRSG_EXCEL.LINE_CONTINUE PRSG_EXCEL.LINE_DELETE PRSG_EXCEL.CELL_VALUE_WRITE. Row с атрибутом ss:Index. Пока не умеет работать с шаблонами в которых встречается тэг Row с атрибутом ss:Index.
Комплексная система управления. Ускорение существующих отчетов MS Excel Пример использования Создать процедуру для двоичного отчета в которой вызвать процедуру существующего отчета MS Excel
Комплексная система управления. Ускорение существующих отчетов MS Excel Пример использования Вызвать Вызвать UDO_PKG_MSEXEL.PROCESS Входной параметр – шаблон существующего отчета сохраненный в формате XML Выходной параметр – готовый отчет MS Excel.
Комплексная система управления. Ускорение существующих отчетов MS Excel Пример использования Результат
Комплексная система управления. Ускорение существующих отчетов MS Excel Сложность: Когда сохраните шаблон в XML в текстовом редакторе необходимо проверить, что нет текста Row ss:Index. Если такой текст встретился добавьте в пустые строки пробелы в первую ячейку.
Комплексная система управления. Ускорение существующих отчетов MS Excel На существующих отчетах прирост производительности увеличивался в 9-10 раз.
Комплексная система управления. Ускорение существующих отчетов MS Excel Вопрос Нужно ли дорабатывать до полного соответствия с методами Нужно ли дорабатывать UDO_PKG_MSEXEL до полного соответствия с методами PRSG_EXCEL?