Versionierung windream, DocRecordLink, Overlay in NodeNavigation

This commit is contained in:
Developer01
2026-03-27 14:08:05 +01:00
parent e9cb352674
commit 0125d9b047
12 changed files with 421 additions and 336 deletions

View File

@@ -6,6 +6,19 @@ Public Class ClassDOC_SEARCH
Private Shared ENTITY_ID As Integer
Private Shared RECORD_ID As Integer
Private Shared AsyncRunning As Boolean = False
Private Shared EnableVerboseGridLogging As Boolean = ReadVerboseLoggingSetting()
Private Shared Function ReadVerboseLoggingSetting() As Boolean
Try
Dim oValue = System.Configuration.ConfigurationManager.AppSettings("DocSearch_VerboseLogging")
If Not String.IsNullOrWhiteSpace(oValue) Then
LOGGER.Info("DocSearch_VerboseLogging setting found: " & oValue)
Return Boolean.Parse(oValue)
End If
Catch ex As Exception
' Fehler beim Lesen → sicher auf False
End Try
Return False
End Function
Private Shared Function GET_DOCSEARCH_DATATABLE(Optional BG As Boolean = False)
Try
Dim OPTION1
@@ -188,16 +201,16 @@ Public Class ClassDOC_SEARCH
"VWPMO_DOC_SEARCH T " & vbCrLf &
"INNER JOIN TBPMO_DOC_RECORD_LINK TRL ON T.DocID = TRL.DOC_ID" & vbCrLf &
"INNER JOIN TBPMO_RECORD TR ON TRL.RECORD_ID = TR.GUID" & vbCrLf &
"INNER JOIN TBPMO_STRUCTURE_NODES_USER_TEMP TTEMP ON TR.GUID = TTEMP.RECORD_ID" & vbCrLf &
"INNER JOIN TBPMO_STRUCTURE_NODES_USER_TEMP TTEMP WITH (NOLOCK) ON TR.GUID = TTEMP.RECORD_ID" & vbCrLf &
"INNER JOIN VWPMO_WD_OBJECT_RIGHTS TRIGHTS ON T.DocID = TRIGHTS.dwObjectID" & vbCrLf &
"LEFT JOIN TBPMO_DOCSEARCH_RESULTLIST_CONFIG TRC ON TR.FORM_ID = TRC.ENTITY_ID AND TRC.LANGUAGE = '{7}' AND TRC.GUID = {8}" & vbCrLf &
"LEFT JOIN TBPMO_DOCSEARCH_RESULTLIST_CONFIG TRC1 ON TR.FORM_ID = TRC1.ENTITY_ID AND TRC1.LANGUAGE = '{7}' AND TRC1.GUID = {9}" & vbCrLf &
"LEFT JOIN TBPMO_DOCSEARCH_RESULTLIST_CONFIG TRC2 ON TR.FORM_ID = TRC2.ENTITY_ID AND TRC2.LANGUAGE = '{7}' AND TRC2.GUID = {10}" & vbCrLf &
"LEFT JOIN TBPMO_DOCSEARCH_RESULTLIST_CONFIG TRC3 ON TR.FORM_ID = TRC3.ENTITY_ID AND TRC3.LANGUAGE = '{7}' AND TRC3.GUID = {11}" & vbCrLf &
"LEFT JOIN TBPMO_CONTROL_VALUE T1 ON TRL.RECORD_ID = T1.RECORD_ID AND T1.CONTROL_ID = {2} " & vbCrLf &
"LEFT JOIN TBPMO_CONTROL_VALUE T2 ON TRL.RECORD_ID = T2.RECORD_ID AND T2.CONTROL_ID = {3} " & vbCrLf &
"LEFT JOIN TBPMO_CONTROL_VALUE T3 ON TRL.RECORD_ID = T3.RECORD_ID AND T3.CONTROL_ID = {4} " & vbCrLf &
"LEFT JOIN TBPMO_CONTROL_VALUE T4 ON TRL.RECORD_ID = T4.RECORD_ID AND T4.CONTROL_ID = {5} " & vbCrLf &
"LEFT JOIN TBPMO_DOCSEARCH_RESULTLIST_CONFIG TRC WITH (NOLOCK) ON TR.FORM_ID = TRC.ENTITY_ID AND TRC.LANGUAGE = '{7}' AND TRC.GUID = {8}" & vbCrLf &
"LEFT JOIN TBPMO_DOCSEARCH_RESULTLIST_CONFIG TRC1 WITH (NOLOCK) ON TR.FORM_ID = TRC1.ENTITY_ID AND TRC1.LANGUAGE = '{7}' AND TRC1.GUID = {9}" & vbCrLf &
"LEFT JOIN TBPMO_DOCSEARCH_RESULTLIST_CONFIG TRC2 WITH (NOLOCK) ON TR.FORM_ID = TRC2.ENTITY_ID AND TRC2.LANGUAGE = '{7}' AND TRC2.GUID = {10}" & vbCrLf &
"LEFT JOIN TBPMO_DOCSEARCH_RESULTLIST_CONFIG TRC3 WITH (NOLOCK) ON TR.FORM_ID = TRC3.ENTITY_ID AND TRC3.LANGUAGE = '{7}' AND TRC3.GUID = {11}" & vbCrLf &
"LEFT JOIN TBPMO_CONTROL_VALUE T1 WITH (NOLOCK) ON TRL.RECORD_ID = T1.RECORD_ID AND T1.CONTROL_ID = {2} " & vbCrLf &
"LEFT JOIN TBPMO_CONTROL_VALUE T2 WITH (NOLOCK) ON TRL.RECORD_ID = T2.RECORD_ID AND T2.CONTROL_ID = {3} " & vbCrLf &
"LEFT JOIN TBPMO_CONTROL_VALUE T3 WITH (NOLOCK) ON TRL.RECORD_ID = T3.RECORD_ID AND T3.CONTROL_ID = {4} " & vbCrLf &
"LEFT JOIN TBPMO_CONTROL_VALUE T4 WITH (NOLOCK) ON TRL.RECORD_ID = T4.RECORD_ID AND T4.CONTROL_ID = {5} " & vbCrLf &
"WHERE TR.FORM_ID = {1} AND TTEMP.USER_ID = {0} AND TRIGHTS.dwUserOrGroupID = {6}", USER_GUID, ENTITY_ID, OPTION1, OPTION2, OPTION3, OPTION4, USERID_FK_INT_ECM, USER_LANGUAGE, VALUE_CONF1, VALUE_CONF2, VALUE_CONF3, VALUE_CONF4)
ElseIf CURRENT_SEARCH_TYPE = "FULLTEXT_SUBNODES" Then
Dim sqlft = SQL_FULLTEXT
@@ -215,10 +228,10 @@ Public Class ClassDOC_SEARCH
"[dbo].[FNPMO_DOC_GET_DROPDOWN_VALUE] (T.DocID,{1},'DROPDOWN4','{0}',TRL.RECORD_ID) AS DROPDOWN4" & vbCrLf &
"FROM " & vbCrLf &
"VWPMO_DOC_SEARCH T" & vbCrLf &
"INNER JOIN TBPMO_DOC_RECORD_LINK TRL ON T.DocID = TRL.DOC_ID" & vbCrLf &
"INNER JOIN TBPMO_RECORD TR ON TRL.RECORD_ID = TR.GUID" & vbCrLf &
"INNER JOIN TBPMO_STRUCTURE_NODES_USER_TEMP TTEMP ON TR.GUID = TTEMP.RECORD_ID" & vbCrLf &
"INNER JOIN VWPMO_WD_OBJECT_RIGHTS TRIGHTS ON T.DocID = TRIGHTS.dwObjectID" & vbCrLf &
"INNER JOIN TBPMO_DOC_RECORD_LINK TRL WITH (NOLOCK) ON T.DocID = TRL.DOC_ID" & vbCrLf &
"INNER JOIN TBPMO_RECORD TR WITH (NOLOCK) ON TRL.RECORD_ID = TR.GUID" & vbCrLf &
"INNER JOIN TBPMO_STRUCTURE_NODES_USER_TEMP TTEMP WITH (NOLOCK) ON TR.GUID = TTEMP.RECORD_ID" & vbCrLf &
"INNER JOIN VWPMO_WD_OBJECT_RIGHTS TRIGHTS WITH (NOLOCK) ON T.DocID = TRIGHTS.dwObjectID" & vbCrLf &
"WHERE TR.FORM_ID = {1} AND TTEMP.USER_ID = {2} AND TRIGHTS.dwUserOrGroupID = {3}" & vbCrLf &
"AND T.DocID IN ({6})", USER_LANGUAGE, ENTITY_ID, USER_GUID, USERID_FK_INT_ECM, OPTION1, OPTION2, sqlft)
End If
@@ -392,7 +405,9 @@ Public Class ClassDOC_SEARCH
Dim fullpath = FILE_ROW.Item("FULL_FILENAME")
Dim objecttype = FILE_ROW.Item("OBJECTTYPE")
Dim DocID = FILE_ROW.Item("DocID")
LOGGER.Debug($"Creating Row for DocID [{DocID}]")
If EnableVerboseGridLogging Then
LOGGER.Debug($"Creating Row for DocID [{DocID}]")
End If
'Dim Folderpath = Path.GetDirectoryName(fullpath)
Dim filename = Path.GetFileName(fullpath)
Dim extension = Path.GetExtension(fullpath)
@@ -446,7 +461,10 @@ Public Class ClassDOC_SEARCH
rowvalue = ""
End If
_step = "9.1 rowvalue for Colname [" & Colname & "]: [" & rowvalue.ToString & "]"
LOGGER.Debug("rowvalue for Colname [" & Colname & "]: [" & rowvalue.ToString & "]")
If EnableVerboseGridLogging Then
LOGGER.Debug("rowvalue for Colname [" & Colname & "]: [" & rowvalue.ToString & "]")
End If
Catch ex As Exception
If CURRENT_SEARCH_TYPE = "RECORD" Then
LOGGER.Warn("Unexpected Error in GetVariableValue for Column [" & Colname & "] - Error: " & ex.Message)

View File

@@ -343,9 +343,9 @@ Public Class ClassDocGrid
Dim sql = String.Format(
"SELECT T.[GUID],T.[DocID],T.[CONFIG_ID],T1.HEADER_CAPTION,T.[VALUE],T1.[LANGUAGE], " &
"T1.COLUMN_VIEW,T1.EDITABLE,T1.TYPE_ID,T1.VISIBLE,T.CHANGED_WHEN,T.CHANGED_WHO " &
"FROM TBPMO_DOC_VALUES T " &
"INNER JOIN TBPMO_STRUCTURE_NODES_USER_TEMP TTEMP ON T.RECORD_ID = TTEMP.RECORD_ID " &
"RIGHT JOIN TBPMO_DOCSEARCH_RESULTLIST_CONFIG T1 ON T.CONFIG_ID = T1.GUID " &
"FROM TBPMO_DOC_VALUES T WITH (NOLOCK) " &
"INNER JOIN TBPMO_STRUCTURE_NODES_USER_TEMP TTEMP WITH (NOLOCK) ON T.RECORD_ID = TTEMP.RECORD_ID " &
"RIGHT JOIN TBPMO_DOCSEARCH_RESULTLIST_CONFIG T1 WITH (NOLOCK) ON T.CONFIG_ID = T1.GUID " &
"WHERE T1.ENTITY_ID = {0} AND LANGUAGE = '{1}' AND T1.CONFIG_COLUMNS = 1",
CURRENT_ENTITY_ID, USER_LANGUAGE)
Return MYDB_ECM.GetDatatable(sql)
@@ -358,8 +358,8 @@ Public Class ClassDocGrid
Dim sql = String.Format(
"SELECT T.[GUID],T.[DocID],T.[CONFIG_ID],T1.HEADER_CAPTION,T.[VALUE],T1.[LANGUAGE], " &
"T1.COLUMN_VIEW,T1.EDITABLE,T1.TYPE_ID,T1.VISIBLE,T.CHANGED_WHEN,T.CHANGED_WHO " &
"FROM TBPMO_DOC_VALUES T " &
"RIGHT JOIN TBPMO_DOCSEARCH_RESULTLIST_CONFIG T1 ON T.CONFIG_ID = T1.GUID " &
"FROM TBPMO_DOC_VALUES T WITH (NOLOCK) " &
"RIGHT JOIN TBPMO_DOCSEARCH_RESULTLIST_CONFIG T1 WITH (NOLOCK) ON T.CONFIG_ID = T1.GUID " &
"WHERE T1.ENTITY_ID = {0} AND LANGUAGE = '{1}' AND T1.CONFIG_COLUMNS = 1 AND T.RECORD_ID = {2}",
CURRENT_ENTITY_ID, USER_LANGUAGE, RECORD_ID)
Return MYDB_ECM.GetDatatable(sql)
@@ -434,6 +434,7 @@ Public Class ClassDocGrid
' ── 3. KRITISCH: Performance-optimiertes DataSource-Setzen ───────────
_isGridRefreshing = True ' Flag setzen VOR DataSource-Änderung
IsBulkSelectionActive = True '
Try
pDocGridView.BeginDataUpdate() ' Events unterdrücken
pDocGridView.BeginUpdate() ' UI-Updates unterdrücken
@@ -527,6 +528,7 @@ Public Class ClassDocGrid
' ── 6. KRITISCH: Flag ERST JETZT zurücksetzen! ────────────────────────────
_isGridRefreshing = False
IsBulkSelectionActive = False ' ← NEU: erst hier, NACH BestFitColumns
' Alle Spalten aus ReadOnly setzen, danach werden alle passenden auf nicht ReadOnly gesetzt
For Each column As GridColumn In pDocGridView.Columns