---- DefenceUnomID ----
  -- Получаем Код_класса_напряжения для УРЗА (свой, если есть, если нет - то наследуемый от родительского УРЗА, если таковое имеется)
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[DefenceUnomID]') and xtype in (N'FN', N'IF', N'TF'))
drop function [dbo].[DefenceUnomID]
GO
create function DefenceUnomID(@DefenceID integer)
returns integer
as
begin 
  declare @res integer
  declare @CurParentID int
  declare @CurChildID int
  set @CurParentID = NULL
  select @CurParentID = Код_объекта_владельца, @res = Код_класса_напряжения 
    from Объект 
    INNER JOIN УРЗА ON УРЗА.Код_УРЗА = Код_объекта
    where Код_объекта = @DefenceID
  while (@CurParentID is not NULL) AND (@res IS NULL)
  begin    
    set @CurChildID = @CurParentID      
    set @CurParentID = NULL
    select @CurParentID = Код_объекта_владельца, @res = Код_класса_напряжения 
      from Объект 
      INNER JOIN УРЗА ON УРЗА.Код_УРЗА = Код_объекта
      where Код_объекта = @CurChildID
  end
  return @res
end