ACS TO ACS3 — различия между версиями

Материал из Фабиус wiki
Перейти к: навигация, поиск
м
м (Содержимое страницы заменено на «ACS_TO_ACS3 - это частная программа для USR см. ALL_TO_ALL, документ UTH ACS_TO_ACS…»)
 
Строка 2: Строка 2:
 
  см. ALL_TO_ALL, документ [[UTH]]
 
  см. ALL_TO_ALL, документ [[UTH]]
 
[[ACS_TO_ACS3]]( data )
 
[[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]]

Текущая версия на 14:32, 27 марта 2019

ACS_TO_ACS3 - это частная программа для USR

см. ALL_TO_ALL, документ UTH

ACS_TO_ACS3( data )

Смотрите также

Полезные функции

Функции Delphi