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

Материал из Фабиус wiki
Перейти к: навигация, поиск
м
м
Строка 1: Строка 1:
 
[[ACS_TO_ACS3]] - это частная программа для [[USR]]  
 
[[ACS_TO_ACS3]] - это частная программа для [[USR]]  
  см. [[ALL_TO_ALL]], документ UTH
+
  см. 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

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

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

Функции Delphi