NAH 170512

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

NAH_170512 - это свод из справочника R238

Условие отбора WHERE

local fld, _, _2, sql, ip, my, end_data, msg
ip := INPUTPERIOD( true )
try
  WaitMsg( 'Подготовка данных', msg )
  fld := ' _1,N,5; _2,N,14,4; _3,N,14,4; _4,N,14,4; _5,N,14,4; '
  _ := CreateTmpFile( fld, '_', ~IsFreeDel := true, ~Own := Self )
  _2 := CreateTmpFile( fld, '_2', ~IsFreeDel := true, ~Own := Self )
  if Empty( ip )
    return
  endif
  M->QwrTitle := ' ( ' + StoD( ip[1] ) + ' - ' + StoD( ip[2] ) + ' )'
  my := StoD( ip[1] )
  end_data := StoD( ip[2] ) + 1
  while my <> end_data
    WaitMsg( 'Подготовка данных за ' + Date_Str( my ) + ' года', msg )
    // 28 43
    sql := [ Select DANAL2, AMNT From PRVS] + Ret_f_ext( my ) + [ Where DEBT = '28          ' and ;
      KRED = '43          ' and DATDOC = '] + SqlDate( my ) + [' ]
    SimpleSql( [ Insert into ] + TmpFilePath( _2 ) + [( _1, _4 ) ] + sql, OpdataPath )
    // до переделов
    sql := [ Update _2 Set _1 = UNTILPACK From ] + TmpFilePath( _2 ) + [ _2 left outer join R11 ON _1 = KOD ;
      Where UNTILPACK > 0 ]
    SimpleSql( sql, ReflisPath )
    // PAC4 ( только изделия с расходом муки )
    sql := [ Select DANAL2, AMNT From DOCP] + Ret_f_ext( my ) + [ Where KINDDOC = 'PAC' and LVLNUM = '4' and DREFL1 = 'R10 ' and DANAL1 > 0 and ;
        ] + SqlField( 'PAIN_AMNT' ) + [ <> 0 and DATDOC = '] + SqlDate( my ) + [' ]
    SimpleSql( [ Insert into ] + TmpFilePath( _2 ) + [( _1, _2 ) ] + sql, OpdataPath )
    my := my + 1
  end
  // _2 -> _
  sql := [ Select _1, Sum( _2 ), Sum( _4 ) From ] + TmpFilePath( _2 ) + [ Group by _1 ]
  SimpleSql( [ Insert into ] + TmpFilePath( _ ) + [( _1, _2, _4 ) ] + sql, OpdataPath )
  // r11
  sql := [ Update _ Set _3 = Round( _2 * WEIGHT, 1 ), _5 = Round( _4 * WEIGHT, 1 ) From ] + TmpFilePath( _ ) + [ _ left outer join R11 ON _1 = KOD ]
  SimpleSql( sql, ReflisPath )
  ( _ )->( DbGoTop() )
  result := _
  // _1 код
  // _2 выработка, штук
  // _3 выработка, кг
  // _4 брак, штук
  // _5 брак, кг
finally
  HideMsg( msg )
end