F11 406 1 27 — различия между версиями
Материал из Фабиус wiki
Hisava (обсуждение | вклад) м |
Hisava (обсуждение | вклад) м |
||
| Строка 1: | Строка 1: | ||
[[F11_406_1_27]] - это программа из справочника [[R266]] | [[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 [[MTUN]]01] + ( _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 | ||
= Смотрите также = | = Смотрите также = | ||
[[Полезные функции]] | [[Полезные функции]] | ||
[[Функции Delphi]] | [[Функции Delphi]] | ||
Текущая версия на 13:06, 23 марта 2018
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