---- GetSubStationUnomIds ----
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[GetSubStationUnomIds]') and xtype in (N'FN', N'IF', N'TF'))
drop function [dbo].[GetSubStationUnomIds]
GO

CREATE FUNCTION [GetSubStationUnomIds] (@SubStationID int)
RETURNS @retObjs TABLE (UnomTypeId int,значение float, ObjectId int)
-- возвращает таблицу с кодами, классами напряжений подстанции
AS
BEGIN
   -- таблица для накопления результата
   DECLARE @Objs TABLE (UnomTypeId int,значение float, ObjectId int)
   if @SubStationID <> 0 
     INSERT @Objs 
       SELECT РУ.Код_класса_напряжения, значение, РУ.Код_РУ from РУ inner join справочник_классов_напряжения сп on РУ.код_класса_напряжения = сп.код_класса_напряжения inner join объект on Код_РУ = Код_объекта where Код_типа_объекта = 50 and Код_объекта_владельца = @SubStationID
     INSERT @Objs 
       SELECT Секция.Код_класса_напряжения, значение, Секция.Код_секции from Секция inner join справочник_классов_напряжения сп on Секция.код_класса_напряжения = сп.код_класса_напряжения inner join объект on Код_секции = Код_объекта where (Код_типа_объекта = 53  or Код_типа_объекта = 54) and Код_объекта_владельца = @SubStationID
     INSERT @Objs 
       SELECT Секция.Код_класса_напряжения, значение, Секция.Код_секции from Секция inner join справочник_классов_напряжения сп on Секция.код_класса_напряжения = сп.код_класса_напряжения inner join объект Об1 on Код_секции = Об1.Код_объекта inner join Объект Об2 on Об1.Код_объекта_владельца = Об2.Код_объекта
    		where Об2.Код_типа_объекта=50 and Об2.Код_объекта_владельца = @SubStationID 
   -- Копируем в результирующую таблицу, упорядочиваем по RowNum
   INSERT @retObjs
     SELECT DISTINCT * FROM @Objs
       ORDER BY UnomTypeId
   RETURN	
END