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

Материал из Фабиус wiki
Перейти к: навигация, поиск
м
м
Строка 1: Строка 1:
[[DOC_TO_DOC2]]  
+
[[DOC_TO_DOC2]]- это программа из справочника [[R266]]
 +
  Копирование второго этажа
 +
[[DOC_TO_DOC2]]( kinddoc,  data,  lvlnum )
 +
= Текст =
 +
parameters kinddoc, data, lvlnum
 +
 +
local path, ocd1, del, aa, fld, i, sql, msg, sql2, lvl
 +
 +
if Empty( lvlnum )
 +
  lvl := '1'
 +
else
 +
  lvl := lvlnum
 +
endif
 +
 +
path := '\\FABIUS\FABIUS\OPDATA'
 +
del := [ KINDDOC = '] + kinddoc + [' and LVLNUM = '] + lvl + [' ]
 +
 +
ocd1 := OpenChildDoc( kinddoc, lvl, ~ParentForm := "", ~IsCondition := false, ~Month := Month( data ), ~Year := Year( data )  )
 +
( ocd1 )->( SetFilter( del ) )
 +
( ocd1 )->( Refresh() )
 +
 +
lvl := Str( val( lvl ) + 1 )
 +
 +
fld := {}
 +
 +
aa := ( ocd1 )->( DbStruct() )
 +
if !IsEmpty( aa )
 +
  for i := 6 to len( aa )
 +
    Aadd( fld, aa[i,1] )
 +
  next
 +
endif
 +
 +
sql := [ Select ]
 +
if !Empty( fld )
 +
  for i := 1 to len( fld )
 +
    sql := sql + fld[i] + [, ]
 +
  next
 +
endif
 +
sql := Left( sql, len( sql ) - 2 )
 +
sql := StrTran( sql, [ SUM,], [ "SUM",] )
 +
sql := sql + [ From DOCS] + Ret_f_ext( data ) + [ ;
 +
  Where KINDDOC = '] + kinddoc + [' and LVLNUM = '] + lvl + [' and PARENT = ']
 +
 +
( ocd1 )->( DbGoTop() )
 +
try
 +
  while !( ocd1 )->( eof() )
 +
    WaitMsg( 'Документ номер ' + ( ocd1 )->NUMDOC + ' от ' + ( ocd1 )->DATDOC + Chr( 10 ) + kinddoc + ' ' + RealName( 'R169', kinddoc ), msg )
 +
 +
    sql2 := sql + ( ocd1 )->USR_RGNUM + [' ]
 +
    aa := SqlToArr( sql2, fld, path )
 +
    if !IsEmpty( aa )
 +
      AddAll( kinddoc, lvl, ( ocd1 )->RGNUM,, fld, aa,, ;
 +
        ( ocd1 )->( GetForm( GetArea() ) ),,,,,, false,,, { false, false, false, false, false } )
 +
    endif
 +
    ( ocd1 )->( DbSkip() )
 +
  end
 +
finally
 +
  HideMsg( msg )
 +
end
 +
 +
( ocd1 )->( DbGoTop() )
 +
( ocd1 )->( MakePrvs( GetArea(),, 2 ) )
 
= Смотрите также =
 
= Смотрите также =
 
[[Полезные функции]]
 
[[Полезные функции]]
  
 
[[Функции Delphi]]
 
[[Функции Delphi]]

Версия 14:21, 29 сентября 2017

DOC_TO_DOC2- это программа из справочника R266

 Копирование второго этажа

DOC_TO_DOC2( kinddoc, data, lvlnum )

Текст

parameters kinddoc, data, lvlnum

local path, ocd1, del, aa, fld, i, sql, msg, sql2, lvl

if Empty( lvlnum )
  lvl := '1'
else
  lvl := lvlnum
endif

path := '\\FABIUS\FABIUS\OPDATA'
del := [ KINDDOC = '] + kinddoc + [' and LVLNUM = '] + lvl + [' ]

ocd1 := OpenChildDoc( kinddoc, lvl, ~ParentForm := "", ~IsCondition := false, ~Month := Month( data ), ~Year := Year( data )  )
( ocd1 )->( SetFilter( del ) )
( ocd1 )->( Refresh() )

lvl := Str( val( lvl ) + 1 )

fld := {}

aa := ( ocd1 )->( DbStruct() )
if !IsEmpty( aa )
  for i := 6 to len( aa )
    Aadd( fld, aa[i,1] )
  next
endif

sql := [ Select ]
if !Empty( fld )
  for i := 1 to len( fld )
    sql := sql + fld[i] + [, ]
  next
endif
sql := Left( sql, len( sql ) - 2 )
sql := StrTran( sql, [ SUM,], [ "SUM",] )
sql := sql + [ From DOCS] + Ret_f_ext( data ) + [ ;
  Where KINDDOC = '] + kinddoc + [' and LVLNUM = '] + lvl + [' and PARENT = ']

( ocd1 )->( DbGoTop() )
try
  while !( ocd1 )->( eof() )
    WaitMsg( 'Документ номер ' + ( ocd1 )->NUMDOC + ' от ' + ( ocd1 )->DATDOC + Chr( 10 ) + kinddoc + ' ' + RealName( 'R169', kinddoc ), msg )

    sql2 := sql + ( ocd1 )->USR_RGNUM + [' ]
    aa := SqlToArr( sql2, fld, path )
    if !IsEmpty( aa )
      AddAll( kinddoc, lvl, ( ocd1 )->RGNUM,, fld, aa,, ;
        ( ocd1 )->( GetForm( GetArea() ) ),,,,,, false,,, { false, false, false, false, false } )
    endif
    ( ocd1 )->( DbSkip() )
  end
finally
  HideMsg( msg )
end

( ocd1 )->( DbGoTop() )
( ocd1 )->( MakePrvs( GetArea(),, 2 ) )

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

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

Функции Delphi