Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: Fbaum am 25.03.03 - 07:15:28

Titel: Dokument --> Antwortdokument --> $REF
Beitrag von: Fbaum am 25.03.03 - 07:15:28
Hallo Leute,
wie kann ich einem Dokument nachträglich sagen, daß es ein Antwortdokument auf ein bestimmtes Orginaldokument ist? Es soll dann auch hierarchisch angezeigt werden?

Auch noch ein Problem....
In einem Orignaldokument gibt es einen Button, der über Lotus Script ein neues Dokument erstellt und in das Feldwerte aus dem Orginaldokument übernommen werden. In den Eigenschaften der Maske für diese neue Dokument ist ANTWORTDOKUMENT eingestellt. Allerdings fehlt nach der Übernahmen der Daten und dem Speichern das $REF Feld im neuen, angeblichen Antwortdokument.
Was habe ich falsch gemacht bzw. wie kann ich das Problem lösen?

Danke für Eure Hilfe.

Gruß FBaum
Titel: Re:Dokument --> Antwortdokument --> $REF
Beitrag von: dirk_2909 am 25.03.03 - 07:59:25
@ FBaum

Du must dem neuen doc sagen das es ein Antwortdok ist:

Call neudoc.Makeresponse(mutter)


Über LS weiß die Form nicht das es ein Antwortdoc ist.
Titel: Re:Dokument --> Antwortdokument --> $REF
Beitrag von: Fbaum am 25.03.03 - 09:01:48
Aha...und welchen Wert trage ich bei (mutter) ein??
Titel: Re:Dokument --> Antwortdokument --> $REF
Beitrag von: ata am 25.03.03 - 09:03:27
... das doc

ata
Titel: Re:Dokument --> Antwortdokument --> $REF
Beitrag von: Fbaum am 25.03.03 - 11:53:46
OK, das funktioniert soweit...!!!

Nur wie sage ich jetzt einem bereits fertigen Dokument (in einer Ansicht), daß es ein Antwortdokument ist...?

Das Dokument ist hat eine Antwortmaske, nur durch das LS wurde diese nicht so erstellt.

Also habe ich jetzt orginal Doks mit Antwortdoks. Und diesen Antwortdoks muß ich nun nachträglich als solche bezeichnen.

Ich hoffe Ihr versteht mich...?!

Gruß FBaum
Titel: Re:Dokument --> Antwortdokument --> $REF
Beitrag von: ata am 25.03.03 - 13:25:03
... mit der gleichen Methode - hol dir die Dokumente und wende die Methode wie gehabt an...

ata
Titel: Re:Dokument --> Antwortdokument --> $REF
Beitrag von: Fbaum am 25.03.03 - 13:33:32
Ja, schon, aber ich müsste einen Agenten machen, der aus dem orginal Dok die DokID ausliest und in das Antwortdok einträgt.
Ist es möglich, Dokumente in der Ansicht zu markieren und dann den Agent laufen zu lassen oder den Agent laufen lassen und dann das orignal Dok wählen und anschließend das Antowortdok?
Titel: Re:Dokument --> Antwortdokument --> $REF
Beitrag von: ata am 25.03.03 - 14:05:28
... je nachdem, wie du deine Dokumente zuordnen kannst. Entweder die Hauptdokumente selektieren und dann nach dem Motto - Jeder suche seine Kinder - oder du arbeitest dich Dokumentgruppe für Dokumentgruppe nach vorne.

... bei wenigen Dokumenten löse ich das so, daß ich im ersten Gang das Hauptdokument markiere und die DocUNID per Agent ins Environment übergebe, im zweiten Gang dann mit einem weiteren Agenten die DocUNID auszulese und damit die zugehörigen Dokumente bearbeite - mit der Hand am Fuß...

ata
Titel: Re:Dokument --> Antwortdokument --> $REF
Beitrag von: Fbaum am 25.03.03 - 14:41:26
@ata
Ich weiß, ich verlange viel... aber könntest Du mir evtl. bei dem Script für die beiden Agenten helfen??
Wäre sehr dankbar dafür...!!!
FBaum
Titel: Re:Dokument --> Antwortdokument --> $REF
Beitrag von: ata am 25.03.03 - 14:49:59
... dazu sollte ich vorher wissen, auf was ich mich einlasse. Wie sehen denn die Dokumente aus - können die Kinder eindeutig berechnet werden, oder geht es nur mit Methode Hand am Fuß...

ata
Titel: Re:Dokument --> Antwortdokument --> $REF
Beitrag von: Fbaum am 25.03.03 - 14:53:40
Letzteres... Ich kann sehen was Orginal Dok ist und starte den Agent. Anschließend lasse ich den Agent über das Antwortdok laufen.
1. Agent : DokID auslesen->ins Environmnet schreiben
2. Agent : DokID aus Environmnet ins Antwortdok schreiben
Titel: Re:Dokument --> Antwortdokument --> $REF
Beitrag von: Rob Green am 25.03.03 - 14:54:45
hm..wenn es nicht zu viele sind, kann man immer noch das pseudo AntwortDoc aufnehmen per CUT (ausschneiden) und den Balken auf ein Parent Doc stellen und darüber wieder einfügen...dadurch wird das pseudo zu einem echten Antwortdoc...klar, Bedingung ist stest, daß die zu Grunde liegende Maske als Response definiert sein muß.
Titel: Re:Dokument --> Antwortdokument --> $REF
Beitrag von: Fbaum am 25.03.03 - 15:00:51
@Rob Green
Hi, habe ich versucht...funtz aber nicht...per cut & paste...
Titel: Re:Dokument --> Antwortdokument --> $REF
Beitrag von: Rob Green am 25.03.03 - 15:02:53
yoo, dann ist es anscheinend so, daß ein Response ein echtes Response sein muß, damit es klappt...ok, dank für die Info bzw. test
Titel: Re:Dokument --> Antwortdokument --> $REF
Beitrag von: ata am 25.03.03 - 15:05:46
... dann ist die Maske der Kinder kein Antwortdokument...

... wenn es dir allzusehr eilt - ich komme erst heute Abend dazu...

ata
Titel: Re:Dokument --> Antwortdokument --> $REF
Beitrag von: ata am 25.03.03 - 19:04:42
... sorry, ich komm heute leider nicht mehr dazu - mir kommt gerade Besuch dazwischen...

ata
Titel: Re:Dokument --> Antwortdokument --> $REF
Beitrag von: Fbaum am 26.03.03 - 06:55:08
Hallo ata,
schon ok.
Also in der Maske steht auf jeden fall ANTWORTDOKUMENT drin?
Ich weiß auch nicht warum´s dann nicht geht?
Gruß FBaum
Titel: Re:Dokument --> Antwortdokument --> $REF
Beitrag von: ata am 26.03.03 - 11:05:20
... kannst du mir deine DB abgespeckt an meine Mail-Adresse senden?...

ata
Titel: Re:Dokument --> Antwortdokument --> $REF
Beitrag von: Fbaum am 26.03.03 - 11:12:56
Sorry, darf ich leider nicht.  :(
Ich habe jetzt aber schon mal weitergetüftelt.
Über @SetEnvironment("DokID",@DocumentUniqueID) kann ich die DokID in die ini schreiben.
Ich weiß jetzt nicht, ob das die richtige Nummer ist.
Falls ja sollte ich dann nur noch wissen, wie ich mit einem anderen Agent die Nummer ins entsprechende Feld schreiben kann, so daß es ein Response Dok wird.
Gruß FBaum
Titel: Re:Dokument --> Antwortdokument --> $REF
Beitrag von: ata am 26.03.03 - 12:03:33
... die Nummer wieder aus dem Environment auslesen

FIELD DeinFeldName := @Environment("KeyInNotesIni")

ata
Titel: Re:Dokument --> Antwortdokument --> $REF
Beitrag von: Fbaum am 26.03.03 - 12:08:13
Tja, so habe ich´s schon versucht. Das Feld $REF wird aber als Text Feld angelegt und nicht als RESPONSE Feld...
Titel: Re:Dokument --> Antwortdokument --> $REF
Beitrag von: ata am 26.03.03 - 12:59:20
... dann mit LS die Dokumente mit UnprocessedDocuments holen und dann mit...

Call notesAntwortDocument.MakeResponse( notesHauptDocument )

... dann müßte es funktionieren...

ata

Titel: Re:Dokument --> Antwortdokument --> $REF
Beitrag von: Fbaum am 26.03.03 - 14:55:07
Hallo ata,
ich weiß ich verlange fast zuviel....aber könntest Du mir bei dem Script etwas helfen? Bin in LS noch nicht so ganz bewandert...
Danke schöööön schon mal....!! :D
Titel: Re:Dokument --> Antwortdokument --> $REF
Beitrag von: ata am 26.03.03 - 17:38:15
... wenn ich zu Hause bin, "g'veschbert" habe, dann schau ich mal, was ich für dich tun kann...

ata
Titel: Re:Dokument --> Antwortdokument --> $REF
Beitrag von: Fbaum am 27.03.03 - 06:46:09
"Hot´s Veschber gschmeckd?"  ;D ;D
FBaum
Titel: Re:Dokument --> Antwortdokument --> $REF
Beitrag von: ata am 27.03.03 - 08:15:03
... wie es eben so ist - erstens komt es anders und zweitens als man denkt...

... ich kümmer mich gleich noch drum...

ata
Titel: Re:Dokument --> Antwortdokument --> $REF
Beitrag von: Fbaum am 27.03.03 - 08:21:09
kein problem...eins nach dem anderen...
Titel: Re:Dokument --> Antwortdokument --> $REF
Beitrag von: Performance am 27.03.03 - 08:57:57
@rob
copy&paste - geht wenn das dok ein $REF vom speziellen Feldtyp Response hat, hat das dok ein gleiches Feld vom Typ Text funktioniert das c$p nicht


@Fbaum
''''' habe in meiner Knowoledge Base gekuckt
Dim s as New NotesSession
Dim db as NotesDatabase
Dim Col as NotesDocumentCollection
Set db = s.CurrentDatabase
Set col = db.UnprocessedDocuments
Set doc = col.GetFirstDocument
If doc.IsResponse Then
   Set parent = db.GetDocumentByUNID( doc.ParentDocumentUNID )
    If parent.IsResponse Then

Dim grandPa As NotesDocument
 Set grandPa = db.GetDocumentByUNID(parent.ParentDocumentUNID )
'## im Prinzip ist diese Zeile wichtig ##
  Call doc.MakeResponse( grandPa )
Else
'....                                    
End If
End If
Call doc.Save( True, False )
End Sub



cu
Titel: Re:Dokument --> Antwortdokument --> $REF
Beitrag von: Fbaum am 27.03.03 - 09:47:27
Hallo,
irgendwie macht das Script nix.
Habe es in einen Agenten eingebaut.
Was ist sonst noch zu machen oder war das schon falsch?
Titel: Re:Dokument --> Antwortdokument --> $REF
Beitrag von: Performance am 27.03.03 - 09:54:56
das war nur ein Beispiel....


wo willst du die Aktion auslösen ?
ist dein Antwortdok auch als soclches im Designer deklariert ?
soll die Aktion nur für ein dok gelten ?


cu
Titel: Re:Dokument --> Antwortdokument --> $REF
Beitrag von: Fbaum am 27.03.03 - 09:58:27
Ich möchte die Aktion in der Ansicht auslösen. Am besten damit, daß ich das orginal Dok und das Antwortdok markiere.
Das Antwortdok ist im Designer auch als solches angegeben. Nur über LS wird das Dok nicht als Antwortdok erstellt.
Titel: Re:Dokument --> Antwortdokument --> $REF
Beitrag von: Performance am 27.03.03 - 10:01:52
moment ich bin dran.......
Titel: Re:Dokument --> Antwortdokument --> $REF
Beitrag von: Rob Green am 27.03.03 - 10:04:46
sach mal, FBaum, schieb doch endlich in drei Teufels Namens diese beknackte DB rüber...sakra sappra diamiamau... :-*

*nix für ungut, bin nit böse, nur etwas ungeduldig  ;D, es ist ein rumstochern im Nebel, weil Du doch selbst nicht weißt, ob das Doc ein Response ist oder was auch immer...ich denke, daß es schona us Respekt vor den Bemühung vieler schon angebracht wäre..und wenn sich Deine Firma eben jungfräulich mit der obergeheimen Anwendung anstellt, dann lass es einfach...dag denen, daß es nicht geht und schluß...meine Meinung natürlich..dann quälst Du Dich nicht mehr so..ok, nur ein gut gemeinter Rat*



Titel: Re:Dokument --> Antwortdokument --> $REF
Beitrag von: ata am 27.03.03 - 10:15:52
... mit dem ersten Agenten (alle markierten Dokumente) übernimmst du die Zuweisung der DocID in die Notes.ini

@Environment("MainDocID" ; @Text(@DocumentUniqueID))

... der zweite Agent hat folgenden Code

Code
   Dim session    As New NotesSession
   Dim dbThis       As NotesDatabase
   Dim dc          As NotesDocumentCollection
   Dim docMain   As NotesDocument
   Dim doc          As NotesDocument
   Dim sDocID      As String
   Dim i             As Integer
   
   Set dbThis       = session.CurrentDatabase
   Set dc          = dbThis.UnprocessedDocuments
   
   ' # Die DocID einlesen
   sDocID         = session.GetEnvironmentString("MainDocID")   
   If sDocID = "" Then
      Msgbox "Es konnte keine zugehörige DocID gelesen werden"
      Exit Sub
   End If
   
   ' # Das Haupdokument initialisieren
   Set docMain = dbThis.getDocumentByUNID(sDocID)
   If docMain Is Nothing Then
      Msgbox "Das Haupt-Document konnte nicht geöffnet werden"
      Exit Sub
   End If
   
   If dc.Count > 0 Then
      Set doc = dc.GetFirstDocument
      Call Doc.RemoveItem("$Ref")
      For i = 1 To dc.Count
         Call doc.MakeResponse( docMain )
         Call doc.Save(True , True)
         Set doc = dc.GetNextDocument(doc)         
      Next
   Else
      Print "Es waren keine Dokumente markiert"
   End If
   Call session.SetEnvironmentVar("MainDocID" , "")

Ich habe den Code getestet , der funzt...

ata

Edit: ... das ist ja mittlerweile richtig lebhaft geworden..

ata
Titel: Re:Dokument --> Antwortdokument --> $REF
Beitrag von: Performance am 27.03.03 - 10:54:40
ich geb dann auch meinen Senf dazu

@rob
es ist manchmal frustrierend ellenlange beiträge zu lesen wo man nicht den roten Faden erkennen kann

@Fbaum
ich habe das in der view mit einem Aktion button gemacht

Sub Click(Source As Button)
   Dim ws As New NotesUIWorkspace   
   Dim s As New NotesSession
   Dim db As NotesDatabase
   Dim parent As NotesDocument, child As NotesDocument
   Dim col As NotesDocumentCollection
   
   Set db = s.CurrentDatabase
   
   Set col = db.Unprocesseddocuments
   If col.count <> 2 Then Exit Sub
   Set parent = col.GetFirstDocument
   Set child = col.GetLastDocument
   REM Dokument aufgrund eines Feldes unterscheiden
   If (Messagebox("Ist  < " + parent.subject(0) + " > das Hauptdokument ?", 3 + 32, "Info") ) = 6 Then
      ''' ok
   Elseif (Messagebox("Ist < " + child.subject(0) + " > das Hauptdokument ?", 3 + 32, "Info") ) = 6 Then
      Set child = col.GetFirstDocument
      Set parent = col.GetLastDocument
   Else
      Exit Sub
   End If
   REM damit nicht das Hauptdok ein Kinddok des Kindes wird checkst du hier nochmal die Form ab
   If parent.Form(0) <> "MainTopic" Then Exit Sub
   
   Call child.MakeResponse(parent)   
   child.save True, False
   Call ws.viewrefresh
   
End Sub




cu
Titel: Re:Dokument --> Antwortdokument --> $REF
Beitrag von: Fbaum am 27.03.03 - 10:56:13
@ata
Genau so habe ich mir das vorgestellt...!!  :D :D
FUNKTIONIERT!!
Vielen Dank für die Hilfe !!

@all
Danke an alle...!

Gruß FBaum
Titel: Re:Dokument --> Antwortdokument --> $REF
Beitrag von: ata am 27.03.03 - 11:01:31
@Performance

... das klappt aber nur bei jeweils einem Antwortdokument - bei mehreren klappt das nicht...

... da das Kriterium für das Haupdokument nicht bekannt ist, und es sieht mir danach aus, daß die Antwortmaske später zur Antwortmaske gemacht wurde, und daß es bereits manuelle $Ref-Felder gibt, habe ich hier den 2-Agenten-Weg gewählt - man kann das auch in einem Rutsch machen - wenn das Kriterium (Maske?) des Hauptdokumentes eindeutig ist.

... mit dem Weg interessieren mich die Kriterien nicht - funktioniert völlig unabhängig in jeder DB...

ata
Titel: Re:Dokument --> Antwortdokument --> $REF
Beitrag von: Performance am 27.03.03 - 11:05:55
yep ata

hatte auch so verstanden - jeweils 2 doks


*;D*;D*;D* alles wird gut *;D*;D*;D*


cu
Titel: Re:Dokument --> Antwortdokument --> $REF
Beitrag von: Rob Green am 27.03.03 - 11:05:55
(http://mysmilies.no-ip.com/mysmilies/aola.gif)(http://mysmilies.no-ip.com/mysmilies/aola.gif)
(http://mysmilies.no-ip.com/mysmilies/aola.gif)(http://mysmilies.no-ip.com/mysmilies/aola.gif)
(http://mysmilies.no-ip.com/mysmilies/35.gif)(http://mysmilies.no-ip.com/mysmilies/35.gif)(http://mysmilies.no-ip.com/mysmilies/35.gif)(http://mysmilies.no-ip.com/mysmilies/35.gif)
(http://mysmilies.no-ip.com/mysmilies/big.gif)(http://mysmilies.no-ip.com/mysmilies/big.gif)
(http://mysmilies.no-ip.com/mysmilies/Hail.gif)(http://mysmilies.no-ip.com/mysmilies/Hail.gif)(http://mysmilies.no-ip.com/mysmilies/Hail.gif)(http://mysmilies.no-ip.com/mysmilies/Hail.gif)(http://mysmilies.no-ip.com/mysmilies/Hail.gif)(http://mysmilies.no-ip.com/mysmilies/Hail.gif)(http://mysmilies.no-ip.com/mysmilies/Hail.gif)(http://mysmilies.no-ip.com/mysmilies/Hail.gif)(http://mysmilies.no-ip.com/mysmilies/Hail.gif)(http://mysmilies.no-ip.com/mysmilies/Hail.gif)

Titel: Re:Dokument --> Antwortdokument --> $REF
Beitrag von: Performance am 27.03.03 - 11:07:27
und da beschwere sich noch einer über nichtssagende Postings  ::) ::) ::) ::) ::)

cu
Titel: Re:Dokument --> Antwortdokument --> $REF
Beitrag von: Rob Green am 27.03.03 - 11:08:09
 ;D
Titel: Re:Dokument --> Antwortdokument --> $REF
Beitrag von: ata am 27.03.03 - 11:34:03
@Performance

... ich hatte immer im Kopf, daß es mehrere Childs sein können...   ;)

@Rob

... wenn jetzt noch der große Smily rechts mit dem Auge zwinkern könnte, dann wäre das der Hit...  ;D ;D ;D

ata