-- 3.5.71 Power
-- Добавляет 2 функции для работы с трансформаторами тока
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[GetTransCoeff]') and xtype in (N'FN', N'IF', N'TF'))
drop function [dbo].GetTransCoeff
GO
create function GetTransCoeff(@MeterID integer)
returns float
as
begin
 if (@MeterID <= 0) return -1
  
  declare @res float
  declare @par1 float
  declare @par2 float  
  declare @ParentID integer
  declare @ParentTypeID integer

  select @ParentID = IsNull(О1.Код_объекта_владельца, 0), @ParentTypeID = IsNull(О2.Код_типа_объекта, 0) 
  from Объект О1
  left join Объект О2 on О1.Код_объекта_владельца = О2.Код_объекта
  where О1.Код_объекта = @MeterID
  
  if (@ParentID=0) or (@ParentTypeID <> 102)
    select @res = IsNull(Коэффициент_поправки, 1)from Измерительный_прибор 
    WHERE Код_прибора = @MeterID
  else
	set @res = 1
  
  while (@ParentID <> 0) and (@ParentTypeID = 102)
  begin
    select @par1 = IsNull(Inom_первич, 0), @par2 = IsNull(Inom_вторич, 0) from Трансформатор_тока
    where Код_трансформатора_тока = @ParentID
    
    if (@par1>0) and (@par2>0)
	  set @res = @res*@par1/@par2
    
    select @ParentID = IsNull(О1.Код_объекта_владельца, 0), @ParentTypeID = IsNull(О2.Код_типа_объекта, 0) 
    from Объект О1
    left join Объект О2 on О1.Код_объекта_владельца = О2.Код_объекта
    where О1.Код_объекта = @ParentID  
  end
  
  return @res
end
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[IsUnderTrans]') and xtype in (N'FN', N'IF', N'TF'))
drop function [dbo].[IsUnderTrans]
GO
create function IsUnderTrans(@MeterID integer)
returns bit
as
begin
  if (@MeterID <= 0) return 0
  declare @ParentTypeID integer
  
  select @ParentTypeID = IsNull(О2.Код_типа_объекта, 0) 
  from Объект О1
  left join Объект О2 on О1.Код_объекта_владельца = О2.Код_объекта
  where О1.Код_объекта = @MeterID
  
  if (@ParentTypeID = 102) return 1
  return 0
end

