GET FRONTOL REPORT — различия между версиями

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

Версия 09:21, 2 мая 2017

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