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 )' )