Das Notes Forum

Domino 9 und frühere Versionen => ND9: Entwicklung => Thema gestartet von: poldy06 am 12.01.15 - 16:45:14

Titel: Backend Änderung - Frontend neu öffnen und bearbeiten = Speicherkonflikt
Beitrag von: poldy06 am 12.01.15 - 16:45:14
Guten Tag liebe Notes Entwickler,
vielleicht weiß jemand von Euch Rat.
Mein Kollege hat ein klienes Script geschrieben, dass in das Backend Doc vom aktuellen UiDoc eine Grafik kopiert. Dann speichert, das UiDoc zu macht und erneut öffnet, damit es weiter bearbeitet werden kann.
Soll es dann, bei eingeschaltetem Dokumentlogging, abgespeichert werden, gibt es die Fehlermeldung: "Dokument wurde bereits gespeichert. Wollen Sie einen Speicherkonflickt erstellen?"
Jemand ne Idee warum und wie man das los wird?
Hier der Code dazu:
Dim ws as new NotesUiWorkspace
dim docThis as NotesDocument

....
set  docThis = ws.CurrentDocument.Document

...
Set rtitemN = docThis.GetFirstItem( ZielFeld$ )
If ( rtitemN.Type = RICHTEXT ) Then
         Call ws.CurrentDocument.save
         Set object = rtitemN.EmbedObject( EMBED_ATTACHMENT, "" , CoverPath$ )               
         Call docThis.save( True , False )
         Call ws.CurrentDocument.FieldSetText( "SaveOptions", "0" )
         Call ws.CurrentDocument.close(True)
         Set uidocThisNew = ws.EditDocument( True , docThis , False )
End If

Vielen Dank für Eure Hilfe.
Schönen möglichst trockenen Montagabend
Poldy

Titel: Re: Backend Änderung - Frontend neu öffnen und bearbeiten = Speicherkonflikt
Beitrag von: Tode am 12.01.15 - 16:57:29
Du musst alle Instanzen, die irgendwie auf das aktuelle uidoc verweisen leeren, sonst geht das nicht.
Also:

Code
Dim strUnid as String
strUnid = docThis.Universalid
Call ws.CurrentDocument.FieldSetText( "SaveOptions", "0" )
Call ws.CurrentDocument.close(True)
Delete docThis
Set docThis = ses.CurrentDatabase.GetdocumentByUnid( strUnid )
Set uidocThisNew = ws.EditDocument( True , docThis , False )
Titel: Re: Backend Änderung - Frontend neu öffnen und bearbeiten = Speicherkonflikt
Beitrag von: mn4711 am 13.01.15 - 11:00:59
Hallo Torsten,
ich bin derjenige, der das Coding geschrieben hat. Vielen Dank für diene schnelle Antwort. Den von Dir beschriebenen Weg hatte ich zunächst versucht, leider ohne Erfolg  :-:.  Und gestern Abend, motiviert durch deine Anmerkungen, dann noch einmal, aber ich habe es erneut nicht hinbekommen  :'(.

Jetzt habe ich einfach die Zeile

Call ws.CurrentDocument.save

gelöscht. Danach gab es keine Konflikt-Hinweise beim Speichern, jedoch blieben am Ende die Dokumente gelocked. Im "QueryClose" habe ich dann

If Source.EditMode Then
      If docThis.LockHolders(0) <> "" Then
         Call docThis.UnLock( )
      End If
   End If

Eingefügt und jetzt scheint es geschmeidig zu laufen  :). Komisch mit dem "Dokument Locking" >:D, damit hatte ich bisher vorher noch nie ein Problem gehabt.

Danke für diene Hilfe, VG
Martin