SRG 20170425 — различия между версиями

Материал из Фабиус wiki
Перейти к: навигация, поиск
м (Текст)
м (Текст)
 
Строка 4: Строка 4:
  
 
= Текст =
 
= Текст =
  local fld, sql, taskanal, __, file_name, temp_path, myarch, ftp, host, port, user, pass, dest_path, to_atolf
+
  local fld, sql, taskanal, __, file_name, temp_path, myarch, ftp, host, port, user, pass, dest_path, to_atolf, set_to_atolf, i, aa
 
   
 
   
  taskanal := [[GetPrm]]( 'TASKANAL', TaskName, TaskNum )
+
temp_path := Nice_Path( ExpandUNCFileName( TempPath ) )
  if [[Empty]]( taskanal )
+
// удалить все из временной папки
 +
ClearDir( temp_path )
 +
 +
set_to_atolf := true
 +
 +
if UserKod = 107
 +
  set_to_atolf := YesNo( 'Устанавливать файл - флаг ?', false )
 +
endif
 +
 +
  taskanal := GetPrm( 'TASKANAL', TaskName, TaskNum )
 +
  if Empty( taskanal )
 
   return
 
   return
 
  endif
 
  endif
Строка 14: Строка 24:
 
   
 
   
 
  try
 
  try
   __ := [[CreateTmpFile]]( fld, '__', ~IsFreeDel := true )
+
   __ := CreateTmpFile( fld, '__', ~IsFreeDel := true )
 
   sql := [ Select FROM_ATOL, FROM_ATOLF, TO_ATOL, TO_ATOLF, FOLDERATOL, FTP_SERVER, FTP_PORT, FTP_LOGIN, FTP_PASS, FROM_ATOLZ, TO_ATOLZ ;
 
   sql := [ Select FROM_ATOL, FROM_ATOLF, TO_ATOL, TO_ATOLF, FOLDERATOL, FTP_SERVER, FTP_PORT, FTP_LOGIN, FTP_PASS, FROM_ATOLZ, TO_ATOLZ ;
     From [[R603]] Where [[R20]]_KOD = ] + taskanal
+
     From R603 Where R20_KOD = ] + taskanal
 
   SimpleSql( [ Insert into ] + TmpFilePath( __ ) + [( _1, _2, _3, _4, _5, _6, _7, _8, _9, _11, _13 ) ] + sql, ReflisPath )
 
   SimpleSql( [ Insert into ] + TmpFilePath( __ ) + [( _1, _2, _3, _4, _5, _6, _7, _8, _9, _11, _13 ) ] + sql, ReflisPath )
 
   
 
   
 
   Global TO_ATOL, TO_ATOLZ
 
   Global TO_ATOL, TO_ATOLZ
 
   
 
   
   ( __ )->( [[DbGoTop]]() )
+
   i := 0
  while !( __ )->( [[eof]]() )
+
  file_name := ''
    TO_ATOL := [[atr]]( ( __ )->_3 )
+
    TO_ATOLZ := [[atr]]( ( __ )->_13 )
+
    [[ExportFile]]( '961' )
+
 
   
 
   
    // во временной папке лежит файл с именем kpos_1.spr
+
  ( __ )->( DbGoTop() )
     file_name := [[atr]]( ( __ )->_3 )
+
  while !( __ )->( eof() )
     temp_path := [[Nice_Path]]( [[ExpandUNCFileName]]( TempPath ) )
+
     TO_ATOL := atr( ( __ )->_3 )
 +
     TO_ATOLZ := atr( ( __ )->_13 )
 
   
 
   
//    myarch := StrTran( file_name, '.spr', '' )
+
    if !Empty( i )
  //   myarch := StrTran( file_name, '.spr', '.spr.zip' )
+
  //     aa := Directory( temp_path + '*spr*', 'A' )
 
   
 
   
    myarch := [[atr]]( ( __ )->_13 )
+
      CopyFile( temp_path + file_name, temp_path + atr( ( __ )->_3 ) )
 
   
 
   
     [[RunProcess]]( [winrar a -dh -ep ] + temp_path + myarch + [ ] + temp_path + file_name )
+
     endif
 
   
 
   
     to_atolf := [[atr]]( ( __ )->_4 )
+
     if Empty( i )
     dest_path := [[atr]]( ( __ )->_5 )
+
      if UserKod = 107
     host := [[atr]]( ( __ )->_6 )
+
        ExportFile( '47' )
 +
      else
 +
        ExportFile( '961' )
 +
      endif
 +
    endif
 +
 +
    // во временной папке лежит файл с именем kpos_1.spr
 +
    file_name := atr( ( __ )->_3 )
 +
    temp_path := Nice_Path( ExpandUNCFileName( TempPath ) )
 +
    myarch := atr( ( __ )->_13 )
 +
 +
    RunProcess( [winrar a -dh -ep ] + temp_path + myarch + [ ] + temp_path + file_name )
 +
 +
    to_atolf := atr( ( __ )->_4 )
 +
     dest_path := atr( ( __ )->_5 )
 +
     host := atr( ( __ )->_6 )
 
     port := ( __ )->_7
 
     port := ( __ )->_7
     user := [[atr]]( ( __ )->_8 )
+
     user := atr( ( __ )->_8 )
     pass := [[atr]]( ( __ )->_9 )
+
     pass := atr( ( __ )->_9 )
 
   
 
   
//    myarch := atr( myarch ) + '.rar'
+
     myarch := StrTran( myarch, '.zip', '' )
     myarch := [[StrTran]]( myarch, '.zip', '' )
+
     myarch := atr( myarch ) + '.zip'
     myarch := [[atr]]( myarch ) + '.zip'
+
 
   
 
   
 
     try
 
     try
       ftp := [[FTPOPEN]]( host,, user, pass, ~PassiveMode := true )
+
       ftp := FTPOPEN( host,, user, pass, ~PassiveMode := true )
       [[FTPPUT]]( ftp, temp_path + myarch, dest_path, myarch )
+
       FTPPUT( ftp, temp_path + myarch, dest_path, myarch )
 +
 +
      WriteTxtFile( { 'файл-флаг' }, to_atolf, temp_path, true )
 
   
 
   
       [[WriteTxtFile]]( { 'файл-флаг' }, to_atolf, temp_path, true )
+
       if set_to_atolf
//      if ![[YesNo]]( 'Формировать файл-флаг ?', false )
+
        FTPPUT( ftp, temp_path + to_atolf, dest_path, to_atolf )
      [[FTPPUT]]( ftp, temp_path + to_atolf, dest_path, to_atolf )
+
      endif
//      endif
+
 
   
 
   
 
     finally
 
     finally
       [[FTPCLOSE]]( ftp )
+
       FTPCLOSE( ftp )
 
     end
 
     end
 
   
 
   
     ( __ )->( [[DbSkip]]() )
+
    i := i + 1
 +
     ( __ )->( DbSkip() )
 
   end
 
   end
 
   
 
   
 
  finally
 
  finally
   [[CloseTable]]( __ )
+
   CloseTable( __ )
   [[DeleteVars]]( 'TO_ATOL', 'TO_ATOLZ' )
+
   DeleteVars( 'TO_ATOL', 'TO_ATOLZ' )
 
  end
 
  end
 
   
 
   
Строка 84: Строка 108:
 
  // \\fabius\Fabius\Frontol\
 
  // \\fabius\Fabius\Frontol\
 
   
 
   
  [[Message]]( 'Файлы выгружены' )
+
  Message( 'Файлы выгружены' )
 
   
 
   
 
  // 1) имя архива справочников должно быть kpos_1.spr.zip
 
  // 1) имя архива справочников должно быть kpos_1.spr.zip

Текущая версия на 08:42, 11 мая 2017

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

Выгрузить файлы на FTP

Текст

local fld, sql, taskanal, __, file_name, temp_path, myarch, ftp, host, port, user, pass, dest_path, to_atolf, set_to_atolf, i, aa

temp_path := Nice_Path( ExpandUNCFileName( TempPath ) )
// удалить все из временной папки
ClearDir( temp_path )

set_to_atolf := true

if UserKod = 107
  set_to_atolf := YesNo( 'Устанавливать файл - флаг ?', false )
endif

taskanal := GetPrm( 'TASKANAL', TaskName, TaskNum )
if Empty( taskanal )
  return
endif

fld := ' _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; _11,C,25; _13,C,25; '

try
  __ := CreateTmpFile( fld, '__', ~IsFreeDel := true )
  sql := [ Select FROM_ATOL, FROM_ATOLF, TO_ATOL, TO_ATOLF, FOLDERATOL, FTP_SERVER, FTP_PORT, FTP_LOGIN, FTP_PASS, FROM_ATOLZ, TO_ATOLZ ;
    From R603 Where R20_KOD = ] + taskanal
  SimpleSql( [ Insert into ] + TmpFilePath( __ ) + [( _1, _2, _3, _4, _5, _6, _7, _8, _9, _11, _13 ) ] + sql, ReflisPath )

  Global TO_ATOL, TO_ATOLZ

  i := 0
  file_name := 

  ( __ )->( DbGoTop() )
  while !( __ )->( eof() )
    TO_ATOL := atr( ( __ )->_3 )
    TO_ATOLZ := atr( ( __ )->_13 )

    if !Empty( i )
//      aa := Directory( temp_path + '*spr*', 'A' )

      CopyFile( temp_path + file_name, temp_path + atr( ( __ )->_3 ) )

    endif

    if Empty( i )
      if UserKod = 107
        ExportFile( '47' )
      else
        ExportFile( '961' )
      endif
    endif

    // во временной папке лежит файл с именем kpos_1.spr
    file_name := atr( ( __ )->_3 )
    temp_path := Nice_Path( ExpandUNCFileName( TempPath ) )
    myarch := atr( ( __ )->_13 )

    RunProcess( [winrar a -dh -ep ] + temp_path + myarch + [ ] + temp_path + file_name )

    to_atolf := atr( ( __ )->_4 )
    dest_path := atr( ( __ )->_5 )
    host := atr( ( __ )->_6 )
    port := ( __ )->_7
    user := atr( ( __ )->_8 )
    pass := atr( ( __ )->_9 )

    myarch := StrTran( myarch, '.zip',  )
    myarch := atr( myarch ) + '.zip'

    try
      ftp := FTPOPEN( host,, user, pass, ~PassiveMode := true )
      FTPPUT( ftp, temp_path + myarch, dest_path, myarch )

      WriteTxtFile( { 'файл-флаг' }, to_atolf, temp_path, true )

      if set_to_atolf
        FTPPUT( ftp, temp_path + to_atolf, dest_path, to_atolf )
      endif

    finally
      FTPCLOSE( ftp )
    end

    i := i + 1
    ( __ )->( DbSkip() )
  end

finally
  CloseTable( __ )
  DeleteVars( 'TO_ATOL', 'TO_ATOLZ' )
end

// _1 файл импорта rep
// _2 флаг импорта
// _3 файл экспорта srp
// _4 флаг экспорта
// _5 папка обмена
// _6 FTP-сервер
// _7 порт
// _8 логин
// _9 пароль
// _11 Файл импорта rep в архиве
// _13 Файл экспорта spr в архиве

// \\fabius\Fabius\Frontol\

Message( 'Файлы выгружены' )

// 1) имя архива справочников должно быть kpos_1.spr.zip

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

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

Функции Delphi