TAKE FROM FTP — различия между версиями
Материал из Фабиус wiki
Hisava (обсуждение | вклад) м |
Hisava (обсуждение | вклад) м (→Использование) |
||
| Строка 5: | Строка 5: | ||
= Использование = | = Использование = | ||
[[Магазин]] "Новинка" ( 7 ) - Загрузка продаж - Из 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 в архиве | ||
= Смотрите также = | = Смотрите также = | ||
Версия 16:06, 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 в архиве