CREATE PLAN NHC 2

Материал из Фабиус wiki
Версия от 10:33, 21 апреля 2016; Hisava (обсуждение | вклад) (Полный текст функции)

Перейти к: навигация, поиск

CREATE_PLAN_NHC_2 - это функция из справочника R266

Полный текст функции

parameters kod

local fld, sql, t, aa, r, msg, i

fld := ' t_KOD,N,5; t_NAME,C,60; t_1,N,14,4; t_2,N,14,8; '

try
  msg := WaitMsg( RealName( 'R11', kod, true ) )

  sql := [ Delete From R71 Where KODPROD = ] + kod + [ and VAR_NUM = 10 ]
  SimpleSql( sql, ReflisPath )

  t := CreateTmpFile( fld, 't', ~IsFreeDel := true )

  r := Div_z( 1000, R11Wght( kod ), 4 )

  aa := CREATE_PLAN_NHC_3( kod )
  if !IsEmpty( aa )
    for i := 1 to len( aa )
      ( t )->( DbAppend() )
      ( t )->t_KOD := aa[i,1]
      ( t )->t_1   := aa[i,2]
      ( t )->t_2   := Div_z( aa[i,2], r, 8 )
    next
  endif

  // плановая рецептура - рецептура номер 10

  // --- R264 ---
  sql := [ Select KOD ;
    From R264 ;
    Where KOD = ] + str( kod ) + '00010'
  aa := SqlToArr( sql, {'KOD'}, ReflisPath )

  if IsEmpty( aa )
    sql := [ Insert into R264( KOD, KODPROD, VAR_NUM, PNAME ) ;
      Values ( ] + str( kod ) + '00010' + [, ] + kod + [, 10, 'рецептура 10' ) ]
    SimpleSql( sql, ReflisPath )
  endif
  // *** R264 ***

  fld := 'r_KODPROD,N,5; r_R264KOD,N,10; r_VAR_NUM,N,5; r_REFL,C,4;;
    r_KOD,N,5; r_TON_AMNT,N,11,4; r_UNIT_AMNT,N,14,8; '
  r := CreateTmpFile( fld, 'r', ~IsFreeDel := true )

  ( t )->( DbGoTop() )
  while !( t )->( eof() )
    ( r )->( DbAppend() )
    ( r )->r_KODPROD   := kod
    ( r )->r_R264KOD   := val( str( kod ) + '00010' )
    ( r )->r_VAR_NUM   := 10
    ( r )->r_REFL      := 'R08 '
    ( r )->r_KOD       := ( t )->t_KOD
    ( r )->r_TON_AMNT  := ( t )->t_1
    ( r )->r_UNIT_AMNT := ( t )->t_2
    ( t )->( DbSkip() )
  end

  sql := [ Select r_KODPROD, r_R264KOD, r_VAR_NUM, r_REFL, r_KOD, r_TON_AMNT, ;
    r_UNIT_AMNT ;
    From ] + TmpFilePath( r )
  SimpleSql( [ Insert into R71( KODPROD, R264KOD, VAR_NUM, REFL, KOD, ;
    TON_AMNT, UNIT_AMNT ) ] + sql, ReflisPath )

finally
  CloseTable( r )
  CloseTable( t )
  HideMsg( msg )
end

// t
// t_KOD  - код сырья или материала
// t_NAME - наименование
// t_1    - количество на тонну
// t_2    - количество на единицу

// r
// r_KODPROD   -
// t_R264KOD   -
// r_VAR_NUM   -
// r_REFL      -
// r_KOD       -
// r_TON_AMNT  -
// r_UNIT_AMNT -