TAKE FROM FTP — различия между версиями

Материал из Фабиус wiki
Перейти к: навигация, поиск
м (Текст)
м (Текст)
Строка 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 в архиве
 
 
 
= Смотрите также =
 
= Смотрите также =
 
[[Полезные функции]]
 
[[Полезные функции]]
  
 
[[Функции Delphi]]
 
[[Функции Delphi]]

Версия 11:16, 4 мая 2017

TAKE_FROM_FTP - это программа из справочника R266

Загрузить продажи из FTP

TAKE_FROM_FTP()

Использование

Магазин "Новинка" ( 7 ) - Загрузка продаж - Из FTP

Смотрите также

Полезные функции

Функции Delphi