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