-- 3.5.48 Power
-- Добавляем справочник типов местности
CREATE TABLE Справочник_типов_местности (
	Код_типа_местности	int IDENTITY(1,1),
	Наименование		nvarchar(150)	NOT NULL,
	Скрытое			bit		NULL,
	PRIMARY KEY (Код_типа_местности)
 )
exec sp_addextendedproperty 'MS_Description', N'Типы местности', 'user', 'dbo', 'Table', 'Справочник_типов_местности'
exec sp_addextendedproperty 'MS_Description', N'Уникальный идентификатор типа местности', 'user', 'dbo', 'Table', 'Справочник_типов_местности', 'Column', 'Код_типа_местности'
exec sp_addextendedproperty 'MS_Description', N'Наименование типа местности', 'user', 'dbo', 'Table', 'Справочник_типов_местности', 'Column', 'Наименование'
GO
-- Заполняем справочник типов местности
SET IDENTITY_INSERT Справочник_типов_местности ON
INSERT INTO Справочник_типов_местности (Код_типа_местности, Наименование) VALUES (1,'Лес')
INSERT INTO Справочник_типов_местности (Код_типа_местности, Наименование) VALUES (2,'Поле')
INSERT INTO Справочник_типов_местности (Код_типа_местности, Наименование) VALUES (3,'Болото')
INSERT INTO Справочник_типов_местности (Код_типа_местности, Наименование) VALUES (4,'Овраги')
INSERT INTO Справочник_типов_местности (Код_типа_местности, Наименование) VALUES (5,'Горы')
SET IDENTITY_INSERT Справочник_типов_местности OFF
GO
-------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------
-- Добавим 'справочник типов местности' в список отображаемых справочников
INSERT INTO Dicts(DictID,Description,TableName,KeyField,DescField) 
VALUES (137,'Типы местности','Справочник_типов_местности','Код_типа_местности','Наименование')
GO
-------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------
-- Изменяем таблицу 'Пролет'
ALTER TABLE Пролет ADD 
Габарит_пересечения float NULL,
Характеристика_местности int NULL
GO
ALTER TABLE Пролет
        ADD FOREIGN KEY (Характеристика_местности)
                              REFERENCES Справочник_типов_местности
GO
-------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------
-- Изменяем таблицу 'Опора'
ALTER TABLE Опора ADD 
Код_линии_левой_цепи int NULL,
Код_линии_правой_цепи int NULL
GO
-------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------
---- Изменяем функццию GetSupportLines ----
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].GetSupportLines') and xtype in (N'FN', N'IF', N'TF'))
drop function [dbo].GetSupportLines
GO
CREATE FUNCTION GetSupportLines(@Код_опоры int, @ParentObjectTypeID int)
RETURNS @retObjs TABLE (
  Код_линии_пролета int						-- код Линии, которой принадлежит пролет
, Наименование_линии_пролета nvarchar(200)	-- наименование Линии, которой принадлежит пролет
)
AS
BEGIN
	INSERT INTO @retobjs 
	SELECT DISTINCT Объект.Код_объекта
				   ,Объект.Наименование
	FROM Пролет
	INNER JOIN Объект ON Объект.Код_объекта = dbo.GetObjectParentObjectID(Код_пролета, @ParentObjectTypeID)
	WHERE
	Код_опоры_1 = @Код_опоры
	OR
	Код_опоры_2 = @Код_опоры
  RETURN
END

