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

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

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

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

Функции Delphi