CREATE PLAN NHC 3

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

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

Вернуть рецептуру распакованным массивом

Текст

parameters kod

local fld, active, _, sql, aa

active := Active_Rec( kod )

fld := ' _1,C,4; _2,N,5; _3,C,30; _4,N,14,4; '

try
  _ := CreateTmpFile( fld, '_', ~IsFreeDel := true )

  sql := [ Select REFL, KOD, TON_AMNT From R71 Where KODPROD = ] + kod + [ and VAR_NUM = ] + active
  SimpleSql( [ Insert into ] + TmpFilePath( _ ) + [( _1, _2, _4 ) ] + sql, ReflisPath )

  // r08
  sql := [ Update _ Set _3 = Left( PNAME, 30 ) From ] + TmpFilePath( _ ) + [ _ left outer join R08 ON _2 = KOD Where _1 = 'R08 ' ]
  SimpleSql( sql, ReflisPath )

  // r11
  sql := [ Update _ ;
    Set _3 = Left( PNAME, 30 ) ;
    From ] + TmpFilePath( _ ) + [ _ ;
      left outer join R11 ON _2 = KOD ;
    Where _1 = 'R11 ' ]
  SimpleSql( sql, ReflisPath )

  ( _ )->( DbGoTop() )
  while !( _ )->( eof() )
    if ( _ )->_1 = 'R11 '
      aa := StrTran( str( Round( ( _ )->_4 * R11Wght( ( _ )->_2 ), 4 ) ) , ',', '.' )
      sql := [ Select REFL, KOD, Round( TON_AMNT * ] + aa + [ / 1000, 4 );
        From R71 ;
        Where KODPROD = ] + ( _ )->_2 + [ and VAR_NUM = ] + Active_Rec( ( _ )->_2 )
      SimpleSql( [ Insert into ] + TmpFilePath( _ ) + [( _1, _2, _4 ) ;
        ] + sql, ReflisPath )
    endif
    ( _ )->( DbSkip() )
  end

  // в результате возвращаю массив
  sql := [ Select _2, Sum( _4 ) _4 ;
    From ] + TmpFilePath( _ ) + [ ;
    Where _1 = 'R08 ' ;
    Group by _2 ]
  aa := SqlToArr( sql, { '_2', '_4' } )

  if !IsEmpty( aa )
    result := aa
  endif

finally
  CloseTable( _ )
end

// _1 - справочник
// _2 - код
// _3 - наименование
// _4 - количество на тонну TON_AMNT

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

CREATE_PLAN_NHC_2

CREATE_PLAN_NHC