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

Материал из Фабиус wiki
Перейти к: навигация, поиск
(Новая страница: «TAKE_FROM_FTP1 - это программа из справочника R266 Удалить FTL и FRO TAKE_FROM_FTP1() = Использование…»)
 
м
Строка 2: Строка 2:
 
  Удалить FTL и FRO
 
  Удалить FTL и FRO
 
[[TAKE_FROM_FTP1]]()
 
[[TAKE_FROM_FTP1]]()
 
 
= Использование =
 
= Использование =
 
[[TAKE_FROM_FTP]]
 
[[TAKE_FROM_FTP]]
 +
= Текст =
 +
local temp_path, aaa, ii, r20_kod, folder, file_name, path, fld
 +
temp_path := [[Nice_Path]]( [[ExpandUNCFileName]]( TempPath ) )
 +
aaa := [[Directory]]( temp_path + '*', "D" )
 +
for ii := 1 to [[len]]( aaa )
 +
  if [[val]]( aaa[ii,1] ) > 0
 +
    r20_kod := [[val]]( aaa[ii,1] )
 +
    r20_kod := [[SeekRef]]( '[[R603]]', r20_kod, '[[R20]]_KOD', 1 )
 +
    if ![[IsEmpty]]( r20_kod )
 +
      folder := temp_path + aaa[ii,1]
 +
      file_name := [[Directory]]( folder + '\*rep*', "A" )
 +
      if [[Empty]]( file_name )
 +
        loop
 +
      endif
 +
      if ![[IsEmpty]]( file_name )
 +
        file_name := file_name[1,1]
 +
      endif
 +
      path := [[Nice_Path]]( folder )
 +
      file_name := path + file_name
 +
      fld := ' _0,C,200; _1,D,4; _2,C,20; '
 +
      file_frontol := [[AssignFile]]( file_name )
 +
      if [[Empty]]( file_frontol )
 +
        return
 +
      endif
 +
      [[TextReset]]( file_frontol )
 +
      aa := [[ReadLn]]( file_frontol )
 +
        // заполнение временной таблицы
 +
        while ![[TextEof]]( file_frontol )
 +
          aa := [[ReadLn]]( file_frontol )
 +
          [[WaitMsg]]( [[Left]]( aa, 16 ), msg )
 +
          if [[len]]( aa ) > 10
 +
            ( _ )->( [[DbAppend]]() )
 +
            ( _ )->_0 := aa
 +
            ( _ )->_1 := [[CtoD]]( [[Token]]( aa, 2 ) )
 +
            ( _ )->_2 := [[Right]]( file_name, 20 )
 +
          endif
 +
        end
 +
        sql := [ Select DISTINCT _1 From ] + [[TmpFilePath]]( _ )
 +
        aa := [[SqlToArr]]( sql, { '_1' } )
 +
        aa := [[PrepareArr]]( aa )
 +
        for i := 1 to [[len]]( aa )
 +
          data := aa[i]
 +
          try
 +
            [[WaitMsg]]( 'Удаление ранее загруженных данных за ' + aa[i], msg )
 +
            // FTL
 +
            sql := [ Delete From DOCP] + Ret_f_ext( data ) + [ Where KINDDOC = 'FTL' and DATDOC = '] + SQlDate( data ) + [' and ;
 +
              DREFL1 = 'R20 ' and DANAL1 = ] + r20_kod + [ and 'SYSTEM.' = 'SYSTEM.' ]
 +
            // FRO
 +
            sql := [ Delete From DOCP] + Ret_f_ext( data ) + [ Where KINDDOC = 'FRO' and DATDOC = '] + SQlDate( data ) + [' and ;
 +
              KREFL1 = 'R20 ' and KANAL1 = ] + r20_kod + [ and 'SYSTEM.' = 'SYSTEM.' ]
 +
            [[SimpleSql]]( sql, OpdataPath )
 +
          finally
 +
            HideMsg( msg )
 +
          end
 +
        next
 +
      finally
 +
        if !Empty( file_frontol )
 +
          CloseFile( file_frontol )
 +
        endif
 +
        CloseTable( _ )
 +
        HideMsg( msg )
 +
      end
 +
    endif
 +
  endif
 +
next
 +
// _0 - текст из файла ( одна строка )
 +
// _1 - дата
 +
// _2 - путь к файлу
 
= Смотрите также =
 
= Смотрите также =
 
[[Полезные функции]]
 
[[Полезные функции]]
  
 
[[Функции Delphi]]
 
[[Функции Delphi]]

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

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

Удалить FTL и FRO

TAKE_FROM_FTP1()

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

TAKE_FROM_FTP

Текст

local temp_path, aaa, ii, r20_kod, folder, file_name, path, fld
temp_path := Nice_Path( ExpandUNCFileName( TempPath ) )
aaa := Directory( temp_path + '*', "D" )
for ii := 1 to len( aaa )
  if val( aaa[ii,1] ) > 0
    r20_kod := val( aaa[ii,1] )
    r20_kod := SeekRef( 'R603', r20_kod, 'R20_KOD', 1 )
    if !IsEmpty( r20_kod )
      folder := temp_path + aaa[ii,1]
      file_name := Directory( folder + '\*rep*', "A" )
      if Empty( file_name )
        loop
      endif
      if !IsEmpty( file_name )
        file_name := file_name[1,1]
      endif
      path := Nice_Path( folder )
      file_name := path + file_name
      fld := ' _0,C,200; _1,D,4; _2,C,20; '
      file_frontol := AssignFile( file_name )
      if Empty( file_frontol )
        return
      endif
      TextReset( file_frontol )
      aa := ReadLn( file_frontol )
        // заполнение временной таблицы
        while !TextEof( file_frontol )
          aa := ReadLn( file_frontol )
          WaitMsg( Left( aa, 16 ), msg )
          if len( aa ) > 10
            ( _ )->( DbAppend() )
            ( _ )->_0 := aa
            ( _ )->_1 := CtoD( Token( aa, 2 ) )
            ( _ )->_2 := Right( file_name, 20 )
          endif
        end
        sql := [ Select DISTINCT _1 From ] + TmpFilePath( _ )
        aa := SqlToArr( sql, { '_1' } )
        aa := PrepareArr( aa )
        for i := 1 to len( aa )
          data := aa[i]
          try
            WaitMsg( 'Удаление ранее загруженных данных за ' + aa[i], msg )
            // FTL
            sql := [ Delete From DOCP] + Ret_f_ext( data ) + [ Where KINDDOC = 'FTL' and DATDOC = '] + SQlDate( data ) + [' and ;
              DREFL1 = 'R20 ' and DANAL1 = ] + r20_kod + [ and 'SYSTEM.' = 'SYSTEM.' ]
            // FRO
            sql := [ Delete From DOCP] + Ret_f_ext( data ) + [ Where KINDDOC = 'FRO' and DATDOC = '] + SQlDate( data ) + [' and ;
              KREFL1 = 'R20 ' and KANAL1 = ] + r20_kod + [ and 'SYSTEM.' = 'SYSTEM.' ]
            SimpleSql( sql, OpdataPath )
          finally
            HideMsg( msg )
          end
        next
      finally
        if !Empty( file_frontol )
          CloseFile( file_frontol )
        endif
        CloseTable( _ )
        HideMsg( msg )
      end
    endif
  endif
next
// _0 - текст из файла ( одна строка )
// _1 - дата
// _2 - путь к файлу

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

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

Функции Delphi