GET FRONTOL REPORT — различия между версиями
Материал из Фабиус wiki
Hisava (обсуждение | вклад) м |
Hisava (обсуждение | вклад) м (→Текст) |
||
| Строка 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 )' )