Вт Фев 27, 2018 14:28  Экспорт-импорт нескольких файлов сразу
Полезность: Нет оценки
Доброго времени суток!
Возник вопрос! Можно ли сделать импорт нескольких файлов сразу? Я создаю параметр P_FILE, указываю что это массив и тип указываю "Экспорт-импорт файлов", в результате при компиляции в "Пакет" - "Интерфейс" вылетает ошибка:
"компонента 'A#SRC_NAME' должна быть объявлена"!
И то же самое с A#SRC_PATH и A#SRC_MASK.
Как их можно объявить? На форме операции эти параметры есть.
Спасибо!
А по подробнее можно? На форме я вижу стандартную структуру "Экспорт-импорт файлов", вижу тип, что это сделано как массив этих файлов. А как сделать так, чтобы именно загрузка сразу кучи файлов и в дальнейшем уже обработка этих файлов, соответственно я должен знать куда всё выгрузилось на сервере. Есть пример?
А по подробнее можно? На форме я вижу стандартную структуру "Экспорт-импорт файлов", вижу тип, что это сделано как массив этих файлов. А как сделать так, чтобы именно загрузка сразу кучи файлов и в дальнейшем уже обработка этих файлов, соответственно я должен знать куда всё выгрузилось на сервере. Есть пример?
Ничего нового не нашел в найденных скриптах, один из них вроде как работает, но копируется только первый файл, остальные делает вид, что копирует (смотрю по монитору сессии), а когда происходит обращение к ним, то находится на сервере только первый файл
В проверке пишу
Код:
begin
if P_MESSAGE = 'DEFAULT' then
V_PATH := путь к папке источнику;
V_PATH_LOAD := путь к папке источнику||'\ARC';
V_PATH_SERV := ::[SYSTEM_PARAMS].[GET]('PATH', False); elsif P_MESSAGE = 'VALIDATE' then
if p_info = 'ADD_FILE' then
V_LISTM(V_LISTM.count + 1) := v_filename;
::[TAX_LIMIT_FILES].[LIB].CopyFile(V_LISTM.count, true, v_filename, V_PATH, V_PATH_SERV, p_del == true, p_not_copy == true);
elsif P_INFO = 'OK' then
if V_LISTM.count > 0 then
stdio.put_line_buf('<%PLPCALL [TAX_LIMIT_FILES].[CALL_COPYFILES](%VAR%.V_COUNT=>'''|| V_LISTM.count ||''') %>');
end if;
end if;
end if;
end;
function SplitBy(byref s, sep)
res = ""
p = instr(s, sep)
if p > 0 then ' разделитель найден
res = mid(s, 1, p - 1)
s = mid(s, p + len(sep))
else ' разделитель не найден
res = s
s = ""
end if
SplitBy = res
end function
Public function is_valid_name(p_filename)
Dim ret
Dim ras
ret = 0
if instr(p_filename,".")=0 Then
Exit Function
end if
'расширение файла
ras = Mid(p_filename,instrrev(p_filename,".")+1) 'ищем с конца строки
if (ras = "XLSX" or ras = "xlsx") then
ret = 1
end if
is_valid_name = ret
end Function
Public Function Main(LastControl)
'on error resume next
Set fso = CreateObject("Scripting.FileSystemObject")
Dim path 'Путь к директории
if LastControl Is Nothing Then
if V_PATH.text = "" then
msgbox("Не указана директория для загрузки реестров")
end if
s = V_PATH.Text
While len(s) > 0
path = Splitby(s, "*")
If Not (fso.FolderExists(path)) Then
if Msgbox("Не найден путь к директории загрузки реестров """&path&""". Создать?", vbYesNo) = vbYes then
'если директории нет, создадим
Set fs = fso.CreateFolder(path)
else
Main = NULL
Exit Function
end if
End If
Wend
Dim fs, f, f1, fc
'Получим список файлов из каталога пользователя
Set f = fso.GetFolder(V_PATH)
Set fc = f.Files
' Поскольку строка с именами файлов может превысить 32000 - используем таблицу строк
For Each f1 in fc
If is_valid_name(f1.name)>0 Then
v_filename = f1.name 'сохраняем имя файла в текстовую переменную
Form1.ScriptServerValidate nothing, "ADD_FILE" 'вызываем валидатор сервера для добавления имени файла в массив
end if
Next
else
if LastControl is OK then
if V_PATH_LOAD.text = "" then
msgbox("Не указана директория для загруженных реестров")
end if
s = V_PATH_LOAD.Text
While len(s) > 0
path = Splitby(s, "*")
If Not (fso.FolderExists(path)) Then
if Msgbox("Не найден путь к директории загруженных реестров """&path&""". Создать?", vbYesNo) = vbYes then
'если директории нет, создадим
Set fs = fso.CreateFolder(path)
else
Main = NULL
Exit Function
end if
End If
Wend
end if
end if
Main = True
End Function
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
Домен cftclub.ru не связан с ЗАО "Центр Финансовых Технологий" и ни в коей мере не нарушает авторских и иных прав
Владелец может не разделять мнения Участников и не несет ответственности за их публикации
Powered by phpBB