F11 406 1 27
Материал из Фабиус wiki
F11_406_1_27 - это программа из справочника R266
Средний возраст имеющихся на конец года основных фондов
F11_406_1_27( gr, _year )
gr - код группы _year - год, в формате гг, например, 14
'11' - здания ( при передаче параметра gr = '11' автоматически добавляется анализ группы '13' "Жилища" ) '12' - сооружения '14' - машины и оборудование '15' - транспортные средства
Текст
parameters gr, _year local t, fld, sql, aa result := 0 if Empty( gr ) return endif // t // t_GR - группа // t_KOD - код // t_INDATDOC - дата ввода // t_YEAR - год ввода // t_AGE - возраст // t_1 - 1 fld := ' t_GR,C,2; t_KOD,N,5; t_INDATDOC,D,4; t_YEAR,N,4; t_AGE,N,4; t_1,N,1 ' try t := CreateTmpFile( fld, 't', ~IsFreeDel := true ) // состояние на конец года sql := [ Select DISTINCT KOD ; From MTUN01] + ( _year + 1 ) + [ ; Where ( Left( BKACNT, 2 ) = '01' or Left( BKACNT, 2 ) = '04' ) and ; REFL = 'R143' and KOD > 0 and BDSUM > 0 ] SimpleSql( [ Insert into ] + TmpFilePath( t ) + [( t_KOD ) ] + sql, OpdataPath ) // r143 sql := [ Update t ; Set t_GR = Left( CODEGROUP, 2 ), t_INDATDOC = INDATDOC, ; t_YEAR = Year( INDATDOC ) ; From ] + TmpFilePath( t ) + [ t ; left outer join R143 ON t_KOD = KOD ] SimpleSql( sql, ReflisPath ) sql := [ Delete ; From ] + TmpFilePath( t ) + [ ; Where t_YEAR is null ] SimpleSql( sql, TempPath ) if !Empty( gr ) if gr = '11' sql := [ Delete ; From ] + TmpFilePath( t ) + [ ; Where t_GR <> '11' and t_GR <> '13' ] else sql := [ Delete ; From ] + TmpFilePath( t ) + [ ; Where t_GR <> '] + gr + ['] endif SimpleSql( sql, TempPath ) endif sql := [ Update t ; Set t_AGE = 2000 + ] + _year +[ + 1 - t_YEAR, t_1 = 1 ; From ] + TmpFilePath( t ) + [ t ] SimpleSql( sql, TempPath ) sql := [ Select Sum( t_AGE ) t_AGE, Sum( t_1 ) t_1 ; From ] + TmpFilePath( t ) aa := SelectSqlToArr( sql, { 't_AGE', 't_1' }, TempPath, false ) if !IsEmpty( aa ) result := Div_z( aa[1,1], aa[1,2], 0 ) endif finally CloseTable( t ) end