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