ACS TO ACS3

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

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