ACS TO ACS3 — различия между версиями
Материал из Фабиус wiki
Hisava (обсуждение | вклад) м |
Hisava (обсуждение | вклад) м |
||
Строка 1: | Строка 1: | ||
[[ACS_TO_ACS3]] - это частная программа для [[USR]] | [[ACS_TO_ACS3]] - это частная программа для [[USR]] | ||
− | см. [[ | + | см. ALL_TO_ALL, документ [[UTH]] |
+ | [[ACS_TO_ACS3]]( data ) | ||
+ | = Текст = | ||
+ | parameters data | ||
+ | |||
+ | global _acs_to_acs_ | ||
+ | |||
+ | _acs_to_acs_ := false | ||
+ | |||
+ | local uth1, del, rg, path, sql, aa, msg | ||
+ | |||
+ | if [[EMPTY]]( data ) | ||
+ | data := Date() | ||
+ | endif | ||
+ | |||
+ | path := '\\FABIUS\FABIUS\OPDATA' | ||
+ | del := [ KINDDOC = 'UTH' and LVLNUM = '1' ] | ||
+ | |||
+ | uth1 := OpenChildDoc( 'UTH', '1', ~ParentForm := "", ~IsCondition := false, ~Month := Month( data ), ~Year := Year( data ) ) | ||
+ | ( uth1 )->( SetFilter( del ) ) | ||
+ | ( uth1 )->( Refresh() ) | ||
+ | |||
+ | ( uth1 )->( DbGoTop() ) | ||
+ | |||
+ | try | ||
+ | while !( uth1 )->( eof() ) | ||
+ | WaitMsg( 'Дополнительная обработка документа номер ' + ( uth1 )->NUMDOC + ' от ' + ( uth1 )->DATDOC + Chr( 10 ) + 'UTH ' + RealName( 'R169', 'UTH' ), msg ) | ||
+ | rg := ( uth1 )->USR_RGNUM | ||
+ | if !Empty( rg ) | ||
+ | // теперь делаем запрос по черной базе и достаем PARENT | ||
+ | sql := [ Select PARENT ; | ||
+ | From DOCS] + Ret_f_ext( data ) + [ ; | ||
+ | Where ] + del + [ and RGNUM = '] + rg + [' ] | ||
+ | aa := SqlToArr( sql, { 'PARENT' }, path ) | ||
+ | if !IsEmpty( aa ) | ||
+ | // aa[1,1] - это RGNUM счет-фактуры в управленческом учете | ||
+ | // ищем эту счет-фактуру в налоговом учете | ||
+ | sql := [ Select RGNUM ; | ||
+ | From DOCS] + Ret_f_ext( data ) + [ ; | ||
+ | Where KINDDOC = 'ACS' and LVLNUM = '1' and Trim( ] + SqlField( 'USR_RGNUM',, 'sql_char' ) + [ ) = '] + aa[1,1] + [' ] | ||
+ | aa := SqlToArr( sql, { 'RGNUM' } ) | ||
+ | if !IsEmpty( aa ) | ||
+ | try | ||
+ | _acs_to_acs_ := true | ||
+ | // теперь aa[1,1] - это RGNUM счет-фактуры в налоговом учете | ||
+ | ( uth1 )->PARENT := Padl( aa[1,1], 8 ) | ||
+ | finally | ||
+ | _acs_to_acs_ := false | ||
+ | end | ||
+ | endif | ||
+ | endif | ||
+ | endif | ||
+ | ( uth1 )->( DbSkip() ) | ||
+ | end | ||
+ | finally | ||
+ | HideMsg( msg ) | ||
+ | end | ||
+ | |||
+ | sql := [ Update uth2 ; | ||
+ | Set uth2.EXTPARENT = uth1.PARENT ; | ||
+ | From DOCS] + Ret_f_ext( data ) + [ uth1 ; | ||
+ | left outer join DOCS] + Ret_f_ext( data ) + [ uth2 ON uth1.RGNUM = uth2.PARENT ; | ||
+ | Where uth1.KINDDOC = 'UTH' and uth1.LVLNUM = '1' and uth2.KINDDOC = 'UTH' and uth2.LVLNUM = '2' ] | ||
+ | SimpleSql( sql, OpdataPath ) | ||
+ | |||
+ | // в документе UTH1 сохраняется RGNUM из базы управленческого учета в поле USR_RGNUM | ||
+ | // 1. Ищем документ uth1 в "черной" базе с помощью реквизита USR_RGNUM | ||
+ | |||
+ | // в документе UTH1 в поле PARENT прописывется RGNUM счета-фактуры | ||
+ | // этот же самый RGNUM прописывается в номенклатуре в поле EXTPARENT | ||
+ | // номенклатура - это UTH2 | ||
= Смотрите также = | = Смотрите также = | ||
[[Полезные функции]] | [[Полезные функции]] | ||
[[Функции Delphi]] | [[Функции Delphi]] |
Версия 08:29, 15 января 2018
ACS_TO_ACS3 - это частная программа для USR
см. ALL_TO_ALL, документ UTH
ACS_TO_ACS3( data )
Текст
parameters data global _acs_to_acs_ _acs_to_acs_ := false local uth1, del, rg, path, sql, aa, msg if EMPTY( data ) data := Date() endif path := '\\FABIUS\FABIUS\OPDATA' del := [ KINDDOC = 'UTH' and LVLNUM = '1' ] uth1 := OpenChildDoc( 'UTH', '1', ~ParentForm := "", ~IsCondition := false, ~Month := Month( data ), ~Year := Year( data ) ) ( uth1 )->( SetFilter( del ) ) ( uth1 )->( Refresh() ) ( uth1 )->( DbGoTop() ) try while !( uth1 )->( eof() ) WaitMsg( 'Дополнительная обработка документа номер ' + ( uth1 )->NUMDOC + ' от ' + ( uth1 )->DATDOC + Chr( 10 ) + 'UTH ' + RealName( 'R169', 'UTH' ), msg ) rg := ( uth1 )->USR_RGNUM if !Empty( rg ) // теперь делаем запрос по черной базе и достаем PARENT sql := [ Select PARENT ; From DOCS] + Ret_f_ext( data ) + [ ; Where ] + del + [ and RGNUM = '] + rg + [' ] aa := SqlToArr( sql, { 'PARENT' }, path ) if !IsEmpty( aa ) // aa[1,1] - это RGNUM счет-фактуры в управленческом учете // ищем эту счет-фактуру в налоговом учете sql := [ Select RGNUM ; From DOCS] + Ret_f_ext( data ) + [ ; Where KINDDOC = 'ACS' and LVLNUM = '1' and Trim( ] + SqlField( 'USR_RGNUM',, 'sql_char' ) + [ ) = '] + aa[1,1] + [' ] aa := SqlToArr( sql, { 'RGNUM' } ) if !IsEmpty( aa ) try _acs_to_acs_ := true // теперь aa[1,1] - это RGNUM счет-фактуры в налоговом учете ( uth1 )->PARENT := Padl( aa[1,1], 8 ) finally _acs_to_acs_ := false end endif endif endif ( uth1 )->( DbSkip() ) end finally HideMsg( msg ) end sql := [ Update uth2 ; Set uth2.EXTPARENT = uth1.PARENT ; From DOCS] + Ret_f_ext( data ) + [ uth1 ; left outer join DOCS] + Ret_f_ext( data ) + [ uth2 ON uth1.RGNUM = uth2.PARENT ; Where uth1.KINDDOC = 'UTH' and uth1.LVLNUM = '1' and uth2.KINDDOC = 'UTH' and uth2.LVLNUM = '2' ] SimpleSql( sql, OpdataPath ) // в документе UTH1 сохраняется RGNUM из базы управленческого учета в поле USR_RGNUM // 1. Ищем документ uth1 в "черной" базе с помощью реквизита USR_RGNUM // в документе UTH1 в поле PARENT прописывется RGNUM счета-фактуры // этот же самый RGNUM прописывается в номенклатуре в поле EXTPARENT // номенклатура - это UTH2