Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Random Эксперт
Вступление в Клуб: 27.06.2011
|
Вт Авг 04, 2015 07:03   |
|
Полезность: Нет оценки
|
Вот если такие головоломки с вызовами - не лучше ли запустить копирование в секции валидации, или ещё лучше - в клиент-скрипте?
Уж в клиент-скрипте-то вариантов нет - выполнение синхронное. В отличие от вывода в буфер сессии... |
|
 |
mmm_kazan Участник со стажем
Вступление в Клуб: 28.03.2018
|
Вт Апр 03, 2018 11:24   |
|
Полезность: Нет оценки
|
Здравствуйте.
А нет случайно кода покороче и попонятнее?
Мне нужно читать файл и заполнять параллельно файл на локальной машине.
На Экранной форме определил заполнение файла приемника (DST)
В теле делаю
fileR := stdio.open(P_FILE_ALT.[DST_PATH], P_FILE_ALT.[DST_NAME], 'r');
Потом читаю его - все устраивает.
Как записать потом неясно.
Нашел конечно вариант с
::[DOCUMENT].[COPYFILES].tbl_F$L(0).[SRC_NAME] := 'mmm.txt';
::[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] := 'mmm.txt';
::[DOCUMENT].[COPYFILES].tbl_F$L(0).[DST_PATH] := 'p:\marat\';
::[DOCUMENT].[COPYFILES].tbl_F$L(0).[DST_TYPE] := false; -- На клиента
::[DOCUMENT].[COPYFILES].tbl_F$L(0).[DST_DELETE] := false;
Но так и не смог разобраться до конца.
Видимо делаю что-то не так. |
|
 |
Volod Эксперт
Вступление в Клуб: 19.09.2007
|
Вт Апр 03, 2018 11:55   |
|
Полезность: Нет оценки
|
параллельно не получится.
Копирование файла на локал осуществляется один раз после того, как он создастся на сервере.
Сейчас проблема в чем? Файл не появляется в локальной папке? |
|
 |
mmm_kazan Участник со стажем
Вступление в Клуб: 28.03.2018
|
Вт Апр 03, 2018 13:00   |
|
Полезность: Нет оценки
|
Вот что есть сейчас.
fileR := stdio.open(P_FILE_ALT.[DST_PATH], P_FILE_ALT.[DST_NAME], 'r');
while stdio.get_line(fileR, g_str, false, stdio.WINTEXT) loop
stdio.put_line_buf(trim(g_str));
end loop;
stdio.close(fileR);
Естественно выводит в окно.
Устраивает с натяжкой.
Файл откуда читаю лежит на клиентской части. |
|
 |
mmm_kazan Участник со стажем
Вступление в Клуб: 28.03.2018
|
Вт Апр 03, 2018 13:07   |
|
Полезность: Нет оценки
|
Этот блок только сегодня пытался применить
::[DOCUMENT].[COPYFILES].tbl_F$L(0).[SRC_NAME] := 'mmm.txt';
::[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] := 'mmm.txt';
::[DOCUMENT].[COPYFILES].tbl_F$L(0).[DST_PATH] := 'p:\marat\';
::[DOCUMENT].[COPYFILES].tbl_F$L(0).[DST_TYPE] := false; -- На клиента
::[DOCUMENT].[COPYFILES].tbl_F$L(0).[DST_DELETE] := false; |
|
 |
Volod Эксперт
Вступление в Клуб: 19.09.2007
|
Вт Апр 03, 2018 13:08   |
|
Полезность: 1
|
откройте еще один файл FileId, записывайте в него
stdio.put_line(FileId, Str, true, null, stdio.DOSTEXT); -- уточните параметры
закройте
отправьте на локал |
|
 |
mmm_kazan Участник со стажем
Вступление в Клуб: 28.03.2018
|
Вт Апр 03, 2018 13:16   |
|
Полезность: Нет оценки
|
Вроде пробовал
В параметрах не могу разобраться.
fileW := stdio.open(P_FILE_ALT.[DST_PATH], 'mmm.txt', 'w');
stdio.put_line(fileW,'</ВХОДЯЩАЯ_ОПИСЬ>');
stdio.close(fileW);
::[DOCUMENT].[COPYFILES].tbl_F$L(0).[SRC_NAME] := 'mmm.txt';
::[DOCUMENT].[COPYFILES].tbl_F$L(0).[SRC_PATH] := P_FILE_ALT.[DST_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] := 'mmm.txt';
::[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; |
|
 |
Volod Эксперт
Вступление в Клуб: 19.09.2007
|
Вт Апр 03, 2018 14:22   |
|
Полезность: Нет оценки
|
а почему 0?
::[DOCUMENT].[COPYFILES].tbl_F$L(0).[SRC_NAME] := 'mmm.txt';
и вначале нужно ::[DOCUMENT].[COPYFILES].tbl_F$L.delete; |
|
 |
vtar Эксперт
Вступление в Клуб: 20.03.2009
|
Вт Апр 03, 2018 14:28   |
|
Полезность: Нет оценки
|
И не забыть про
stdio.put_line_buf("<%PLPCALL [DOCUMENT].[COPYFILES]() %>");
в конце
предварительно поставив галку "передает команды в буфер" в доп. свойствах операции |
|
 |
mmm_kazan Участник со стажем
Вступление в Клуб: 28.03.2018
|
Вт Апр 03, 2018 14:30   |
|
Полезность: Нет оценки
|
На счет индекса - не знаю. Там в коде, откуда я выдернул текст был цикл по i.
Больше интересует вопрос по путям. PATH. |
|
 |
Volod Эксперт
Вступление в Клуб: 19.09.2007
|
Вт Апр 03, 2018 14:38   |
|
Полезность: Нет оценки
|
индекс важен
определитесь, откуда /куда копируете
в последнем примере источник и получатель одинаковы
::[DOCUMENT].[COPYFILES].tbl_F$L(0).[SRC_PATH] := P_FILE_ALT.[DST_PATH];
::[DOCUMENT].[COPYFILES].tbl_F$L(0).[DST_PATH] := P_FILE_ALT.[DST_PATH]; |
|
 |
mmm_kazan Участник со стажем
Вступление в Клуб: 28.03.2018
|
Вт Апр 03, 2018 14:48   |
|
Полезность: Нет оценки
|
Строка
stdio.put_line_buf("<%PLPCALL [DOCUMENT].[COPYFILES]() %>");
Не проходит, хотя галку вроде поставил. |
|
 |
mmm_kazan Участник со стажем
Вступление в Клуб: 28.03.2018
|
Вт Апр 03, 2018 14:51   |
|
Полезность: Нет оценки
|
Изначально кусок такой кода
fileW := stdio.open(P_FILE_ALT.[DST_PATH], 'mmm.txt', 'w');
stdio.put_line(fileW,'</ВХОДЯЩАЯ_ОПИСЬ>', true, null, stdio.DOSTEXT);
stdio.close(fileW);
::[DOCUMENT].[COPYFILES].tbl_F$L.delete;
::[DOCUMENT].[COPYFILES].tbl_F$L(1).[SRC_NAME] := 'mmm.txt';
::[DOCUMENT].[COPYFILES].tbl_F$L(1).[SRC_PATH] := P_FILE_ALT.[SRC_PATH];
::[DOCUMENT].[COPYFILES].tbl_F$L(1).[SRC_TYPE] := true; -- С сервера
::[DOCUMENT].[COPYFILES].tbl_F$L(1).[SRC_DELETE] := true; -- Потом удалить
::[DOCUMENT].[COPYFILES].tbl_F$L(1).[DST_NAME] := 'mmm.txt';
::[DOCUMENT].[COPYFILES].tbl_F$L(1).[DST_PATH] := P_FILE_ALT.[DST_PATH];
::[DOCUMENT].[COPYFILES].tbl_F$L(1).[DST_TYPE] := false; -- На клиента
::[DOCUMENT].[COPYFILES].tbl_F$L(1).[DST_DELETE] := false;
--stdio.put_line_buf("<%PLPCALL [DOCUMENT].[COPYFILES]() %>");
exit; |
|
 |
vtar Эксперт
Вступление в Клуб: 20.03.2009
|
Вт Апр 03, 2018 14:53   |
|
Полезность: Нет оценки
|
stdio.put_line_buf('<%PLPCALL [DOCUMENT].[COPYFILES]() %>');
апострофы вместо "
я с клиент скрипта копировал, лажанулся  |
|
 |
mmm_kazan Участник со стажем
Вступление в Клуб: 28.03.2018
|
Вт Апр 03, 2018 14:53   |
|
Полезность: Нет оценки
|
А при таком
fileW := stdio.open(P_FILE_ALT.[SRC_PATH], 'mmm.txt', 'w');
stdio.put_line(fileW,'</ВХОДЯЩАЯ_ОПИСЬ>', true, null, stdio.DOSTEXT);
stdio.close(fileW);
::[DOCUMENT].[COPYFILES].tbl_F$L.delete;
::[DOCUMENT].[COPYFILES].tbl_F$L(1).[SRC_NAME] := 'mmm.txt';
::[DOCUMENT].[COPYFILES].tbl_F$L(1).[SRC_PATH] := P_FILE_ALT.[SRC_PATH];
::[DOCUMENT].[COPYFILES].tbl_F$L(1).[SRC_TYPE] := true; -- С сервера
::[DOCUMENT].[COPYFILES].tbl_F$L(1).[SRC_DELETE] := true; -- Потом удалить
::[DOCUMENT].[COPYFILES].tbl_F$L(1).[DST_NAME] := 'mmm.txt';
::[DOCUMENT].[COPYFILES].tbl_F$L(1).[DST_PATH] := P_FILE_ALT.[DST_PATH];
::[DOCUMENT].[COPYFILES].tbl_F$L(1).[DST_TYPE] := false; -- На клиента
::[DOCUMENT].[COPYFILES].tbl_F$L(1).[DST_DELETE] := false;
--stdio.put_line_buf("<%PLPCALL [DOCUMENT].[COPYFILES]() %>");
exit;
Говорит, что
В настоящий момент операция невозможна:
[mmm.txt] Операция не может быть выполнена для этого файла |
|
 |
|