-- 3.5.89 Power
-- Возвращает список названий участков для опоры
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[GetObjectLineSegments]') and xtype in (N'FN', N'IF', N'TF'))
drop function [dbo].GetObjectLineSegments
GO
create function GetObjectLineSegments(@ObjectID integer)
returns nvarchar(4000)
as
begin
  declare @res nvarchar(4000)
  declare @CurSeg nvarchar(4000)  
  declare @SupportID int
  
  set @res = ''  
  set @SupportID = NULL
  
  select @res = Наименование from Объект 
	where Код_объекта = dbo.GetObjectParentObjectID(@ObjectID, 30)
  if @res = ''
  begin	
	select @SupportID = Код_объекта from Объект 
		where Код_объекта = dbo.GetObjectParentObjectID(@ObjectID, 31)  
	if @SupportID is not null	
	begin
		declare Cur cursor for 
			select distinct Наименование from Объект Участок
			inner join Пролет on Участок.Код_объекта = dbo.GetObjectParentObjectID(Пролет.Код_пролета, 30)
			where Пролет.Код_опоры_1 = @SupportID or Пролет.Код_опоры_2 = @SupportID	
		open Cur
		fetch next from Cur into @CurSeg
		while (@@fetch_status = 0)
		begin
			if @res <> '' set @res = @res + ';'
			set @res = @res + @CurSeg     
			fetch next from Cur into @CurSeg
		end
	end
  end	
  return @res			
end
