UPDATE TBDD_MODULES SET DB_VERSION = '3.7' where NAME = 'Process-Manager'; GO --- MK / V3 dieses Update Skripts BEGIN TRANSACTION SET QUOTED_IDENTIFIER ON SET ARITHABORT ON SET NUMERIC_ROUNDABORT OFF SET CONCAT_NULL_YIELDS_NULL ON SET ANSI_NULLS ON SET ANSI_PADDING ON SET ANSI_WARNINGS ON COMMIT ---------------------------- MAP Tabelle ---------------------------- IF ( SELECT count(*) FROM sys.columns WHERE name = 'SEQUENCE' AND object_id = OBJECT_ID('TBTF_MAP_COCKPIT') ) > 0 BEGIN BEGIN TRANSACTION PRINT 'Tabelle TBTF_MAP_COCKPIT wird angepasst!' EXECUTE sp_rename N'dbo.TBTF_MAP_COCKPIT.SEQUENCE', N'Tmp_MAP_SEQUENCE', 'COLUMN' EXECUTE sp_rename N'dbo.TBTF_MAP_COCKPIT.Tmp_MAP_SEQUENCE', N'MAP_SEQUENCE', 'COLUMN' ALTER TABLE dbo.TBTF_MAP_COCKPIT SET (LOCK_ESCALATION = TABLE) COMMIT END ELSE BEGIN PRINT 'Tabelle TBTF_MAP_COCKPIT wird nicht angepasst!' END ---------------------------- CFG Tabelle ---------------------------- IF ( SELECT count(*) FROM sys.columns WHERE name = 'CFG_SEQUENCE' AND object_id = OBJECT_ID('TBTF_CFG_COCKPIT_DEFINITION') ) = 0 BEGIN PRINT 'Tabelle TBTF_CFG_COCKPIT_DEFINITION wird angepasst!' ALTER TABLE dbo.TBTF_CFG_COCKPIT SET (LOCK_ESCALATION = TABLE) ALTER TABLE dbo.TBPM_PROFILE SET (LOCK_ESCALATION = TABLE) BEGIN TRY ALTER TABLE dbo.TBTF_CFG_COCKPIT_DEFINITION DROP CONSTRAINT FK_TBTF_CFG_COCKPIT_DEFINITION_TBPM_PROFILE ALTER TABLE dbo.TBTF_CFG_COCKPIT_DEFINITION DROP CONSTRAINT FK_TBTF_CFG_COCKPIT_DEFINITION_TBTF_CFG_COCKPIT ALTER TABLE dbo.TBTF_CFG_COCKPIT_DEFINITION DROP CONSTRAINT DF_TBTF_CFG_COCKPIT_DEFINITION_ACTIVE ALTER TABLE dbo.TBTF_CFG_COCKPIT_DEFINITION DROP CONSTRAINT DF_TBTF_CFG_COCKPIT_DEFINITION_PARENT_ID ALTER TABLE dbo.TBTF_CFG_COCKPIT_DEFINITION DROP CONSTRAINT DF_TBTF_CFG_COCKPIT_DEFINITION_TYPE ALTER TABLE dbo.TBTF_CFG_COCKPIT_DEFINITION DROP CONSTRAINT DF_TBTF_CFG_COCKPIT_DEFINITION_ICON ALTER TABLE dbo.TBTF_CFG_COCKPIT_DEFINITION DROP CONSTRAINT DF_TBTF_CFG_COCKPIT_DEFINITION_ADDED_WHO ALTER TABLE dbo.TBTF_CFG_COCKPIT_DEFINITION DROP CONSTRAINT DF_TBTF_CFG_COCKPIT_DEFINITION_ADDED_WHEN END TRY BEGIN CATCH PRINT 'WARNING! Old contraints cannot be droped' PRINT ERROR_MESSAGE() END CATCH DROP TABLE IF EXISTS dbo.Tmp_TBTF_CFG_COCKPIT_DEFINITION; CREATE TABLE dbo.Tmp_TBTF_CFG_COCKPIT_DEFINITION ( PK_CFG_COCKPIT_DEFINITION_ID bigint NOT NULL IDENTITY (1, 1), FK_CFG_COCKPIT_ID bigint NOT NULL, ACTIVE bit NOT NULL, PARENT_ID int NOT NULL, TYPE_ID tinyint NOT NULL, ICON_ID smallint NOT NULL, NAME nvarchar(150) NULL, FK_PROFILE_ID int NULL, FK_CHART_ID int NULL, FK_MONITOR_ID int NULL, SQL_QUERY nvarchar(MAX) NOT NULL, SQL_QUERY_COUNT nvarchar(MAX) NULL, COMMENT nvarchar(500) NULL, CFG_SEQUENCE smallint NOT NULL, ADDED_WHO nvarchar(50) NOT NULL, ADDED_WHEN datetime NOT NULL, CHANGED_WHO nvarchar(50) NULL, CHANGED_WHEN datetime NULL ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] ALTER TABLE dbo.Tmp_TBTF_CFG_COCKPIT_DEFINITION SET (LOCK_ESCALATION = TABLE) DECLARE @v1 sql_variant, @v2 sql_variant, @v3 sql_variant, @v4 sql_variant, @v5 sql_variant, @v6 sql_variant SET @v1 = N'Primary key' EXECUTE sp_addextendedproperty N'MS_Description', @v1, N'SCHEMA', N'dbo', N'TABLE', N'Tmp_TBTF_CFG_COCKPIT_DEFINITION', N'COLUMN', N'PK_CFG_COCKPIT_DEFINITION_ID' SET @v2 = N'On / Off Switch' EXECUTE sp_addextendedproperty N'MS_Description', @v2, N'SCHEMA', N'dbo', N'TABLE', N'Tmp_TBTF_CFG_COCKPIT_DEFINITION', N'COLUMN', N'ACTIVE' SET @v3 = N'0 = Overview, 1 = Profile, 2 = Monitoring, 3 = Chart' EXECUTE sp_addextendedproperty N'MS_Description', @v3, N'SCHEMA', N'dbo', N'TABLE', N'Tmp_TBTF_CFG_COCKPIT_DEFINITION', N'COLUMN', N'TYPE_ID' SET @v4 = N'Zahlenwerte für Symbole' EXECUTE sp_addextendedproperty N'MS_Description', @v4, N'SCHEMA', N'dbo', N'TABLE', N'Tmp_TBTF_CFG_COCKPIT_DEFINITION', N'COLUMN', N'ICON_ID' SET @v5 = N'Optional name' EXECUTE sp_addextendedproperty N'MS_Description', @v5, N'SCHEMA', N'dbo', N'TABLE', N'Tmp_TBTF_CFG_COCKPIT_DEFINITION', N'COLUMN', N'NAME' SET @v6 = N'Optional description' EXECUTE sp_addextendedproperty N'MS_Description', @v6, N'SCHEMA', N'dbo', N'TABLE', N'Tmp_TBTF_CFG_COCKPIT_DEFINITION', N'COLUMN', N'COMMENT' BEGIN TRY ALTER TABLE dbo.Tmp_TBTF_CFG_COCKPIT_DEFINITION ADD CONSTRAINT PK_TBTF_CFG_COCKPIT_DEFINITION_PK_COCKPIT_ID PRIMARY KEY CLUSTERED ( PK_CFG_COCKPIT_DEFINITION_ID ) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ALTER TABLE dbo.Tmp_TBTF_CFG_COCKPIT_DEFINITION ADD CONSTRAINT FK_TBTF_CFG_COCKPIT_DEFINITION_TBTF_CFG_COCKPIT FOREIGN KEY ( FK_CFG_COCKPIT_ID ) REFERENCES dbo.TBTF_CFG_COCKPIT ( PK_CFG_COCKPIT_ID ) ON UPDATE NO ACTION ON DELETE NO ACTION ALTER TABLE dbo.Tmp_TBTF_CFG_COCKPIT_DEFINITION WITH NOCHECK ADD CONSTRAINT FK_TBTF_CFG_COCKPIT_DEFINITION_TBPM_PROFILE FOREIGN KEY ( FK_PROFILE_ID ) REFERENCES dbo.TBPM_PROFILE ( GUID ) ON UPDATE NO ACTION ON DELETE NO ACTION ALTER TABLE dbo.Tmp_TBTF_CFG_COCKPIT_DEFINITION NOCHECK CONSTRAINT FK_TBTF_CFG_COCKPIT_DEFINITION_TBPM_PROFILE ALTER TABLE dbo.Tmp_TBTF_CFG_COCKPIT_DEFINITION ADD CONSTRAINT DF_TBTF_CFG_COCKPIT_DEFINITION_ACTIVE DEFAULT ((1)) FOR ACTIVE ALTER TABLE dbo.Tmp_TBTF_CFG_COCKPIT_DEFINITION ADD CONSTRAINT DF_TBTF_CFG_COCKPIT_DEFINITION_PARENT_ID DEFAULT ((0)) FOR PARENT_ID ALTER TABLE dbo.Tmp_TBTF_CFG_COCKPIT_DEFINITION ADD CONSTRAINT DF_TBTF_CFG_COCKPIT_DEFINITION_TYPE DEFAULT ((0)) FOR TYPE_ID ALTER TABLE dbo.Tmp_TBTF_CFG_COCKPIT_DEFINITION ADD CONSTRAINT DF_TBTF_CFG_COCKPIT_DEFINITION_ICON DEFAULT ((0)) FOR ICON_ID ALTER TABLE dbo.Tmp_TBTF_CFG_COCKPIT_DEFINITION ADD CONSTRAINT DF_TBTF_CFG_COCKPIT_DEFINITION_CFG_SEQUENCE DEFAULT ((0)) FOR CFG_SEQUENCE ALTER TABLE dbo.Tmp_TBTF_CFG_COCKPIT_DEFINITION ADD CONSTRAINT DF_TBTF_CFG_COCKPIT_DEFINITION_ADDED_WHO DEFAULT (N'DEFAULT') FOR ADDED_WHO ALTER TABLE dbo.Tmp_TBTF_CFG_COCKPIT_DEFINITION ADD CONSTRAINT DF_TBTF_CFG_COCKPIT_DEFINITION_ADDED_WHEN DEFAULT (getdate()) FOR ADDED_WHEN END TRY BEGIN CATCH PRINT 'ERROR! New contraints cannot be created' PRINT ERROR_MESSAGE() END CATCH BEGIN TRY SET IDENTITY_INSERT dbo.Tmp_TBTF_CFG_COCKPIT_DEFINITION ON IF EXISTS(SELECT * FROM dbo.TBTF_CFG_COCKPIT_DEFINITION) EXEC('INSERT INTO dbo.Tmp_TBTF_CFG_COCKPIT_DEFINITION (PK_CFG_COCKPIT_DEFINITION_ID, FK_CFG_COCKPIT_ID, ACTIVE, PARENT_ID, TYPE_ID, ICON_ID, NAME, FK_PROFILE_ID, FK_CHART_ID, FK_MONITOR_ID, SQL_QUERY, SQL_QUERY_COUNT, COMMENT, CFG_SEQUENCE, ADDED_WHO, ADDED_WHEN, CHANGED_WHO, CHANGED_WHEN) SELECT PK_CFG_COCKPIT_DEFINITION_ID, FK_CFG_COCKPIT_ID, ACTIVE, PARENT_ID, TYPE_ID, ICON_ID, NAME, FK_PROFILE_ID, FK_CHART_ID, FK_MONITOR_ID, SQL_QUERY, SQL_QUERY_COUNT, COMMENT, 0, ADDED_WHO, ADDED_WHEN, CHANGED_WHO, CHANGED_WHEN FROM dbo.TBTF_CFG_COCKPIT_DEFINITION WITH (HOLDLOCK TABLOCKX)') SET IDENTITY_INSERT dbo.Tmp_TBTF_CFG_COCKPIT_DEFINITION OFF DROP TABLE dbo.TBTF_CFG_COCKPIT_DEFINITION EXECUTE sp_rename N'dbo.Tmp_TBTF_CFG_COCKPIT_DEFINITION', N'TBTF_CFG_COCKPIT_DEFINITION', 'OBJECT' END TRY BEGIN CATCH PRINT 'ERROR! Transering data' PRINT ERROR_MESSAGE() END CATCH END ELSE BEGIN PRINT 'Tabelle TBTF_CFG_COCKPIT_DEFINITION wird NICHT angepasst!' END GO ---------------------------- Funktionen ---------------------------- -- [PRTF_DEL_COCKPIT_DEFINITION] -- ================================================================= -- Deletes a cockpit an all relations -- -- ================================================================= -- Copyright (c) 2026 by Digital Data GmbH -- -- Digital Data GmbH • Ludwig-Rinn-Strasse 16 • D-35452 Heuchelheim -- Tel.: 0641/202360 • E-Mail: info-flow@digitaldata.works -- ================================================================= -- Creation Date / Author: 18.08.2026 / MS -- Version Date / Editor: 18.08.2026 / MS -- Version Number: 1.0.0.0 -- ================================================================= -- History: -- 18.08.2026 / MK - First Version CREATE OR ALTER PROCEDURE [dbo].[PRTF_DEL_COCKPIT_DEFINITION] @COCKPIT_ID INT AS BEGIN DELETE FROM TBTF_MAP_COCKPIT WHERE FK_CFG_COCKPIT_ID = @COCKPIT_ID; DELETE FROM TBTF_CFG_COCKPIT_DEFINITION WHERE FK_CFG_COCKPIT_ID = @COCKPIT_ID; DELETE FROM TBTF_CFG_COCKPIT WHERE PK_CFG_COCKPIT_ID = @COCKPIT_ID; END GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- [FNTF_GET_COCKPIT_DEFINITION] -- ================================================================= -- Returns a table with user allocated cockpits -- User cockpits will be returned at first -- -- Returns: TABLE -- ================================================================= -- Copyright (c) 2026 by Digital Data GmbH -- -- Digital Data GmbH • Ludwig-Rinn-Strasse 16 • D-35452 Heuchelheim -- Tel.: 0641/202360 • E-Mail: info-flow@digitaldata.works -- ================================================================= -- Creation Date / Author: 23.04.2026 / MK -- Version Date / Editor: 03.09.2026 / MK -- Version Number: 1.4.1.0 -- ================================================================= -- History: -- 23.04.2026 / MK - First Version -- 02.06.2026 / MK - Inaktive TF Profile werden gefiltert -- 10.07.2026 / MK - Aktiv/Inaktiv Anzeige verbessert -- 03.09.2026 / MK - SEQUENCE Spalte integriert und danach sortiert CREATE OR ALTER FUNCTION [dbo].[FNTF_GET_COCKPIT_DEFINITION]( @pUSER_ID BIGINT, -- GUID from [TBDD_USER] @pLANGUAGE NVARCHAR(10) = NULL -- OPTIONAL: Set Language if you want to Override setting in Profile table. Failsafe is getting data from [TBDD_USERS] ) RETURNS @RESULT TABLE ( [PK_RESULT_ID] [bigint] Identity(1,1) NOT NULL, [PK_CFG_COCKPIT_DEFINITION_ID] [bigint] NOT NULL, [FK_CFG_COCKPIT_ID] [bigint] NOT NULL, [PARENT_ID] [bigint] NOT NULL, [MAP_SEQUENCE] [smallint] NULL, [CFG_SEQUENCE] [smallint] NOT NULL, [ACTIVE] [bit] NOT NULL, [TYPE_ID] [tinyint] NOT NULL, [ICON_INDEX] [smallint] NOT NULL, [NAME] [nvarchar](150) NULL, [FK_PROFILE_ID] [bigint] NULL, [FK_CHART_ID] [bigint] NULL, [FK_MONITOR_ID] [bigint] NULL, [SQL_QUERY] [nvarchar](max) NOT NULL, [SQL_QUERY_COUNT] [nvarchar](max) NULL, [COMMENT] [nvarchar](500) NULL, [ADDED_WHO] [nvarchar](50) NOT NULL, [ADDED_WHEN] [datetime] NOT NULL, [CHANGED_WHO] [nvarchar](50) NULL, [CHANGED_WHEN] [datetime] NULL) AS BEGIN --=========================================-- Parameter copies (avoid sniffing) --========================================-- DECLARE @USER_ID BIGINT = @pUSER_ID, @LANGUAGE NVARCHAR(10) = @pLANGUAGE; ---------------------------------------------------------------------------------------------------------------------------- --===============================================-- declare runtime vars --===============================================-- DECLARE @MY_FUNCTION_NAME NVARCHAR(128) = OBJECT_NAME(@@PROCID); DECLARE @MODULE_SHORT_NAME NVARCHAR(10) = 'PM'; ---------------------------------------------------------------------------------------------------------------------------- --===================================================-- Failsafe settings --====================================================-- SET @LANGUAGE = CASE WHEN ((LEN(@LANGUAGE) = 0) AND (SELECT count([LANGUAGE]) FROM [TBDD_USER] WITH (NOLOCK) WHERE [GUID] = @USER_ID) = 1) THEN (SELECT [LANGUAGE] FROM [TBDD_USER] WITH (NOLOCK) WHERE [GUID] = @USER_ID) ELSE @LANGUAGE END; ----------------------------------------------------------------------------------------------------------------------------------- --===============================================-- get user allocated cockpits --===============================================-- INSERT INTO @RESULT([PK_CFG_COCKPIT_DEFINITION_ID], [FK_CFG_COCKPIT_ID], [PARENT_ID], [MAP_SEQUENCE], [CFG_SEQUENCE], [ACTIVE], [TYPE_ID], [ICON_INDEX], [NAME], [FK_PROFILE_ID], [FK_CHART_ID], [FK_MONITOR_ID], [SQL_QUERY], [SQL_QUERY_COUNT], [COMMENT], [ADDED_WHO], [ADDED_WHEN], [CHANGED_WHO], [CHANGED_WHEN]) SELECT DISTINCT TOP 100 PERCENT [CCP].[PK_CFG_COCKPIT_DEFINITION_ID], [CCP].[FK_CFG_COCKPIT_ID], [CCP].[PARENT_ID], [MC].[MAP_SEQUENCE], [CCP].[CFG_SEQUENCE], CASE WHEN [CCP].[TYPE_ID] = 0 AND ([CC].[ACTIVE] = 0 OR [CCP].[ACTIVE] = 0) THEN 0 WHEN [CCP].[TYPE_ID] = 1 AND ([CC].[ACTIVE] = 0 OR [CCP].[ACTIVE] = 0 OR [TFP].[ACTIVE] = 0) THEN 0 WHEN [CCP].[TYPE_ID] = 2 AND ([CC].[ACTIVE] = 0 OR [CCP].[ACTIVE] = 0) THEN 0 WHEN [CCP].[TYPE_ID] = 3 AND ([CC].[ACTIVE] = 0 OR [CCP].[ACTIVE] = 0) THEN 0 ELSE [CCP].[ACTIVE] END as [ACTIVE], [CCP].[TYPE_ID], [CCP].[ICON_ID], CASE WHEN ((SELECT COUNT(*) FROM [dbo].[TBDD_GUI_LANGUAGE_PHRASE] WITH (NOLOCK) WHERE [MODULE] IN (@MODULE_SHORT_NAME) AND [LANGUAGE] = @LANGUAGE AND [TITLE] = [CCP].[NAME]) = 1) THEN (SELECT [STRING1] FROM [dbo].[TBDD_GUI_LANGUAGE_PHRASE] WITH (NOLOCK) WHERE [MODULE] IN (@MODULE_SHORT_NAME) AND [LANGUAGE] = @LANGUAGE AND [TITLE] = [CCP].[NAME]) ELSE [CCP].[NAME] END as [NAME], [CCP].[FK_PROFILE_ID], [CCP].[FK_CHART_ID], [CCP].[FK_MONITOR_ID], [CCP].[SQL_QUERY], [CCP].[SQL_QUERY_COUNT], [CCP].[COMMENT], [CCP].[ADDED_WHO], [CCP].[ADDED_WHEN], [CCP].[CHANGED_WHO], [CCP].[CHANGED_WHEN] FROM [dbo].[TBTF_CFG_COCKPIT_DEFINITION] as [CCP] WITH (NOLOCK) INNER JOIN [dbo].[TBTF_CFG_COCKPIT] as [CC] WITH (NOLOCK) ON [CCP].[FK_CFG_COCKPIT_ID] = [CC].[PK_CFG_COCKPIT_ID] INNER JOIN [dbo].[TBTF_MAP_COCKPIT] as [MC] WITH (NOLOCK) ON [CCP].[FK_CFG_COCKPIT_ID] = [MC].[FK_CFG_COCKPIT_ID] AND [MC].[FK_CFG_USER_ID] = @USER_ID LEFT JOIN [dbo].[TBPM_PROFILE] as [TFP] WITH (NOLOCK) ON [CCP].[FK_PROFILE_ID] = [TFP].[GUID] WHERE (([CC].[ACTIVE] IN (0,1) AND [CCP].[TYPE_ID] = 0) -- Overview OR ([CC].[ACTIVE] IN (0,1) AND [CCP].[TYPE_ID] = 1) -- Profile OR ([CC].[ACTIVE] IN (0,1) AND [CCP].[TYPE_ID] = 2) -- Monitor OR ([CC].[ACTIVE] IN (0,1) AND [CCP].[TYPE_ID] = 3)) -- Chart AND [CCP].[FK_CFG_COCKPIT_ID] NOT IN (SELECT [FK_CFG_COCKPIT_ID] FROM @RESULT) -- Allow no duplicates ORDER BY [MC].[MAP_SEQUENCE] ASC, [CCP].[FK_CFG_COCKPIT_ID] ASC, [CCP].[PARENT_ID] ASC, [CCP].[TYPE_ID] ASC, [CCP].[CFG_SEQUENCE] ASC, [NAME] ASC; ----------------------------------------------------------------------------------------------------------------------------------- --===============================================-- get group allocated cockpits --==============================================-- INSERT INTO @RESULT([PK_CFG_COCKPIT_DEFINITION_ID], [FK_CFG_COCKPIT_ID], [PARENT_ID], [MAP_SEQUENCE], [CFG_SEQUENCE], [ACTIVE], [TYPE_ID], [ICON_INDEX], [NAME], [FK_PROFILE_ID], [FK_CHART_ID], [FK_MONITOR_ID], [SQL_QUERY], [SQL_QUERY_COUNT], [COMMENT], [ADDED_WHO], [ADDED_WHEN], [CHANGED_WHO], [CHANGED_WHEN]) SELECT DISTINCT TOP 100 PERCENT [CCP].[PK_CFG_COCKPIT_DEFINITION_ID], [CCP].[FK_CFG_COCKPIT_ID], [CCP].[PARENT_ID], [MC].[MAP_SEQUENCE], [CCP].[CFG_SEQUENCE], CASE WHEN [CCP].[TYPE_ID] = 0 AND ([CC].[ACTIVE] = 0 OR [CCP].[ACTIVE] = 0) THEN 0 WHEN [CCP].[TYPE_ID] = 1 AND ([CC].[ACTIVE] = 0 OR [CCP].[ACTIVE] = 0 OR [TFP].[ACTIVE] = 0) THEN 0 WHEN [CCP].[TYPE_ID] = 2 AND ([CC].[ACTIVE] = 0 OR [CCP].[ACTIVE] = 0) THEN 0 WHEN [CCP].[TYPE_ID] = 3 AND ([CC].[ACTIVE] = 0 OR [CCP].[ACTIVE] = 0) THEN 0 ELSE [CCP].[ACTIVE] END as [ACTIVE], [CCP].[TYPE_ID], [CCP].[ICON_ID], CASE WHEN ((SELECT COUNT(*) FROM [dbo].[TBDD_GUI_LANGUAGE_PHRASE] WITH (NOLOCK) WHERE [MODULE] IN (@MODULE_SHORT_NAME) AND [LANGUAGE] = @LANGUAGE AND [TITLE] = [CCP].[NAME]) = 1) THEN (SELECT [STRING1] FROM [dbo].[TBDD_GUI_LANGUAGE_PHRASE] WITH (NOLOCK) WHERE [MODULE] IN (@MODULE_SHORT_NAME) AND [LANGUAGE] = @LANGUAGE AND [TITLE] = [CCP].[NAME]) ELSE [CCP].[NAME] END as [NAME], [CCP].[FK_PROFILE_ID], [CCP].[FK_CHART_ID], [CCP].[FK_MONITOR_ID], [CCP].[SQL_QUERY], [CCP].[SQL_QUERY_COUNT], [CCP].[COMMENT], [CCP].[ADDED_WHO], [CCP].[ADDED_WHEN], [CCP].[CHANGED_WHO], [CCP].[CHANGED_WHEN] FROM [dbo].[TBTF_CFG_COCKPIT_DEFINITION] as [CCP] WITH (NOLOCK) INNER JOIN [dbo].[TBTF_CFG_COCKPIT] as [CC] WITH (NOLOCK) ON [CCP].[FK_CFG_COCKPIT_ID] = [CC].PK_CFG_COCKPIT_ID INNER JOIN ( SELECT [FK_CFG_COCKPIT_ID], MIN([MAP_SEQUENCE]) AS [MAP_SEQUENCE] FROM [dbo].[TBTF_MAP_COCKPIT] WITH (NOLOCK) WHERE [FK_CFG_GROUP_ID] IN ( SELECT DISTINCT [GROUP_ID] FROM [dbo].[TBDD_GROUPS_USER] WITH (NOLOCK) WHERE [USER_ID] = @USER_ID ) OR [FK_CFG_USER_ID] = @USER_ID GROUP BY [FK_CFG_COCKPIT_ID] ) as [MC] ON [CCP].[FK_CFG_COCKPIT_ID] = [MC].[FK_CFG_COCKPIT_ID] LEFT JOIN [dbo].[TBPM_PROFILE] as [TFP] WITH (NOLOCK) ON [CCP].[FK_PROFILE_ID] = [TFP].[GUID] WHERE (([CC].[ACTIVE] IN (0,1) AND [CCP].[TYPE_ID] = 0) -- Overview OR ([CC].[ACTIVE] IN (0,1) AND [CCP].[TYPE_ID] = 1) -- Profile OR ([CC].[ACTIVE] IN (0,1) AND [CCP].[TYPE_ID] = 2) -- Monitor OR ([CC].[ACTIVE] IN (0,1) AND [CCP].[TYPE_ID] = 3)) -- Chart AND [CCP].[FK_CFG_COCKPIT_ID] NOT IN (SELECT [FK_CFG_COCKPIT_ID] FROM @RESULT) -- Allow no duplicates ORDER BY [MC].[MAP_SEQUENCE] ASC, [CCP].[FK_CFG_COCKPIT_ID] ASC, [CCP].[PARENT_ID] ASC, [CCP].[TYPE_ID] ASC, [CCP].[CFG_SEQUENCE] ASC, [NAME] ASC; ---------------------------------------------------------------------------------------------------------------------------- RETURN; END; GO /*** -- TEST: SELECT * FROM [FNTF_GET_COCKPIT_DEFINITION](1,NULL) SELECT * FROM [FNTF_GET_COCKPIT_DEFINITION](2,'en-us') SELECT * FROM [FNTF_GET_COCKPIT_DEFINITION](5,'en-us') ***/