F11 406 1 27
Материал из Фабиус wiki
Версия от 13:06, 23 марта 2018; Hisava (обсуждение | вклад)
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