-- 3.5.80 Power
alter function BelongsToObj(@ChildID integer, @ParentID integer)
returns bit
WITH SCHEMABINDING
as
begin
  if @ChildID is NULL or @ChildID = 0 or @ParentID is null or @ParentID = 0 return 0
  declare @res bit
  declare @CurParentID int
  declare @CurChildID int
  select @CurParentID = IsNull(Код_объекта_владельца,0) from dbo.Объект where Код_объекта = @ChildID
  while (@CurParentID<>0) AND (@CurParentID<>@ParentID)
  begin
    set @CurChildID = @CurParentID
    select @CurParentID = IsNull(Код_объекта_владельца,0) from dbo.Объект where Код_объекта = @CurChildID
  end
  if @CurParentID = @ParentID set @res = 1 else set @res = 0
  return @res
end 
GO


CREATE VIEW ObjectsExcludeTrash
        WITH SCHEMABINDING
	AS
	SELECT 
	   	О1.Код_объекта,
	        О1.Код_типа_объекта,     
	        О1.Код_диспетчерского_управления, 
	        О1.Наименование,         
	        О1.Код_объекта_владельца,
		О1.Инвентарный_номер,    
		О1.Примечание,	     
		О1.GUID,		     
	        О1.Балансовая_стоимость, 
	        О1.Порядковый_номер,
                О1.Номер_документа,
                О1.Дата_документа,
 		О1.В_проекте,
		О1.Альтернативное_наименование
	FROM dbo.Объект О1
	INNER JOIN dbo.Объект О2 ON О2.Код_типа_объекта = 13 AND dbo.BelongsToObj(О1.Код_объекта, О2.Код_объекта) = 0
	WITH CHECK OPTION
GO