CftClub.ru
Клуб специалистов ЦФТ-Банк

Работа с файлами

 
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Уроки ЦФТ-Банк для начинающих
Предыдущая тема :: Следующая тема  
Автор Сообщение
Ngswolf
Участник со стажем
Неподтвержденный


Вступление в Клуб: 06.05.2015
СообщениеЧт Июн 04, 2015 12:24   Работа с файлами Ответить с цитатой
Полезность: Нет оценки
Используя шаблон с помощью операции заполняю структуру blob, и записываю ее в файл .xlsx.
Пытаюсь использовать несколько вариантов:
1. Работа через сервер отчетов
Код:
--сохраняем данные в структуру xl_out
   ::[AD_RECORDS].[GETRPT].set_data(xl_out);
   stdio.put_line_buf('<% CALL AD_RECORDS GETRPT null %>');

Но здесь файлик открывается с именем, которое сгенерировал сервер, а хотелось бы видеть что-нибудь адекватное.
Плюс если мы не внесем никакие изменения, то он просто закроется, не потребовав сохранения.

2. Работа с файлами с помощью библиотеки stdio

Но тут тогда не понятно как потом поднять этот файл? В функциях ничего такого нет(
Код:
l_file_out := stdio.open(p_dir, p_fname, 'w');
   l_max_len := 32765;
   l_byte_to_read := dbms_lob.getlength(p_blob);
   l_offset := 1;
   while l_byte_to_read > 0 loop
      dbms_lob.read(p_blob, l_max_len, l_offset, l_str);
      l_offset := l_offset + l_max_len;
      l_byte_to_read := l_byte_to_read - l_max_len;
      l_wb := stdio.fwrite(l_file_out, l_str, utl_raw.length(l_str));
   end loop;
   stdio.close(l_file_out);


Посоветуйте, чем можно воспользоваться, чтобы сохранить файлик с красивым именем на локальной машине, а потом поднять его из этой же операции?
prog
Эксперт
НИКО-БАНК


Вступление в Клуб: 03.03.2008
СообщениеЧт Июн 04, 2015 13:48    Ответить с цитатой
Полезность: Нет оценки
Для "копирования" файлов с клиента на сервер и назад есть специальны тип "FILE$LOAD". Про него есть еще раздел справки а адм. словаря.

Также можно использовать для копирования файлов (в том числе нескольких)

Код:
stdio.put_line_buf('<% CALL DOCUMENT COPYFILES '||nvl(::[SYSTEM]%id, 1)||' %>');


этот код поднимет окно операции COPYFILES, которая также использует FILE$LOAD, затем скопирует файл. Посмотрите примеры в коде.

А для открытия файла можно использовать клиент-скрипт

Код:
Set ws = CreateObject("WScript.Shell")
      ws.RUN("""" & DEST & """")
Ngswolf
Участник со стажем
Неподтвержденный


Вступление в Клуб: 06.05.2015
СообщениеЧт Июн 04, 2015 14:36    Ответить с цитатой
Полезность: Нет оценки
Нашла еще замечательный механизм - OOXML.
Так же формируем структуру blob, потом передаем ее в функцию вместе с путем и именем и файлик сохраняется на клиенте, и копировать ничего не нужно

Код:
vRepId   := [OOXML]::[API_ORSA].putReport2SaveAs(xl_out, '', P_FILE.[DST_NAME], P_FILE.[DST_PATH]);
    [quote]


по формату OOXML даже дока есть
Alkov
Профи
Неподтвержденный


Вступление в Клуб: 23.09.2010
СообщениеПт Июн 05, 2015 02:31    Ответить с цитатой
Полезность: Нет оценки
Удобно.
Но вообще там тоже самое копирование есть...
Set objfso = CreateObject("Scripting.FileSystemObject")
objfso.copyfile fileName, V_FILE_NAME.text
objfso.deletefile fileName
wolfio
Участник - экстремал
Нордеа Банк


Вступление в Клуб: 22.10.2012
СообщениеЧт Июл 09, 2015 10:52    Ответить с цитатой
Полезность: Нет оценки
prog пишет:
Для "копирования" файлов с клиента на сервер и назад есть специальны тип "FILE$LOAD". Про него есть еще раздел справки а адм. словаря.


Не подскажете по такому вопросу: в доке, на которую вы сослались, есть такое примечание:

Примечание
Подробнее о возможностях работы оператора PLPCALL см. документ «Вызов экранной
формы операции с передачей параметров» (plpcall.doc).

не знаете, где сейчас можно скачать этот документ plpcall.doc?
Матвеев Евгений
Профи
Неподтвержденный


Вступление в Клуб: 31.01.2012
СообщениеЧт Июл 09, 2015 14:18    Ответить с цитатой
Полезность: Нет оценки
wolfio пишет:
prog пишет:
Для "копирования" файлов с клиента на сервер и назад есть специальны тип "FILE$LOAD". Про него есть еще раздел справки а адм. словаря.


Не подскажете по такому вопросу: в доке, на которую вы сослались, есть такое примечание:

Примечание
Подробнее о возможностях работы оператора PLPCALL см. документ «Вызов экранной
формы операции с передачей параметров» (plpcall.doc).

не знаете, где сейчас можно скачать этот документ plpcall.doc?


Прямая ссылка, правда потребуется логин на скачку
http://supportobject.cft.ru/ibso/docum/plpcall.zip
wolfio
Участник - экстремал
Нордеа Банк


Вступление в Клуб: 22.10.2012
СообщениеЧт Июл 09, 2015 14:54    Ответить с цитатой
Полезность: Нет оценки
Цитата:
Прямая ссылка, правда потребуется логин на скачку
http://supportobject.cft.ru/ibso/docum/plpcall.zip

Спасибо!

А этот сайт вообще работает? я почему-то не могу зайти на него в корень, из-за ошибки доступа, однако скачать у меня получилось.
Матвеев Евгений
Профи
Неподтвержденный


Вступление в Клуб: 31.01.2012
СообщениеЧт Июл 09, 2015 14:57    Ответить с цитатой
Полезность: Нет оценки
wolfio пишет:
Цитата:
Прямая ссылка, правда потребуется логин на скачку
http://supportobject.cft.ru/ibso/docum/plpcall.zip

Спасибо!

А этот сайт вообще работает? я почему-то не могу зайти на него в корень, из-за ошибки доступа, однако скачать у меня получилось.


Работает...сайт сопровождения цфт...скачал без логина...сегодня твой день )))
Показать сообщения:   
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Уроки ЦФТ-Банк для начинающих Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Рейтинг@Mail.ru