Отчеты с типом «Двоичные данные» «Парус-Предприятие 8» Материалы вебинара можно скачать по ссылке:

Презентация:



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

Предопределенный импорт «Парус-Предприятие 8» Материалы вебинара можно скачать по ссылке:
Ekaterina B. Egorkina,© VEELTECH.RU Загрузка и вывод изображений Каким образом можно сохранить картинку в БД, а потом отобразить ее на странице?
Сведение отчетности Центр учета Возможности версии «Парус-Бюджет 8.5.4» Эксперт-аналитик ДМА Вера Пономаренко.
Составные типы данных Лекция 8-9. Ломаско Павел Сергеевич9 августа 2012 г.
Drill Down отчеты Миндияров Илья Главный специалист Центра информационных технологий и консалтинга ПАРУС.
Oracle Application Express Некоторые приемы работы при реализации WEB- доступа к Парус 8.
Обеспечение целостности данных Процедурное. Хранимые процедуры Хранимые процедуры пишутся на специальном встроенном языке программирования, они могут.
Оптимизация хранимых условий отбора Миндияров Илья Главный специалист Центра информационных технологий и консалтинга ПАРУС
Новые возможности КОР Краткий обзор. Новые возможности КОР Использование доменов для работы с данными типа CLOB и BLOB Настройка условий.
PL/SQL Триггеры (INSERT, UPDATE, DELETE). Определение Три́ггер базы данных (англ. trigger) это хранимая процедура особого типа, которую пользователь не.
PL/SQL Программная конструкция ОписаниеСреда выполнения Анонимный блок Неименованный блок PL/SQL, вставленный в приложение или созданный интерактивно.
Процедуры и Функции Подпрограмма, задаваемая с помощью ключевого слова Sub (subprogram), называется процедурой, а с помощью ключевого слова Function -
Динамический SQL (использование в Oracle). Виды предложений SQL МетодТип предложенияТребуемые вызовы пакета DBMS_SQL 1 Незапросные, нет базовых переменных,
МОДУЛЬНОЕ ПРОГРАММИРОВАНИЕ. Программная единица PL/SQL Именованные блоки Три основных категории Процедура Функция Пакет Хранятся в базе данных или обрабатываются.
SQL. Создание базы данных CREATE DATABASE ALTER DATABASE DROP DATABASE.
CREATE TABLE Ident_table ( ID int IDENTITY(1, 1), some_values varchar(50)); IDENTITY [ ( seed, increment ) ]
СУБД Access Запросы Автор: Тутыгин В.С.. Назначение запросов Запросы обеспечивают простой доступ к определенному подмножеству записей одной или нескольких.
Базы данных Язык запросов SQL. Команда SELECT. Команда SELECT – выборка данных Общий синтаксис: SELECT [{ ALL | DISTINCT }] { список_вывода | * } FROM.
Базы данных. Введение Базы данных обеспечивают хранение информации. Доступ к базе данных осуществляется через специальную программу - систему управления.
Транксрипт:

Отчеты с типом «Двоичные данные» «Парус-Предприятие 8» Материалы вебинара можно скачать по ссылке: zip

Назначение Отчеты с типом Двоичные данные применяются если: 1. Нужно оперативно выгрузить данные из системы 2. Нужно сформировать отчет с типом данных отличных от стандартных типов отчетов ПП Парус 8, например, PDF, HTML, RTF, MS Word (презентация pps 3. Нужно, частично или полностью, формировать отчет НЕ на клиенте ПП Парус 8 (презентация ppsx 4. Предоставить пользователю произвольные файлы из других информационных систем.

Особенности написания отчета Отчеты с типом Двоичные данные всегда: 1. Основываются на процедуре PL/SQL. 2. Имеют входной числовой параметр с типом привязки Идентификатор процесса. 3. Данные, передаваемые «клиенту» будут записаны в таблицу FILE_BUFFER. 4. С «клиента» будет вызвано приложение ОС, которое определяется непосредственно в процедуре отчета

Особенности написания отчета Особенности заполнения таблицы FILE_BUFFER В поле IDENT необходимо записывать идентификатор процесса; Если имя файла начинается с., то на клиенте будет создано случайное имя файла; В поле DATA записываются данные с типом CLOB, либо в поле BDATA записываются данные с типом BLOB; Если в параметр RUN_CMD: записать NULL, то это будет запущено приложение, которое ассоциировано с расширением имени файла; записать NULL (как строковую константу), то файл будет создан, но никакой команды на запуск выполнено не будет; Записать имя исполняемого файла и символы %1, например, some_program.exe /q -x %1, то будет запущена указанная программа, символы %1 будут заменены на имя файла, который будет создан из полей BDATA или DATA.

Особенности написания отчета Файлы создаются во временной папке пользователя (заданной в переменной окружения TEMP); Файлы не удаляются; Файлы создаются и выполняются по порядку, в зависимости от значения поля RN таблицы FILE_BUFFER;

Установка примера Рассмотрим пример отчета с типом двоичные данные, который выгружает данные из раздела «Хозяйственные операции» в MS Excel используя формат HTML. Под пользователем PARUS компилируем процедуру UDO_P_ECONOPRS_BREPORT ( выложена в архиве в папке BINARY В разделе «Отчеты» – «Пользовательские отчеты» создаем новую запись Заполняем произвольно мнемокод и наименование. Указываем тип: Двоичные данные Указываем хранимую процедуру: UDO_P_ECONOPRS_BREPORT

Установка примера Добавляем 3 параметра отчета: NPROCESS – привязка к идентификатору процесса NCOMPANY – привязка к организации NIDENT – привязка к идентификатор помеченных записей

Установка примера Добавляем связь с разделом «Хозяйственные операции» Заходим в раздел «Хозяйственные операции» отмечаем необходимые нам записи и из контекстного меню выбираем «Расширения» – «Пользовательские отчеты»

Установка примера Из списка отчетов выбираем «Выгрузка ХО в HTML (двоичные данные)» И получаем выгрузку данных в MS Excel Так же при минимальных модификациях в процедуре этот отчет можно открыть в любом браузере.

Отчет с типом двоичные данные - HTML Данный способ показал значительный прирост в скорости выгрузки данных по сравнению со стандартной функцией «Перенос в MS Excel», а так же по сравнению с пользовательским отчетом использующим PRSG_EXCEL В режиме теста, на примере записей Хозяйственных операций и проводок, время выгрузки составляет 57 сек.

Разбор процедуры создания отчета create or replace procedure UDO_P_ECONOPRS_BREPORT( NCOMPANY in number –организация,NIDENT in number --идентификатор отмеченных записей,NPROCESS in number --идентификатор процесса ) Обязательные параметры NIDENT и NPROCESS procedure PUT_LINE(S in varchar2) as begin DBMS_LOB.WRITEAPPEND(C, LENGTH(S || CR), S || CR); end; и процедуру наполнения BLOB из CLOB procedure SAVE_MODULE(DATA in out nocopy clob, RES in out nocopy blob) as -- L_DEST_OFFSET integer; L_SOURCE_OFFSET integer; L_LANG_CONTEXT integer; L_WARNING integer; L_BLOB_CSID integer; -- begin L_BLOB_CSID := NLS_CHARSET_ID('CL8MSWIN1251'); L_DEST_OFFSET := 1; L_SOURCE_OFFSET := 1; L_LANG_CONTEXT := DBMS_LOB.DEFAULT_LANG_CTX; L_WARNING := DBMS_LOB.WARN_INCONVERTIBLE_CHAR; DBMS_LOB.CONVERTTOBLOB(DEST_LOB => RES, SRC_CLOB => DATA, AMOUNT => DBMS_LOB.LOBMAXSIZE, DEST_OFFSET => L_DEST_OFFSET, SRC_OFFSET => L_SOURCE_OFFSET, BLOB_CSID => L_BLOB_CSID, LANG_CONTEXT => L_LANG_CONTEXT, WARNING => L_WARNING); end; Объявляем процедуру записи строки в CLOB

Разбор процедуры создания отчета PUT_LINE(' ' || ' ' || ' Отчет ' || -- заголовок отчета '.tcell {padding: ; border:.5pt solid black;} ' || --описание css стилей ' ' || ' ' || ' '); Создаем временный CLOB DBMS_LOB.CREATETEMPORARY(C, true); Добавляем основную разметку отчета HTML тэгами процедурой PUT_LINE Начинаем строку заголовков PUT_LINE(' '); Добавляем разметку основной таблицы PUT_LINE(' Номер операции ' || ' Дата учета ' ||... ' Номер партии '); PUT_LINE(' '); -- конец строки заголовка Описываем каждый столбец заголовка

Разбор процедуры создания отчета for CURS in (select trim(E.OPERATION_PREF) || '-' || trim(E.OPERATION_NUMB) as OPER_NUMB,E.OPERATION_DATE as OPER_DATE...,O.NOMEN_CODE || ', ' || O.NOMEN_NAME || ', ' || O.NOMEN_MEAS as NOMEN,O.NOMEN_PARTNO as NOMEN_PARTNO from V_ECONOPRS E, V_OPRSPECS O, SELECTLIST S where S.IDENT = NIDENT and E.RN = S.DOCUMENT and E.RN = O.PRN(+) ) loop Начинаем выборку данных PUT_LINE(' '); -- начало строки с данными -- столбцы с данными PUT_LINE(' ' || CURS.OPER_NUMB || ' '); PUT_LINE(' ' || TO_CHAR(CURS.OPER_DATE, 'dd.mm.yyyy') || ' ');... PUT_LINE(' ' || CURS.NOMEN_PARTNO || ' '); PUT_LINE(' '); -- конец строки с данными PUT_LINE(' '); -- конец разметки основной таблицы PUT_LINE(' '); -- конец отчета Заполняем таблицу данными

Разбор процедуры создания отчета Создаем временный BLOB DBMS_LOB.CREATETEMPORARY(B, true); Заполняем BLOB из CLOB SAVE_MODULE(C, B); Очищаем BLOB DBMS_LOB.FREETEMPORARY(C); Заполняем FILEBUFFER данными из BLOB insert into FILE_BUFFER (IDENT, FILENAME, BDATA, RUN_CMD) values (NPROCESS, '.htm', B, 'excel.exe /e %1'); Здесь мы формируем html файл и открываем его в MS Excel. Вместо Excel можно использовать любой браузер например Google Chrome для этого вместо excel.exe необходимо написать chrome.exe DBMS_LOB.FREETEMPORARY(B); end; Очищаем CLOB