-- 3.5.68 Power
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[GetSameTypeSubtreeRoot]') and xtype in (N'FN', N'IF', N'TF'))
drop function [dbo].[GetSameTypeSubtreeRoot]
GO
create function GetSameTypeSubtreeRoot(@ObjectID int)
returns int as
begin
  declare @ChildTypeID int
  declare @CurParentID int
  declare @CurParentTypeID int
  declare @CurObjectID int
	
  select  @ChildTypeID = IsNull(Код_типа_объекта,0) from Объект where Код_объекта = @ObjectID
  if (@ChildTypeID = 0) return NULL
	
  set @CurObjectID = @ObjectID	

  select @CurParentID = IsNull(Код_объекта_владельца,0) from Объект where Код_объекта = @CurObjectID
  if (@CurParentID = 0) return @CurObjectID
	
  select @CurParentTypeID = IsNull(Код_типа_объекта,0) from Объект where Код_объекта = @CurParentID
  if @CurParentTypeID<>@ChildTypeID return @CurObjectID	
	
  while (@CurParentID <> 0) AND (@ChildTypeID = @CurParentTypeID)
  begin
    set @CurObjectID = @CurParentID
    select @CurParentID = IsNull(Код_объекта_владельца,0) from Объект where Код_объекта = @CurObjectID
    select @CurParentTypeID = IsNull(Код_типа_объекта,0) from Объект where Код_объекта = @CurParentID
  end	
  return @CurObjectID
end
