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

Материал из Фабиус wiki
Перейти к: навигация, поиск
м (Использование)
м
 
(не показаны 4 промежуточные версии этого же участника)
Строка 2: Строка 2:
 
  Загрузить продажи из FTP
 
  Загрузить продажи из FTP
 
[[TAKE_FROM_FTP]]()
 
[[TAKE_FROM_FTP]]()
 
+
[[Магазин]] "Новинка" ( 7 ) - Загрузка продаж - Из FTP
= Использование =
+
= + =
[[Магазин]] "Новинка" ( 7 ) - Загрузка продаж - Из FTP
+
[[TAKE_FROM_FTP1]]
= Текст =
+
local ip, aa, datas, temp_path, from_atolf, __, taskanal, fld, sql, ftp, host, port, user, pass, dest_path, i, msg, from_atolz, folder, file_name
+
+
// запрашиваем диапазон для загрузки
+
ip := [[InputPeriod]]( true )
+
if Empty( ip )
+
  return
+
endif
+
+
try
+
  WaitMsg( 'Подготовка', msg )
+
+
  // проверяем аналитику ( код магазина )
+
  taskanal := GetPrm( 'TASKANAL', TaskName, TaskNum )
+
  if Empty( taskanal )
+
    return
+
  endif
+
+
  // атас
+
  datas := StoD( ip[1] ) + '; ' + StoD( ip[2] )
+
  TAKE_FROM_FTP_( datas, taskanal )
+
+
  temp_path := Nice_Path( ExpandUNCFileName( TempPath ) )
+
+
  // удалить все из временной папки
+
  ClearDir( temp_path )
+
+
  fld := ' _0,C,50; _1,C,100; _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; '
+
  __ := 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' }
+
    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
+
+
      FTPDELETE( ftp, '/' + dest_path + '/', from_atolz )
+
+
    finally
+
      FTPCLOSE( ftp )
+
    end
+
+
    ( __ )->( DbSkip() )
+
  end
+
+
  // создаем папки в соответствии с кодами из справочника R603
+
  aa := Directory( temp_path + '*zip*' )
+
  aa := PrepareArr( aa )
+
  for i := 1 to len( aa )
+
    folder := CUTFROM( aa[i], 'zip' )
+
    file_name := Left( aa[i], len( aa[i] ) - len( folder ) )
+
    folder := Nice_Path( folder )
+
    ClearDir( temp_path + folder, true )
+
    CreateDir( temp_path + folder, true )
+
    CopyFile( temp_path + aa[i], temp_path + folder + file_name )
+
    RunProcess( [winrar e -y "] + temp_path + folder + file_name + [" "] + temp_path + folder + ["] )
+
  next
+
+
finally
+
  CloseTable( __ )
+
  HideMsg( msg )
+
end
+
+
// Удалить FTL и FRO
+
TAKE_FROM_FTP1()
+
// Добавить FTL
+
TAKE_FROM_FTP2()
+
// Добавить FRO
+
TAKE_FROM_FTP3()
+
// Конец
+
TAKE_FROM_FTP4()
+
+
Message( 'Загрузка завершена' )
+
// _0 Наименование
+
// _1 файл импорта rep
+
// _2 флаг импорта
+
// _3 файл экспорта srp
+
// _4 флаг экспорта
+
// _5 папка обмена
+
// _6 FTP-сервер
+
// _7 порт
+
// _8 логин
+
// _9 пароль
+
// _10 код
+
// _11 Файл импорта rep в архиве
+
// _13 Файл экспорта spr в архиве
+
  
 
= Смотрите также =
 
= Смотрите также =
[[TAKE_FROM_FTP1]]
 
 
 
[[Полезные функции]]
 
[[Полезные функции]]
  
 
[[Функции Delphi]]
 
[[Функции Delphi]]

Текущая версия на 15:50, 27 июня 2019

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

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

TAKE_FROM_FTP()

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

+

TAKE_FROM_FTP1

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

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

Функции Delphi