GET FRONTOL REPORT

Материал из Фабиус wiki
Перейти к: навигация, поиск

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

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

Текст

local file_name, folderatol, path, file_frontol, sql, i, del, data

local r179_kod, r20_kod, fld, msg, _, aa, dd, ftl1, ff

r179_kod := GetPrm( 'TASKANAL', 'CASH_SHOP', TaskNum )
r20_kod := SeekRef( 'R179', r179_kod, 'CASH_KOD2', 1 )

folderatol := GetPrm( 'CASHBOX', 'CASH_SHOP', TaskNum )
path := Nice_Path( folderatol )
file_name := GetParam( 'FROM_ATOL', 'SHOP',, r20_kod )
file_name := path + file_name

if !YesNo( 'Загрузить операции из файла ' + file_name + ' ?', false )
  return
endif

fld := ' _0,C,200; _1,D,4; _2,C,20; '

try
  msg := WaitMsg( 'Обработка данных' )
  _ := CreateTmpFile( fld, '_', ~IsFreeDel := true )

  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 := Left( folderatol, 20 )
    endif
  end

  sql := [ Select DISTINCT _1 From ] + TmpFilePath( _ )
  aa := SqlToArr( sql, { '_1' } )

  if IsEmpty( aa )
    return
  endif

  aa := PrepareArr( aa )

  for i := 1 to len( aa )

    data := aa[i]

    try
      WaitMsg( 'Удаление ранее загруженных данных за ' + aa[i], msg )
      sql := [ Delete From DOCP] + Ret_f_ext( data ) + [ Where KINDDOC = 'FTL' and DATDOC = '] + SQlDate( data ) + [' and K3NAME = '] + Left( folderatol, 20 ) + [' ]
      SimpleSql( sql, OpdataPath )
    finally
      HideMsg( msg )
    end

    // добавление первого этажа
    fld := { 'DATDOC', 'K3NAME', 'DREFL1', 'DANAL1' }
    del := [ KINDDOC = 'FTL' and LVLNUM = '1' and DtoS( DATDOC ) = '] + DtoS( data )+ [' and K3NAME = '] + Left( folderatol, 20 ) + [' ]
    dd := { { data, Left( folderatol, 20 ), 'R20 ', r20_kod } }

    AddAll( 'FTL', '1', " ",, fld, dd,,,, Year( data ), Month( data ),,, true,, del )
    ftl1 := OpenChildDoc( 'FTL', '1', ~ParentForm := "", ~IsCondition := false, ~Month := Month( data ), ~Year := Year( data )  )
    ( ftl1 )->( SetFilter( del ) )
    ( ftl1 )->( Refresh() )

    fld := { 'FRONTOL', 'K3NAME' }
    sql := [ Select _0 FRONTOL, _2 K3NAME From ] + TmpFilePath( _ ) + [ Where _1 = '] + SqlDate( aa[i] ) + [' ]
    ff := SqlToArr( sql, fld )

    if !IsEmpty( ff )
      AddAll( 'FTL', '2', ( ftl1 )->RGNUM,, fld, ff,, ( ftl1 )->( GetForm( GetArea() ) ) )
    endif
  next

finally
  if !Empty( file_frontol )
    CloseFile( file_frontol )
  endif
  CloseTable( _ )
  HideMsg( msg )
end

// _0 - текст из файла ( одна строка )
// _1 - дата
// _2 - путь к файлу

// и в загруженном отчете по продажам менять # на @

try
  msg := WaitMsg( 'Проверка данных' )
  aa := {}
  try
    file_frontol := AssignFile( file_name )
    if Empty( file_frontol )
      return
    endif
    TextReset( file_frontol )
    while !TextEof( file_frontol )
      Aadd( aa, ReadLn( file_frontol ) )
    end
  finally
    if !Empty( file_frontol )
      CloseFile( file_frontol )
    endif
  end

  if !IsEmpty( aa )
    aa[1] := "@"
  endif

  // WriteTxtFile( aa, file_name, path, true )
  file_name := GetParam( 'FROM_ATOL', 'SHOP',, r20_kod )
  WriteTxtFile( aa, file_name, path, true )
finally
  HideMsg( msg )
end

Message( 'Продажи успешно загружены' + Chr( 13 )+ Chr( 10 ) + '( Документы за месяц - Операции Frontol )' )

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

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

Функции Delphi