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

копирование файла на сервер
На страницу Пред.  1, 2, 3
 
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Разработка в PL/PLUS. Оптимизация запросов Oracle
Предыдущая тема :: Следующая тема  
Автор Сообщение
vtar
Эксперт


Вступление в Клуб: 20.03.2009
СообщениеВт Апр 03, 2018 14:56    Ответить с цитатой
Полезность: Нет оценки
сдается мне, ты путаешь пути

на клиенте у тебя путь в файловой системе 'C\папка\файл'

на сервере - типа '.\' он еще лежит в системной переменной PATH есть команда его оттуда вычитать
Volod
Эксперт


Вступление в Клуб: 19.09.2007
СообщениеВт Апр 03, 2018 15:39    Ответить с цитатой
Полезность: Нет оценки
зачем PLPCALL?
что в P_FILE_ALT.[SRC_PATH]? Д.б. папка на сервере
какой-то квест
mmm_kazan
Участник со стажем


Вступление в Клуб: 28.03.2018
СообщениеСр Апр 04, 2018 10:13    Ответить с цитатой
Полезность: Нет оценки
Здравствуйте.
Не ругайтесь - но пока не пойму не успокоюсь.

На экранной форме есть выбор файла на локальном диске.
Выбираю.

В теле есть код
(Наверное с путями проблема - потому что не ругается на него)
Может подскажете как правильно написать?

fileW := stdio.open('.', P_FILE_ALT.[DST_NAME], 'w');
stdio.put_line(fileW,'</ВХОДЯЩАЯ_ОПИСЬ>', true, null, stdio.DOSTEXT);
stdio.close(fileW);

::[DOCUMENT].[COPYFILES].tbl_F$L.delete;
::[DOCUMENT].[COPYFILES].tbl_F$L(0).[SRC_NAME] := P_FILE_ALT.[SRC_NAME];
::[DOCUMENT].[COPYFILES].tbl_F$L(0).[SRC_PATH] := '.';
::[DOCUMENT].[COPYFILES].tbl_F$L(0).[SRC_TYPE] := true; -- С сервера
::[DOCUMENT].[COPYFILES].tbl_F$L(0).[SRC_DELETE] := true; -- Потом удалить
::[DOCUMENT].[COPYFILES].tbl_F$L(0).[DST_NAME] := P_FILE_ALT.[DST_NAME];
::[DOCUMENT].[COPYFILES].tbl_F$L(0).[DST_PATH] := P_FILE_ALT.[DST_PATH];
::[DOCUMENT].[COPYFILES].tbl_F$L(0).[DST_TYPE] := false; -- На клиента
::[DOCUMENT].[COPYFILES].tbl_F$L(0).[DST_DELETE] := false;

stdio.put_line_buf('<%PLPCALL [DOCUMENT].[COPYFILES]() %>');
Эмиралька
Эксперт


Вступление в Клуб: 09.11.2015
СообщениеСр Апр 04, 2018 10:20    Ответить с цитатой
Полезность: 4
mmm_kazan пишет:
Здравствуйте.
Не ругайтесь - но пока не пойму не успокоюсь.
Зачем разбираться в этой мешанине, когда уже кто-то в ней разобрался и сделал гораздо более простой код?
например, REPS_DATA.LIB_FILE.SendFile ?
Там же есть и примеры.
Код:

      --   Передаём файл на локальную станцию
      stdio.put_line_buf(
        ::[REPS_DATA].[LIB_FILE].SendFile(   './qwerty123.log'
                                ,   'c:\ibso\dok\qwerty123_log.txt'
                                ,   true   )
     );


Последний раз редактировалось: Эмиралька (Чт Апр 05, 2018 07:34), всего редактировалось 1 раз
vtar
Эксперт


Вступление в Клуб: 20.03.2009
СообщениеСр Апр 04, 2018 10:24    Ответить с цитатой
Полезность: 1
Volod пишет:
зачем PLPCALL?
что в P_FILE_ALT.[SRC_PATH]? Д.б. папка на сервере
какой-то квест


да, там CALL должен быть

вот пример хороший нашел

ТБП FNS_ACC_INFO
Электронный обмен с ФНС. Файлы сведений о счетах

Выгрузить файл в ОС
SAVE_TO_OS

procedure CopyFiles
mmm_kazan
Участник со стажем


Вступление в Клуб: 28.03.2018
СообщениеСр Апр 04, 2018 11:25    Ответить с цитатой
Полезность: Нет оценки
Эмиралька пишет:
mmm_kazan пишет:
Здравствуйте.
Не ругайтесь - но пока не пойму не успокоюсь.
Зачем разбираться в этой помойке, когда уже кто-то в ней разобрался и сделал гораздо более простой код?
например, REPS_DATA.LIB_FILE.SendFile ?
Там же есть и примеры.
Код:

      --   Передаём файл на локальную станцию
      stdio.put_line_buf(
        ::[REPS_DATA].[LIB_FILE].SendFile(   './qwerty123.log'
                                ,   'c:\ibso\dok\qwerty123_log.txt'
                                ,   true   )
     );



Действительно вроде работает. Пойду разбираться.
Всем БОЛЬШОЕ спасибо.
vtar
Эксперт


Вступление в Клуб: 20.03.2009
СообщениеСр Апр 04, 2018 14:25    Ответить с цитатой
Полезность: Нет оценки
Эмиралька пишет:
mmm_kazan пишет:
Здравствуйте.
Не ругайтесь - но пока не пойму не успокоюсь.
Зачем разбираться в этой помойке, когда уже кто-то в ней разобрался и сделал гораздо более простой код?
например, REPS_DATA.LIB_FILE.SendFile ?
Там же есть и примеры.
Код:

      --   Передаём файл на локальную станцию
      stdio.put_line_buf(
        ::[REPS_DATA].[LIB_FILE].SendFile(   './qwerty123.log'
                                ,   'c:\ibso\dok\qwerty123_log.txt'
                                ,   true   )
     );


А sendfile в обоих направлениях умеет слать ? я как раз с помойкой разбирался, когда надо было в одной операшке импортировать файл с клиента, разобрать его на сервере и вернуть обратно на клиента протокол разбора
Эмиралька
Эксперт


Вступление в Клуб: 09.11.2015
СообщениеЧт Апр 05, 2018 07:19    Ответить с цитатой
Полезность: 3
vtar пишет:
Эмиралька пишет:
mmm_kazan пишет:
Здравствуйте.
Не ругайтесь - но пока не пойму не успокоюсь.
Зачем разбираться в этой помойке, когда уже кто-то в ней разобрался и сделал гораздо более простой код?
например, REPS_DATA.LIB_FILE.SendFile ?
Там же есть и примеры.
Код:

      --   Передаём файл на локальную станцию
      stdio.put_line_buf(
        ::[REPS_DATA].[LIB_FILE].SendFile(   './qwerty123.log'
                                ,   'c:\ibso\dok\qwerty123_log.txt'
                                ,   true   )
     );


А sendfile в обоих направлениях умеет слать ?

Нет, но там ещё ::[REPS_DATA].[LIB_FILE].ReceiveFile есть для приёма файла с клиента на сервер.
Вот, например, из секции валидации
Код:
  -- vDest - это переменная для использования в runtime.scmd, содержит VB-Script!
...
V_DEST :=   ''
                  ||   'Form1.ScriptPlayEx("'   --   Запускаем получение файла архива с локальной станции
                  ||   ::[REPS_DATA].[LIB_FILE].ReceiveFile(
   'c:\ibso\dok\sample.txt'
,   './sample123456.txt'                     )
                  ||   '")'||   LF$
                  ||   'Call Form1.ScriptServerValidate(nothing, "UPLOAD_OK")'   --   И после этого перезапускаем валидатор
            ;
      elsif p_info = 'UPLOAD_OK' then
         debug_pipe('Файлы уже загружены на сервер.', 0);
...


так, наверное, тоже сработает
Код:
stdio.put_line_buf(   --   Запускаем получение файла с локальной станции
      ::[REPS_DATA].[LIB_FILE].ReceiveFile(
   'c:\ibso\dok\sample.txt'
,   './sample123456.txt'   )
      );
mmm_kazan
Участник со стажем


Вступление в Клуб: 28.03.2018
СообщениеПт Апр 06, 2018 09:41    Ответить с цитатой
Полезность: Нет оценки
Здравствуйте.
Странный какой-то эффект.
Когда я использую на экранной форме Экспорт-Иморт файлов - все записывается на сервер и копируется потом на локалку.
Все хорошо.

Если пытаюсь сделать что-то вроде этого (без выбора файла)

g_str := '0015-0000-LPRI-Р-'||to_char(sysdate,'yyyymmdd')||'-001'||'-0000000000'||'.XML';
fileW := stdio.open('.', g_str, 'w');

stdio.put_line(fileW,'<?xml version="1.0" encoding="utf-8"?>', true, null, stdio.WINTEXT);
stdio.put_line_buf(::[REPS_DATA].[LIB_FILE].SendFile('./'||g_str,'p:\марат\'||g_str,true));
stdio.put_line_buf('Загрузка завершена');

Не хочет
Volod
Эксперт


Вступление в Клуб: 19.09.2007
СообщениеПт Апр 06, 2018 09:55    Ответить с цитатой
Полезность: Нет оценки
close не забыли?
mmm_kazan
Участник со стажем


Вступление в Клуб: 28.03.2018
СообщениеПт Апр 06, 2018 09:57    Ответить с цитатой
Полезность: Нет оценки
Есть в конце

stdio.put_line(fileW,'</registry>', true, null, stdio.WINTEXT);
stdio.close(fileW);

stdio.put_line_buf(::[REPS_DATA].[LIB_FILE].SendFile('./'||g_str,'p:\марат\'||g_str,true));
stdio.put_line_buf('Загрузка завершена');
Volod
Эксперт


Вступление в Клуб: 19.09.2007
СообщениеПт Апр 06, 2018 10:10    Ответить с цитатой
Полезность: Нет оценки
м.б. проблемы с регистром символов имени файла.
Попробуйте просто цифровое имя без букв.
Эмиралька
Эксперт


Вступление в Клуб: 09.11.2015
СообщениеПт Апр 06, 2018 10:20    Ответить с цитатой
Полезность: 1
mmm_kazan пишет:
Здравствуйте.
Странный какой-то эффект.
Если пытаюсь сделать что-то вроде этого (без выбора файла)

g_str := '0015-0000-LPRI-Р-'||to_char(sysdate,'yyyymmdd')||'-001'||'-0000000000'||'.XML';
fileW := stdio.open('.', g_str, 'w');

stdio.put_line(fileW,'<?xml version="1.0" encoding="utf-8"?>', true, null, stdio.WINTEXT);
stdio.put_line_buf(::[REPS_DATA].[LIB_FILE].SendFile('./'||g_str,'p:\марат\'||g_str,true));
stdio.put_line_buf('Загрузка завершена');

Не хочет

На операции в доп.свойствах должен стоять флаг "Выводит команды в буфер сессии"
mmm_kazan
Участник со стажем


Вступление в Клуб: 28.03.2018
СообщениеПт Апр 06, 2018 11:02    Ответить с цитатой
Полезность: Нет оценки
Спасибо - тормознул.
Показать сообщения:   
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Разработка в PL/PLUS. Оптимизация запросов Oracle Часовой пояс: GMT + 3
На страницу Пред.  1, 2, 3
Страница 3 из 3

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