1 / 14

Отчеты с типом «Двоичные данные»

«Парус-Предприятие 8». Отчеты с типом «Двоичные данные». Материалы вебинара можно скачать по ссылке: https://cloud.mail.ru/public/443709673ea0/parus_webinar220514.zip. Назначение. Отчеты с типом “ Двоичные данные ” применяются если : Нужно оперативно выгрузить данные из системы

reed
Download Presentation

Отчеты с типом «Двоичные данные»

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. «Парус-Предприятие 8» Отчеты с типом «Двоичные данные» Материалы вебинара можно скачать по ссылке: https://cloud.mail.ru/public/443709673ea0/parus_webinar220514.zip

  2. Назначение Отчеты с типом “Двоичные данные” применяются если: Нужно оперативно выгрузить данные из системы 2. Нужно сформировать отчет с типом данных отличных от стандартных типов отчетов ПП Парус 8, например, PDF, HTML, RTF, MS Word (презентация http://www.parus.com/docs/09_mindijarov_13122012.pps); 3. Нужно, частично или полностью, формировать отчет НЕ на клиенте ПП Парус 8 (презентация http://www.parus.com/docs/imindiyarov_20130725.ppsx); 4. Предоставить пользователю произвольные файлы из других информационных систем.

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

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

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

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

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

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

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

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

  11. Разбор процедуры создания отчета createorreplaceprocedure UDO_P_ECONOPRS_BREPORT( NCOMPANY innumber–организация ,NIDENT innumber--идентификатор отмеченных записей ,NPROCESS innumber--идентификатор процесса ) Обязательные параметры NIDENT и NPROCESS Объявляем процедуру записи строки в CLOB procedurePUT_LINE(S invarchar2) as begin DBMS_LOB.WRITEAPPEND(C, LENGTH(S || CR), S || CR); end; и процедуру наполнения BLOB из CLOB procedure SAVE_MODULE(DATA inoutnocopyclob, RES inoutnocopyblob) 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;

  12. Разбор процедуры создания отчета Создаем временный CLOB DBMS_LOB.CREATETEMPORARY(C, true); Добавляем основную разметку отчета HTML тэгами процедурой PUT_LINE PUT_LINE('<html>' || '<head>' || '<title>Отчет</title>' || -- заголовок отчета '<style>.tcell {padding: 3 7 3 7; border:.5pt solid black;}</style>' || --описание cssстилей '<meta http-equiv=Content-Type content="text/html; charset=windows-1251">' || '</head>' || '<body>'); Добавляем разметку основной таблицы PUT_LINE('<table border=0 cellspacing="0" cellpadding="0" style="border-collapse:collapse" >'); Начинаем строку заголовков PUT_LINE('<tr>'); Описываем каждый столбец заголовка PUT_LINE('<td class=tcell align=center><b>Номер операции</b></td>' || '<td class=tcell align=center><b>Дата учета</b></td>'|| . . . '<td class=tcell align=center><b>Номер партии</b></td>'); PUT_LINE('</tr>'); -- конец строки заголовка

  13. Разбор процедуры создания отчета Начинаем выборку данных for CURS in (selecttrim(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(' <tr>'); -- начало строки с данными -- столбцы с данными PUT_LINE(' <td class=tcell>' || CURS.OPER_NUMB || '</td>'); PUT_LINE(' <td class=tcell align=center>' || TO_CHAR(CURS.OPER_DATE, 'dd.mm.yyyy') || '</td>'); . . . PUT_LINE(' <td class=tcell>' || CURS.NOMEN_PARTNO || '</td>'); PUT_LINE(' </tr>'); -- конец строки с данными PUT_LINE('</table>'); -- конец разметки основной таблицы PUT_LINE('</body></html>'); -- конецотчета

  14. Разбор процедуры создания отчета Создаем временный BLOB DBMS_LOB.CREATETEMPORARY(B, true); Заполняем BLOB из CLOB SAVE_MODULE(C, B); Очищаем CLOB DBMS_LOB.FREETEMPORARY(C); Заполняем FILEBUFFER данными из BLOB insertinto 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 Очищаем BLOB DBMS_LOB.FREETEMPORARY(B); end;

More Related