F11 406 1 27 — различия между версиями

Материал из Фабиус wiki
Перейти к: навигация, поиск
м
м
 
(не показана одна промежуточная версия этого же участника)
Строка 1: Строка 1:
[[F11_406_1_27]]
+
[[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

Смотрите также

Полезные функции

Функции Delphi