TAKE FROM FTP1 — различия между версиями
Материал из Фабиус wiki
Hisava (обсуждение | вклад) м (→Текст) |
Hisava (обсуждение | вклад) м (→Использование) |
||
| Строка 4: | Строка 4: | ||
= Использование = | = Использование = | ||
[[TAKE_FROM_FTP]] | [[TAKE_FROM_FTP]] | ||
| + | = Текст = | ||
| + | local temp_path, aaa, ii, r20_kod, folder, file_name, path, fld, msg, _, file_frontol, aa, sql, data, i | ||
| + | |||
| + | try | ||
| + | WaitMsg( 'Удаление', msg ) | ||
| + | |||
| + | temp_path := Nice_Path( ExpandUNCFileName( TempPath ) ) | ||
| + | aaa := Directory( temp_path + '*', "D" ) | ||
| + | for ii := 1 to len( aaa ) | ||
| + | if val( aaa[ii,1] ) > 0 | ||
| + | r20_kod := val( aaa[ii,1] ) | ||
| + | r20_kod := SeekRef( 'R603', r20_kod, 'R20_KOD', 1 ) | ||
| + | if Empty( r20_kod ) | ||
| + | loop | ||
| + | endif | ||
| + | folder := temp_path + aaa[ii,1] | ||
| + | file_name := Directory( folder + '\*rep*', "A" ) | ||
| + | if Empty( file_name ) | ||
| + | loop | ||
| + | endif | ||
| + | file_name := file_name[1,1] | ||
| + | path := Nice_Path( folder ) | ||
| + | file_name := path + file_name | ||
| + | fld := ' _0,C,200; _1,D,4; _2,C,20; ' | ||
| + | try | ||
| + | WaitMsg( 'Обработка данных' + file_name, msg ) | ||
| + | _ := CreateTmpFile( fld, '_', ~IsFreeDel := true ) | ||
| + | file_frontol := AssignFile( file_name ) | ||
| + | if Empty( file_frontol ) | ||
| + | loop | ||
| + | endif | ||
| + | TextReset( file_frontol ) | ||
| + | aa := ReadLn( file_frontol ) | ||
| + | // заполнение временной таблицы | ||
| + | while !TextEof( file_frontol ) | ||
| + | aa := ReadLn( file_frontol ) | ||
| + | WaitMsg( Left( aa, 16 ), msg ) | ||
| + | if len( aa ) > 10 | ||
| + | ( _ )->( DbAppend() ) | ||
| + | ( _ )->_0 := aa | ||
| + | ( _ )->_1 := CtoD( Token( aa, 2 ) ) | ||
| + | ( _ )->_2 := Right( file_name, 20 ) | ||
| + | endif | ||
| + | end | ||
| + | sql := [ Select DISTINCT _1 From ] + TmpFilePath( _ ) | ||
| + | aa := SqlToArr( sql, { '_1' } ) | ||
| + | aa := PrepareArr( aa ) | ||
| + | for i := 1 to len( aa ) | ||
| + | data := aa[i] | ||
| + | WaitMsg( 'Удаление ранее загруженных данных за ' + aa[i], msg ) | ||
| + | if !Is_File( 'DOCP', data ) | ||
| + | OpenFData( 'DOCP' + Ret_f_ext( data ), 'DOCP', false, OpdataPath, 'DOCP' ) | ||
| + | endif | ||
| + | // FTL | ||
| + | sql := [ Delete From DOCP] + Ret_f_ext( data ) + [ Where KINDDOC = 'FTL' and DATDOC = '] + SQlDate( data ) + [' and ; | ||
| + | DREFL1 = '[[R20]] ' and DANAL1 = ] + r20_kod + [ and 'SYSTEM.' = 'SYSTEM.' ] | ||
| + | SimpleSql( sql, OpdataPath ) | ||
| + | // FRO | ||
| + | sql := [ Delete From [[DOCP]]] + Ret_f_ext( data ) + [ Where KINDDOC = '[[FRO]]' and DATDOC = '] + [[SQlDate]]( data ) + [' and ; | ||
| + | KREFL1 = '[[R20]] ' and KANAL1 = ] + r20_kod + [ and 'SYSTEM.' = 'SYSTEM.' ] | ||
| + | [[SimpleSql]]( sql, OpdataPath ) | ||
| + | next | ||
| + | finally | ||
| + | if ![[Empty]]( file_frontol ) | ||
| + | [[CloseFile]]( file_frontol ) | ||
| + | endif | ||
| + | [[CloseTable]]( _ ) | ||
| + | [[HideMsg]]( msg ) | ||
| + | end | ||
| + | endif | ||
| + | next | ||
| + | |||
| + | finally | ||
| + | [[HideMsg]]( msg ) | ||
| + | end | ||
| + | |||
| + | |||
| + | // _0 - текст из файла ( одна строка ) | ||
| + | // _1 - дата | ||
| + | // _2 - путь к файлу | ||
| + | |||
= Смотрите также = | = Смотрите также = | ||
[[Полезные функции]] | [[Полезные функции]] | ||
[[Функции Delphi]] | [[Функции Delphi]] | ||
Версия 12:54, 4 мая 2017
TAKE_FROM_FTP1 - это программа из справочника R266
Удалить FTL и FRO
TAKE_FROM_FTP1()
Использование
Текст
local temp_path, aaa, ii, r20_kod, folder, file_name, path, fld, msg, _, file_frontol, aa, sql, data, i
try
WaitMsg( 'Удаление', msg )
temp_path := Nice_Path( ExpandUNCFileName( TempPath ) )
aaa := Directory( temp_path + '*', "D" )
for ii := 1 to len( aaa )
if val( aaa[ii,1] ) > 0
r20_kod := val( aaa[ii,1] )
r20_kod := SeekRef( 'R603', r20_kod, 'R20_KOD', 1 )
if Empty( r20_kod )
loop
endif
folder := temp_path + aaa[ii,1]
file_name := Directory( folder + '\*rep*', "A" )
if Empty( file_name )
loop
endif
file_name := file_name[1,1]
path := Nice_Path( folder )
file_name := path + file_name
fld := ' _0,C,200; _1,D,4; _2,C,20; '
try
WaitMsg( 'Обработка данных' + file_name, msg )
_ := CreateTmpFile( fld, '_', ~IsFreeDel := true )
file_frontol := AssignFile( file_name )
if Empty( file_frontol )
loop
endif
TextReset( file_frontol )
aa := ReadLn( file_frontol )
// заполнение временной таблицы
while !TextEof( file_frontol )
aa := ReadLn( file_frontol )
WaitMsg( Left( aa, 16 ), msg )
if len( aa ) > 10
( _ )->( DbAppend() )
( _ )->_0 := aa
( _ )->_1 := CtoD( Token( aa, 2 ) )
( _ )->_2 := Right( file_name, 20 )
endif
end
sql := [ Select DISTINCT _1 From ] + TmpFilePath( _ )
aa := SqlToArr( sql, { '_1' } )
aa := PrepareArr( aa )
for i := 1 to len( aa )
data := aa[i]
WaitMsg( 'Удаление ранее загруженных данных за ' + aa[i], msg )
if !Is_File( 'DOCP', data )
OpenFData( 'DOCP' + Ret_f_ext( data ), 'DOCP', false, OpdataPath, 'DOCP' )
endif
// FTL
sql := [ Delete From DOCP] + Ret_f_ext( data ) + [ Where KINDDOC = 'FTL' and DATDOC = '] + SQlDate( data ) + [' and ;
DREFL1 = 'R20 ' and DANAL1 = ] + r20_kod + [ and 'SYSTEM.' = 'SYSTEM.' ]
SimpleSql( sql, OpdataPath )
// FRO
sql := [ Delete From DOCP] + Ret_f_ext( data ) + [ Where KINDDOC = 'FRO' and DATDOC = '] + SQlDate( data ) + [' and ;
KREFL1 = 'R20 ' and KANAL1 = ] + r20_kod + [ and 'SYSTEM.' = 'SYSTEM.' ]
SimpleSql( sql, OpdataPath )
next
finally
if !Empty( file_frontol )
CloseFile( file_frontol )
endif
CloseTable( _ )
HideMsg( msg )
end
endif
next
finally
HideMsg( msg )
end
// _0 - текст из файла ( одна строка )
// _1 - дата
// _2 - путь к файлу