42
Описание различных способов получения отчетов MS Excel в "ПАРУС - Предприятие 8" Миндияров Илья Главный специалист Центра информационных технологий и консалтинга ПАРУС [email protected]

Описание различных способов получения отчетов MS Excel в "ПАРУС - Предприятие 8"

  • Upload
    tavon

  • View
    98

  • Download
    7

Embed Size (px)

DESCRIPTION

Описание различных способов получения отчетов MS Excel в "ПАРУС - Предприятие 8". Миндияров Илья Главный специалист Центра информационных технологий и консалтинга ПАРУС [email protected]. Вопросы рассматриваемые в презентации. - PowerPoint PPT Presentation

Citation preview

Page 1: Описание различных способов получения отчетов MS Excel в  "ПАРУС - Предприятие 8"

Описание различных способов полученияотчетов MS Excel в

"ПАРУС - Предприятие 8"

Миндияров Илья

Главный специалист

Центра информационных технологий и консалтинга ПАРУС

[email protected]

Page 2: Описание различных способов получения отчетов MS Excel в  "ПАРУС - Предприятие 8"

Комплексная система управления.

Вопросы рассматриваемые в презентации

• Использование пользовательских приложений. Способы ускорения вывода данных в пользовательские приложения.

• Способы формирования отчета в формате XML на стороне сервера (отчет с типом "Двоичные данные").

• Способ ускорения формирования уже существующих отчетов MS Excel.

Page 3: Описание различных способов получения отчетов MS Excel в  "ПАРУС - Предприятие 8"

Комплексная система управления.

Использование пользовательских приложений.

Использования переменных vararray

Плюсы – минимальные переделки.

Минусы – незначительное ускорение работы

Page 4: Описание различных способов получения отчетов MS Excel в  "ПАРУС - Предприятие 8"

Комплексная система управления.

Использование пользовательских приложений.

Метод дает хорошие результаты при выводе большого кол-ва столбцов

Page 5: Описание различных способов получения отчетов MS Excel в  "ПАРУС - Предприятие 8"

Комплексная система управления.

Использование пользовательских приложений.

Написание программы на Visual Basic использую PL/SQL

Минусы – сложно писать, сложно сопровождать

Плюсы – очень быстро работает, не нужно полностью перерабатывать пользовательское приложение.

Пишем процедуру на PL/SQL следующим образом – большие статичные блоки кода на VB описываем функциями, которые возвращают clob

Page 6: Описание различных способов получения отчетов MS Excel в  "ПАРУС - Предприятие 8"

Комплексная система управления.

Использование пользовательских приложений.

Написание программы на Visual Basic использую PL/SQL

Затем такие функции будем добавлять в программу следующим образом.

Где С,С1,С2 - clob

Page 7: Описание различных способов получения отчетов MS Excel в  "ПАРУС - Предприятие 8"

Комплексная система управления.

Использование пользовательских приложений.

Написание программы на Visual Basic использую PL/SQL

Пишем программу так, чтобы все данные из запроса попали в текст программы VB

Page 8: Описание различных способов получения отчетов MS Excel в  "ПАРУС - Предприятие 8"

Комплексная система управления.

Использование пользовательских приложений.

Написание программы на Visual Basic использую PL/SQL

ВАЖНО! Размер одной процедуры на VBA не может превышать 64 Кб.

Я разбивал процедуры по 500 записей

Page 9: Описание различных способов получения отчетов MS Excel в  "ПАРУС - Предприятие 8"

Комплексная система управления.

Использование пользовательских приложений.

Написание программы на Visual Basic использую PL/SQL

Запишем все Clob’ы в один.

Преобразуем Clob в Blob

Page 10: Описание различных способов получения отчетов MS Excel в  "ПАРУС - Предприятие 8"

Комплексная система управления.

Использование пользовательских приложений.

Написание программы на Visual Basic использую PL/SQL

Преобразование Clob в Blob нужно если у вас кодировка БД отлична от CP-1251.

Page 11: Описание различных способов получения отчетов MS Excel в  "ПАРУС - Предприятие 8"

Комплексная система управления.

Использование пользовательских приложений.

Написание программы на Visual Basic использую PL/SQL

В пользовательском приложении пишем следующий код.

Page 12: Описание различных способов получения отчетов MS Excel в  "ПАРУС - Предприятие 8"

Комплексная система управления.

Использование пользовательских приложений.

Написание программы на Visual Basic использую PL/SQL

Чтобы такой код работал необходимо разрешение

“Доверять доступ к объектной модели проектов VBA”

Page 13: Описание различных способов получения отчетов MS Excel в  "ПАРУС - Предприятие 8"

Комплексная система управления.

Отчеты с типом “Двоичные данные”

Первый способ – формирование книги MS Excel на основе SQL запроса с последующим форматированием на стороне клиента

Плюсы – быстро работает

Минусы – сложно описывать форматирование

Page 14: Описание различных способов получения отчетов MS Excel в  "ПАРУС - Предприятие 8"

Комплексная система управления.

Отчеты с типом “Двоичные данные”

Первый способ – формирование книги MS Excel на основе SQL запроса с последующим форматированием на стороне клиента

Форматирование можно описать либо в тексте процедуры отчета, либо загрузить и обработать любой clob/blob из штатного раздела (шаблоны документов, пользовательские приложения)

Page 15: Описание различных способов получения отчетов MS Excel в  "ПАРУС - Предприятие 8"

Комплексная система управления.

Отчеты с типом “Двоичные данные”

Первый способ – формирование книги MS Excel на основе SQL запроса с последующим форматированием на стороне клиента

Значение ‘NULL’ для поля RUN_CMD означает, что файл необходимо сохранить в каталоге %TEMP%, но НЕ вызывать никакую команду ОС

Данная возможность появилась в релизе 8.5.6.1 от 25.06.2013.

Page 16: Описание различных способов получения отчетов MS Excel в  "ПАРУС - Предприятие 8"

Комплексная система управления.

Отчеты с типом “Двоичные данные”

Первый способ – формирование книги MS Excel на основе SQL запроса с последующим форматированием на стороне клиента

Page 17: Описание различных способов получения отчетов MS Excel в  "ПАРУС - Предприятие 8"

Комплексная система управления.

Отчеты с типом “Двоичные данные”

Второй способ – на PL/SQL сгенерировать HTML, а затем HTML открыть в MS Excel.

Плюсы – просто и быстро

Минусы – нет формул, отформатированные числа являются строками, сложно сделать отчет на несколько листов.

Page 18: Описание различных способов получения отчетов MS Excel в  "ПАРУС - Предприятие 8"

Комплексная система управления.

Отчеты с типом “Двоичные данные”

Второй способ – на PL/SQL сгенерировать HTML, а затем HTML открыть в MS Excel.

Page 19: Описание различных способов получения отчетов MS Excel в  "ПАРУС - Предприятие 8"

Комплексная система управления.

Отчеты с типом “Двоичные данные”

Второй способ – на PL/SQL сгенерировать HTML, а затем HTML открыть в MS Excel.

Данная возможность появилась в релизе 8.5.6.1 от 25.06.2013.

Page 20: Описание различных способов получения отчетов MS Excel в  "ПАРУС - Предприятие 8"

Комплексная система управления.

Отчеты с типом “Двоичные данные”

Третий способ – на PL/SQL напрямую сгенерировать MS Excel.

Плюсы – быстрее невозможно

Минусы – очень трудно исправлять печатную форму отчета

1 шаг

Подготовить книгу Excel.

Важно сразу хорошо подготовить все стили – затем это будет сложно исправить

Page 21: Описание различных способов получения отчетов MS Excel в  "ПАРУС - Предприятие 8"

Комплексная система управления.

Отчеты с типом “Двоичные данные”

Третий способ – на PL/SQL напрямую сгенерировать MS Excel.

2 шаг

Сохранить книгу в формате XML.

Открыть книгу в XML-редакторе

Page 22: Описание различных способов получения отчетов MS Excel в  "ПАРУС - Предприятие 8"

Комплексная система управления.

Отчеты с типом “Двоичные данные”

Третий способ – на PL/SQL напрямую сгенерировать MS Excel.

3 шаг

Скопировать всю книгу в функцию, которая возвращает Clob

Page 23: Описание различных способов получения отчетов MS Excel в  "ПАРУС - Предприятие 8"

Комплексная система управления.

Отчеты с типом “Двоичные данные”

Третий способ – на PL/SQL напрямую сгенерировать MS Excel.

4 шаг

Удаляем атрибуты ss:ExpandedColumnCount ss:ExpandedRowCount в тэге Table

Заменяем значение 2013-01-01 на переменную

Page 24: Описание различных способов получения отчетов MS Excel в  "ПАРУС - Предприятие 8"

Комплексная система управления.

Отчеты с типом “Двоичные данные”

Третий способ – на PL/SQL напрямую сгенерировать MS Excel.

4 шаг

Результат

Page 25: Описание различных способов получения отчетов MS Excel в  "ПАРУС - Предприятие 8"

Комплексная система управления.

Отчеты с типом “Двоичные данные”

Третий способ – на PL/SQL напрямую сгенерировать MS Excel.

5 шаг

Вырезаем в текстовый редактор тэг Row с данными

Page 26: Описание различных способов получения отчетов MS Excel в  "ПАРУС - Предприятие 8"

Комплексная система управления.

Отчеты с типом “Двоичные данные”

Третий способ – на PL/SQL напрямую сгенерировать MS Excel.

6 шаг

Вырезаем в новую функцию весь xml, который идет после тэга Row, где описан заголовок таблицы

Page 27: Описание различных способов получения отчетов MS Excel в  "ПАРУС - Предприятие 8"

Комплексная система управления.

Отчеты с типом “Двоичные данные”

Третий способ – на PL/SQL напрямую сгенерировать MS Excel.

7 шаг

Проверим работу отчета

следующим образом

Page 28: Описание различных способов получения отчетов MS Excel в  "ПАРУС - Предприятие 8"

Комплексная система управления.

Отчеты с типом “Двоичные данные”

Третий способ – на PL/SQL напрямую сгенерировать MS Excel.

7 шаг

Результатом должна быть таблица без данных

Page 29: Описание различных способов получения отчетов MS Excel в  "ПАРУС - Предприятие 8"

Комплексная система управления.

Отчеты с типом “Двоичные данные”

Третий способ – на PL/SQL напрямую сгенерировать MS Excel.

7 шаг

Если что-то сделали не так, то появится подобное окно. Внимательно прочитайте указанный файл отчета, для исправления ошибки. Или выполните действия заново начиная с шага 2.

Page 30: Описание различных способов получения отчетов MS Excel в  "ПАРУС - Предприятие 8"

Комплексная система управления.

Отчеты с типом “Двоичные данные”

Третий способ – на PL/SQL напрямую сгенерировать MS Excel.

8 шаг

Проверим, что корректно формируется таблица

Page 31: Описание различных способов получения отчетов MS Excel в  "ПАРУС - Предприятие 8"

Комплексная система управления.

Отчеты с типом “Двоичные данные”

Третий способ – на PL/SQL напрямую сгенерировать MS Excel.

8 шаг

Результат

Page 32: Описание различных способов получения отчетов MS Excel в  "ПАРУС - Предприятие 8"

Комплексная система управления.

Отчеты с типом “Двоичные данные”

Третий способ – на PL/SQL напрямую сгенерировать MS Excel.

9 шаг

Подставляем поля курсора

Page 33: Описание различных способов получения отчетов MS Excel в  "ПАРУС - Предприятие 8"

Комплексная система управления.

Отчеты с типом “Двоичные данные”

Третий способ – на PL/SQL напрямую сгенерировать MS Excel.

Результат

Page 34: Описание различных способов получения отчетов MS Excel в  "ПАРУС - Предприятие 8"

Комплексная система управления.

Отчеты с типом “Двоичные данные”

Третий способ – на PL/SQL напрямую сгенерировать MS Excel.

Сложности: Если в тэге Row с данными (либо в строках после отчета) встречается атрибут ss:Index, то необходимо в пустых строках добавить пробелы в любую ячейку, чтобы избавиться от ss:Index.

<Table ss:ExpandedColumnCount=“1" ss:ExpandedRowCount="12" x:FullColumns="1"

x:FullRows="1">

<Row ss:Index="12">

<Cell><Data ss:Type="String">text</Data></Cell>

</Row>

</Table>

Page 35: Описание различных способов получения отчетов MS Excel в  "ПАРУС - Предприятие 8"

Комплексная система управления.

Ускорение существующих отчетов MS Excel

Силами ЦИТК Парус разработан пакет PL/SQL, который по данным, сгенерированным штатным пакетом PRSG_EXCEL, создает XML формата OfficeML на сервере.

Ограничения пакета:• Никогда не будет реализован PRSG_EXCEL.EXECUTE_MACROS.Пока ТОЛЬКО реализованы методы

PRSG_EXCEL.LINE_APPENDPRSG_EXCEL.LINE_CONTINUEPRSG_EXCEL.LINE_DELETEPRSG_EXCEL.CELL_VALUE_WRITE.

Пока не умеет работать с шаблонами в которых встречается тэг Row с атрибутом ss:Index.

Page 36: Описание различных способов получения отчетов MS Excel в  "ПАРУС - Предприятие 8"

Комплексная система управления.

Ускорение существующих отчетов MS Excel

Пример использования

Создать процедуру для двоичного отчета в которой вызвать процедуру существующего отчета MS Excel

Page 37: Описание различных способов получения отчетов MS Excel в  "ПАРУС - Предприятие 8"

Комплексная система управления.

Ускорение существующих отчетов MS Excel

Пример использования

Вызвать UDO_PKG_MSEXEL.PROCESS

Входной параметр – шаблон существующего отчета сохраненный в формате XML

Выходной параметр – готовый отчет MS Excel.

Page 38: Описание различных способов получения отчетов MS Excel в  "ПАРУС - Предприятие 8"

Комплексная система управления.

Ускорение существующих отчетов MS Excel

Пример использования

Результат

Page 39: Описание различных способов получения отчетов MS Excel в  "ПАРУС - Предприятие 8"

Комплексная система управления.

Ускорение существующих отчетов MS Excel

Сложность:

Когда сохраните шаблон в XML в текстовом редакторе необходимо проверить, что нет текста Row ss:Index. Если такой текст встретился добавьте в пустые строки пробелы в первую ячейку.

Page 40: Описание различных способов получения отчетов MS Excel в  "ПАРУС - Предприятие 8"

Комплексная система управления.

Ускорение существующих отчетов MS Excel

На существующих отчетахприрост производительности

увеличивался в 9-10 раз.

Page 41: Описание различных способов получения отчетов MS Excel в  "ПАРУС - Предприятие 8"

Комплексная система управления.

Ускорение существующих отчетов MS Excel

Вопрос•Нужно ли дорабатывать UDO_PKG_MSEXEL

до полного соответствия с методами PRSG_EXCEL?

Page 42: Описание различных способов получения отчетов MS Excel в  "ПАРУС - Предприятие 8"