ich suche nach einer Lösung, um innerhalb des Serverevents eines Workflows das E-Mail-Feld des Ordners auszulesen, der das Dokument beinhaltet, auf das der Workflow gestartet wurde.
Ich habe probiert das Ganze mit einer SQL Query abzufragen, aber in der Datenbank scheint es keine Verknüpfung von Dokument und Ordner via einer Art “Parent_ID” zu geben.
Dim docs, doc, sDocId
' Dokument aus der Workflowakte holen
Set docs = thisprocess.WFFile.FileObjects
' IComFileDocs
If Not docs Is Nothing Then
If docs.Count > 0 Then
Set doc = docs.Item(0) ' IComFileDoc
sDocId = doc.Id ' Dokumenten-ID als BSTR
End if
End if
debug2File "sDocId: " & sDocId
' Works bis hierhin
' Dieser Teil gibt kein Ergebnis zurück..
Set oJob = initJob("ado.ExecuteSQL")
oJob.InputParameters.AddNewIntegerParameter "Flags", FLAGS_NOTHING
oJob.InputParameters.AddNewStringParameter "Command", _
"SELECT doc_parent " &_
"FROM osdocver " &_
"WHERE doc_id = '" & sDocId & "'"
runJob()
DOC_PARENT scheint sich in diesem Falle auch nur auf die Variante zu beziehen.
Hat jemand von euch damit bereits Erfahrungen gesammelt und evtl. einen Lösungsvorschlag?
Moin, aufgrund u.a. von Verweisen im enaio kann ein Dokument in mehreren Ordnern enthalten sein. Die Tabelle sdrel zeigt daher den Standort ( oder auch die Standorte) der Dokumente:
wie es @AlexanderKohrt bereits geschrieben hat, ist der Standort eines Dokuments in der SDREL (Stamm - (Register) - Dokument Relationstabelle) gespeichert. Dabei sind aber zwei Punkte zu beachten:
Nur die ID aktive Variante des Dokuments ist in der SDREL hinterlegt
Ein Dokument kann mehrere Standorte haben, daher kann die ID mehrfach vorkommen
Nicht aktive Varianten sind über die osdocver Tabelle mit der aktiven Variante verbunden.
Grundsätzlich ist es sinnvoll, die API zu verwenden, statt SQL zu verwenden, sofern das möglich ist. Voraussetzung hier ist, dass das Dokument einen Standort in enaio hat und das Dokument die aktive Variante ist.
In dem Fall würde ich empfehlen, die Methode dms.GetResultList (Seite 70) zu verwenden.
Dabei handelt es sich quasi um die Server-API Variante der kombinierten Anfrage im Client inklusive Expertenmodus.
Hiermit kann man relativ einfach eine solche Anfrage zusammenbauen:
In diesem Fall ist MeinSchrank der interne Name des Ordnertyps, MeinDokument der interne Name des Dokumenttyps und die 1234567 die ID des Dokuments.
Als Ergebnis kommen dann alle Metadaten des Ordners da ich in diesem Beispiel Fields field_schema="ALL" angegeben habe. Das system=1 ist nötig, da es sich hierbei um ein Systemfeld handelt.