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