---- GetObjTreeDepth
   -- возвращает глубину дерева объектов для переданной работы
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[GetObjTreeDepth]') and xtype in (N'FN', N'IF', N'TF'))
drop function [dbo].[GetObjTreeDepth]
GO
create function GetObjTreeDepth(@ObjID integer)
returns int
as
begin 
  declare @result int
  set @result = 0
  declare @CurSubobjID int
  declare Cur cursor for SELECT Код_объекта FROM Объект WHERE Код_объекта_владельца =  @ObjID
  open Cur
  fetch next from Cur into @CurSubobjID
  while (@@fetch_status = 0)               
  begin
    set @result = dbo.GetObjTreeDepth(@CurSubobjID)
    fetch next from Cur into @CurSubobjID
  end
  set @result = @result+1
  return @result
end