TAKE FROM FTP — различия между версиями
Материал из Фабиус wiki
Hisava (обсуждение | вклад) м (→Текст) |
Hisava (обсуждение | вклад) м (→Текст) |
||
Строка 12: | Строка 12: | ||
endif | endif | ||
fld := ' _0,C,50; _1,C,20; _2,C,20; _3,C,20; _4,C,20; _5,C,80; _6,C,30; _7,N,5; _8,C,30; _9,C,30; _10,N,5; _11,C,25; _13,C,25; ' | fld := ' _0,C,50; _1,C,20; _2,C,20; _3,C,20; _4,C,20; _5,C,80; _6,C,30; _7,N,5; _8,C,30; _9,C,30; _10,N,5; _11,C,25; _13,C,25; ' | ||
− | temp_path := Nice_Path( ExpandUNCFileName( TempPath ) ) | + | temp_path := [[Nice_Path]]( [[ExpandUNCFileName]]( TempPath ) ) |
− | ip := InputPeriod( true ) | + | ip := [[InputPeriod]]( true ) |
− | if Empty( ip ) | + | if [[Empty]]( ip ) |
return | return | ||
endif | endif | ||
try | try | ||
− | WaitMsg( 'Подготовка', msg ) | + | [[WaitMsg]]( 'Подготовка', msg ) |
− | __ := CreateTmpFile( fld, '__', ~IsFreeDel := true ) | + | __ := [[CreateTmpFile]]( fld, '__', ~IsFreeDel := true ) |
sql := [ Select PNAME, FROM_ATOL, FROM_ATOLF, TO_ATOL, TO_ATOLF, FOLDERATOL, FTP_SERVER, FTP_PORT, FTP_LOGIN, FTP_PASS, KOD, FROM_ATOLZ, TO_ATOLZ ; | sql := [ Select PNAME, FROM_ATOL, FROM_ATOLF, TO_ATOL, TO_ATOLF, FOLDERATOL, FTP_SERVER, FTP_PORT, FTP_LOGIN, FTP_PASS, KOD, FROM_ATOLZ, TO_ATOLZ ; | ||
− | From R603 Where | + | From [[R603]] Where [[R20]]_KOD = ] + taskanal |
− | SimpleSql( [ Insert into ] + TmpFilePath( __ ) + [( _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _13 ) ] + sql, ReflisPath ) | + | [[SimpleSql]]( [ Insert into ] + TmpFilePath( __ ) + [( _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _13 ) ] + sql, ReflisPath ) |
− | ( __ )->( DbGoTop() ) | + | ( __ )->( [[DbGoTop]]() ) |
− | while !( __ )->( eof() ) | + | while !( __ )->( [[eof]]() ) |
// _2 флаг импорта | // _2 флаг импорта | ||
from_atolf := atr( ( __ )->_2 ) | from_atolf := atr( ( __ )->_2 ) | ||
aa := { '$$$TRANSACTIONSBYDATERANGE' } | aa := { '$$$TRANSACTIONSBYDATERANGE' } | ||
− | datas := StoD( ip[1] ) + '; ' + StoD( ip[2] ) | + | datas := [[StoD]]( ip[1] ) + '; ' + [[StoD]]( ip[2] ) |
− | Aadd( aa, datas ) | + | [[Aadd]]( aa, datas ) |
− | WriteTxtFile( aa, from_atolf, temp_path, true ) | + | [[WriteTxtFile]]( aa, from_atolf, temp_path, true ) |
// _5 папка обмена | // _5 папка обмена | ||
− | dest_path := atr( ( __ )->_5 ) | + | dest_path := [[atr]]( ( __ )->_5 ) |
− | if Left( dest_path, 1 ) = '/' | + | if [[Left]]( dest_path, 1 ) = '/' |
− | dest_path := SUBTOKEN( dest_path,, '/' ) | + | dest_path := [[SUBTOKEN]]( dest_path,, '/' ) |
endif | endif | ||
− | host := atr( ( __ )->_6 ) | + | host := [[atr]]( ( __ )->_6 ) |
port := ( __ )->_7 | port := ( __ )->_7 | ||
− | user := atr( ( __ )->_8 ) | + | user := [[atr]]( ( __ )->_8 ) |
− | pass := atr( ( __ )->_9 ) | + | pass := [[atr]]( ( __ )->_9 ) |
try | try | ||
− | ftp := FTPOPEN( host,, user, pass, ~PassiveMode := true ) | + | ftp := [[FTPOPEN]]( host,, user, pass, ~PassiveMode := true ) |
// очищаем папку | // очищаем папку | ||
− | aa := FTPLIST( ftp,, '/' + dest_path + '/*.*' ) | + | aa := [[FTPLIST]]( ftp,, '/' + dest_path + '/*.*' ) |
− | if !IsEmpty( aa ) | + | if ![[IsEmpty]]( aa ) |
for i := 1 to len( aa ) | for i := 1 to len( aa ) | ||
− | FTPDELETE( ftp, '/' + dest_path + '/', aa[i] ) | + | [[FTPDELETE]]( ftp, '/' + dest_path + '/', aa[i] ) |
next | next | ||
endif | endif | ||
− | FTPPUT( ftp, temp_path + from_atolf, '/' + dest_path + '/', from_atolf ) | + | [[FTPPUT]]( ftp, temp_path + from_atolf, '/' + dest_path + '/', from_atolf ) |
// в этот момент Атол начинает выгружать продажи и удалит файл from_atolf как только выгрузит | // в этот момент Атол начинает выгружать продажи и удалит файл from_atolf как только выгрузит | ||
aa := { from_atolf } | aa := { from_atolf } | ||
i := 0 | i := 0 | ||
− | while Ascan( aa, from_atolf ) > 0 and i < 10 | + | while [[Ascan]]( aa, from_atolf ) > 0 and i < 10 |
i := i + 1 | i := i + 1 | ||
− | WaitMsg( 'Выгрузка продаж ( ' + a_s( i ) + ' ) ' + atr( ( __ )->_0 ), msg ) | + | [[WaitMsg]]( 'Выгрузка продаж ( ' + a_s( i ) + ' ) ' + atr( ( __ )->_0 ), msg ) |
− | Pause( 10000 ) | + | [[Pause]]( 10000 ) |
− | aa := FTPLIST( ftp,, '/' + dest_path + '/*.*' ) | + | aa := [[FTPLIST]]( ftp,, '/' + dest_path + '/*.*' ) |
end | end | ||
− | from_atolz := atr( ( __ )->_11 ) | + | from_atolz := [[atr]]( ( __ )->_11 ) |
try | try | ||
− | FTPGET( ftp, '/' + dest_path + '/' + from_atolz, temp_path + '/' + from_atolz + ( __ )->_10 ) | + | [[FTPGET]]( ftp, '/' + dest_path + '/' + from_atolz, temp_path + '/' + from_atolz + ( __ )->_10 ) |
except | except | ||
end | end | ||
finally | finally | ||
− | FTPCLOSE( ftp ) | + | [[FTPCLOSE]]( ftp ) |
end | end | ||
− | ( __ )->( DbSkip() ) | + | ( __ )->( [[DbSkip]]() ) |
end | end | ||
finally | finally | ||
− | CloseTable( __ ) | + | [[CloseTable]]( __ ) |
− | HideMsg( msg ) | + | [[HideMsg]]( msg ) |
end | end | ||
Версия 16:09, 28 апреля 2017
TAKE_FROM_FTP - это программа из справочника R266
Загрузить продажи из FTP
TAKE_FROM_FTP()
Использование
Магазин "Новинка" ( 7 ) - Загрузка продаж - Из FTP
Текст
local ip, aa, datas, temp_path, from_atolf, __, taskanal, fld, sql, ftp, host, port, user, pass, dest_path, i, msg, from_atolz taskanal := GetPrm( 'TASKANAL', TaskName, TaskNum ) if Empty( taskanal ) return endif fld := ' _0,C,50; _1,C,20; _2,C,20; _3,C,20; _4,C,20; _5,C,80; _6,C,30; _7,N,5; _8,C,30; _9,C,30; _10,N,5; _11,C,25; _13,C,25; ' temp_path := Nice_Path( ExpandUNCFileName( TempPath ) ) ip := InputPeriod( true ) if Empty( ip ) return endif try WaitMsg( 'Подготовка', msg ) __ := CreateTmpFile( fld, '__', ~IsFreeDel := true ) sql := [ Select PNAME, FROM_ATOL, FROM_ATOLF, TO_ATOL, TO_ATOLF, FOLDERATOL, FTP_SERVER, FTP_PORT, FTP_LOGIN, FTP_PASS, KOD, FROM_ATOLZ, TO_ATOLZ ; From R603 Where R20_KOD = ] + taskanal SimpleSql( [ Insert into ] + TmpFilePath( __ ) + [( _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _13 ) ] + sql, ReflisPath ) ( __ )->( DbGoTop() ) while !( __ )->( eof() ) // _2 флаг импорта from_atolf := atr( ( __ )->_2 ) aa := { '$$$TRANSACTIONSBYDATERANGE' } datas := StoD( ip[1] ) + '; ' + StoD( ip[2] ) Aadd( aa, datas ) WriteTxtFile( aa, from_atolf, temp_path, true ) // _5 папка обмена dest_path := atr( ( __ )->_5 ) if Left( dest_path, 1 ) = '/' dest_path := SUBTOKEN( dest_path,, '/' ) endif host := atr( ( __ )->_6 ) port := ( __ )->_7 user := atr( ( __ )->_8 ) pass := atr( ( __ )->_9 ) try ftp := FTPOPEN( host,, user, pass, ~PassiveMode := true ) // очищаем папку aa := FTPLIST( ftp,, '/' + dest_path + '/*.*' ) if !IsEmpty( aa ) for i := 1 to len( aa ) FTPDELETE( ftp, '/' + dest_path + '/', aa[i] ) next endif FTPPUT( ftp, temp_path + from_atolf, '/' + dest_path + '/', from_atolf ) // в этот момент Атол начинает выгружать продажи и удалит файл from_atolf как только выгрузит aa := { from_atolf } i := 0 while Ascan( aa, from_atolf ) > 0 and i < 10 i := i + 1 WaitMsg( 'Выгрузка продаж ( ' + a_s( i ) + ' ) ' + atr( ( __ )->_0 ), msg ) Pause( 10000 ) aa := FTPLIST( ftp,, '/' + dest_path + '/*.*' ) end from_atolz := atr( ( __ )->_11 ) try FTPGET( ftp, '/' + dest_path + '/' + from_atolz, temp_path + '/' + from_atolz + ( __ )->_10 ) except end finally FTPCLOSE( ftp ) end ( __ )->( DbSkip() ) end finally CloseTable( __ ) HideMsg( msg ) end Message( 'Загрузка завершена успешно' ) // запрос периода // удаление старой выгрузки // _0 Наименование // _1 файл импорта rep // _2 флаг импорта // _3 файл экспорта srp // _4 флаг экспорта // _5 папка обмена // _6 FTP-сервер // _7 порт // _8 логин // _9 пароль // _10 код // _11 Файл импорта rep в архиве // _13 Файл экспорта spr в архиве