Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
vtar Эксперт
Вступление в Клуб: 20.03.2009
|
Вт Авг 29, 2017 10:11   |
|
Полезность: Нет оценки
|
Эмиралька пишет: | vtar пишет: | Коллеги,
что то вот не пойму, почему нельзя было реализовать для OOXML генерацию отчота на сервере ? |
Дык а сейчас он где формируется?
|
блин ... я не про то что blob ... я про то что нет нормального дистрибутивного способа без вызова навигатора на клиентском ПК сгенерить на сервере XLS или DOC файл
Из JOBа например без участия пользователя ! |
|
 |
Alkov Профи
Вступление в Клуб: 23.09.2010
|
Вт Авг 29, 2017 10:20   |
|
Полезность: Нет оценки
|
В смысле? Джобом он прекрасно создаётся.
Только причём тут клиентский ПК, им только потом забрать готовый отчёт с FIO. |
|
 |
vtar Эксперт
Вступление в Клуб: 20.03.2009
|
Вт Авг 29, 2017 10:23   |
|
Полезность: Нет оценки
|
Alkov пишет: | В смысле? Джобом он прекрасно создаётся.
Только причём тут клиентский ПК, им только потом забрать готовый отчёт с FIO. |
каким образом ? пример есть ? |
|
 |
Эмиралька Эксперт
Вступление в Клуб: 09.11.2015
|
Вт Авг 29, 2017 10:40   |
|
Полезность: Нет оценки
|
vtar пишет: | Alkov пишет: | В смысле? Джобом он прекрасно создаётся.
Только причём тут клиентский ПК, им только потом забрать готовый отчёт с FIO. |
каким образом ? пример есть ? |
Вы не путаете OOXML.API_XL и RUNTIME.LIB_PRINT?
В первой процедура finish возвращает BLOB, в котором ваш готовый файл, только сохранить надо.
А во второй вызывается первая, BLOB сохраняется и уже готовый файл отправляется на локальную станцию пользователя. |
|
 |
Alkov Профи
Вступление в Клуб: 23.09.2010
|
Вт Авг 29, 2017 10:56   |
|
Полезность: Нет оценки
|
vtar пишет: | Alkov пишет: | В смысле? Джобом он прекрасно создаётся.
Только причём тут клиентский ПК, им только потом забрать готовый отчёт с FIO. |
каким образом ? пример есть ? |
Ну вот так:
Код: |
&xl.finish(iBlob_new); --Завершение формирования отчета
--Создаем JOB на сервере отчетов и запускаем на выполнение
iReportId := ::[OOXML].[API_ORSA].putReport(iBlob_new, 'xlsx', 'Шаблон для операции отчета в EXCEL(OOXML)');
begin -- Исполнение отчета на сервере отчетов
-- ЖДЕМ ПОКА НА СЕРВЕРЕ ОТЧЕТОВ ВЫПОЛНИТСЯ НАШ ОТЧЕТ (iReportId идентификатор отчета)
iCnt := 0;
loop
iCnt := iCnt+1;
iStatus := [ORSALIB].Get_Status(iReportId);
exit when iStatus in ([ORSALIB].STATE_EXECUTE,[ORSALIB].STATE_ERROR);
if iCnt > iWaitLimit then
stdio.put_line_buf('Исчерпан лимит времени на сервере отчетов для формированя отчета (файл: '||v_name_rep_file||')');
exit;
end if;
utils.sleep(1);
end loop;
-- Проверяем статус отчета, если выполнился с ошибкой завершаем операцию без сохранения в файл
if iStatus = [ORSALIB].STATE_ERROR then
stdio.put_line_buf('Ошибка при формировании отчета на сервере отчетов (файл: '||v_name_rep_file||')');
stdio.put_line_buf([ORSALIB].Get_Error(iReportId));
return;
end if;
-- Помещаем отчет в iresult (Тип результата BLOB)
iresult := [ORSALIB].Get_result(iReportId);
-- Записываем BLOB в Файл
::[BANK_CLIENT].[LIB_BLOB].blob2file(iresult ,v_path,v_name_rep_file);
-- Если необходим перенос отчета на локальную машишу. Переносим его.
/*ЕСЛИ ЭТУ СТРОКУ ЗАКОМЕНТИРОВАТЬ БУДЕТ СОХРАНЯТСЯ НА СЕРВЕРЕ по пути v_path, иначе сохранится по пути v_path_local*/
-- stdio.put_line_buf('<%PLPCALL [GNI_JOUR].[EXPORT_LOCAL](%VAR%.V_SRC_NAME=>'''||v_name_rep_file||''',%VAR%.V_DST_PATH=>'''||v_path_local||''',%VAR%.V_SRC_PATH=>'''||v_path||''',%VAR%.V_FROM_SERVER=>'''||1||''')%>');
end;
|
|
|
 |
vtar Эксперт
Вступление в Клуб: 20.03.2009
|
Вт Авг 29, 2017 11:13   |
|
Полезность: Нет оценки
|
я имел в виду несколько другое
без сервера отчетов, на стороне ORACLE сгенерить XLS или DOC по шаблону и/или командам VBS |
|
 |
Alkov Профи
Вступление в Клуб: 23.09.2010
|
Ср Авг 30, 2017 04:15   |
|
Полезность: Нет оценки
|
vtar пишет: |
я имел в виду несколько другое
без сервера отчетов, на стороне ORACLE сгенерить XLS или DOC по шаблону и/или командам VBS |
Почему без сервера отчётов ?
Oracle report manager всё равно же установлен на схеме... |
|
 |
vtar Эксперт
Вступление в Клуб: 20.03.2009
|
Ср Авг 30, 2017 09:35   |
|
Полезность: Нет оценки
|
Алекс,
а способ с сервером отчетов годится для вызова из внешней системы ?
например ДБО генерит запрос выписки из ЦФТ и получает в ответ файл или BLOB ? |
|
 |
Alkov Профи
Вступление в Клуб: 23.09.2010
|
Ср Авг 30, 2017 10:58   |
|
Полезность: Нет оценки
|
vtar пишет: | Алекс,
а способ с сервером отчетов годится для вызова из внешней системы ?
например ДБО генерит запрос выписки из ЦФТ и получает в ответ файл или BLOB ? |
Ну если например схема работает так :
дбо <-> шина IBM WebSphere MQ<-> интегратор(MGW- агент) <->(обработчики бп интегратора)
Тогда выложить файл на ФИО можно в обработке запроса интегратора (бп).
Можно без шины если есть возможность вызвать из дбо процедуру ораклового пакета ,то примерно также
дбо (вызов [CIT_BO]::[EXT_CALL_LIB])-> интегратор (обработчики бп интегратора) |
|
 |
vtar Эксперт
Вступление в Клуб: 20.03.2009
|
|
 |
Alkov Профи
Вступление в Клуб: 23.09.2010
|
Чт Авг 31, 2017 03:09   |
|
Полезность: Нет оценки
|
Ну можно и напрямую если есть возможность
, но интегратор хранит всю историю запросов и не надо этим заморачиваться.
Ну и вообще достаточно универсален для интеграции внешних систем,
когда приходишь к тому чтобы повесить все внешние системы на одну шину... |
|
 |
|