Domino 9 und frühere Versionen > ND6: Entwicklung

Anwender können Dokument nicht abspeichern, sondern erzeugen ein Konfliktdokumen

(1/4) > >>

DAU-in:

ich habe folgendes Problem:

in einer Webanwendung werden die Attachments in Extradokumenten gespeichert. Auf diese Dokumente gibt es einen Link, es öffnet sich ein neues Fenster und dort gibt es Links:  Öffnen des Attachments  und attachment delete.
Durch Attachment delete wird ein Agent angestossen, der das Dokument labelt für den nächtlichen Löschagenten, und ein feld umsetzen soll, so dass das Attachmentdokument nicht mehr im Hauptdokument angezeigt wird.
Mein Problem: ich selbst kann die Aktion noch ausführen, ich habe Managerrechte auf der Datenbank. Beim ordinären Anwender wird allerdings immer ein Konfliktdokument erstellt, und das Hauptdokument wird nicht verändert, das heisst es wird auch weiterhin unverändert angezeigt. Die Anwender haben alle Editorenrechte + die Rolle ihrer zugehörigen Abteilung. Für das Setzen des Löschlabels sind keine Rollen erforderlich. Auf der Maske für die Attachments sind keine Autorenfelder vorhanden, und wenn, sollten sie keine Auswirkung haben, da ja eh alle Editoren sind. Es ist 'merge conflicts'  in der Maske für Behandlung von Konflikten angegeben.
Mir ist absolut unklar, wodurch die Konfliktdokumente erzeugt werden.
Da diese bei mir nicht auftreten, muss es ja in irgendeiner Form mit den Zugriffsrechten zu tun haben.
Wo kann ich noch suchen?  :-:

koehlerbv:
Xanthi, jetzt bräuchten wir Code. Irgendwas läuft schief, aber was ... Das ist bisher schwer zu sagen.

Bernhard

DAU-in:
Bernhard, ich habe gerade Verstopfung, aber ich stelle den Code dann morgen früh rein.
Ich suche heute abend dann erstmal im Wein nach der Erleuchtung.

pete_bla:
Hi,

muss ich auchnoch etwas Senf dazu geben....
An "Autorenrechten" kann es eigentlich nicht liegen, da du sagst, dass alle Anwender Editor sind, und die nicht für >=Editoren gelten.

ABER: die ACL könnte so eingestellt sein, dass Maximaler-Internetzugriff "Autor" ist, dann müsste es aber auch bei Dir knallen, ausser Du hast wieder eine Autorenrolle.

Und die Geschrichte mit "Konflikte Mischen" ist ja erstmal nur für Replikations-Konflikte...

Ich würde so ins blauer mal auf irgend einen "doppelten-Save" tippen!

Grüsse und lass Dirs munden!
- ich hoff Du bereust das Tröpfchen nicht am nächsten Tag,
Pete(r)

PS: hui hier tippts sichs viel leicher als mit dem VI ... bin wohl grad etwas ungelenk....

DAU-in:
Moin, moin!

Maximaler Internetzugriff ist auf¨'Editor' eingestellt.

Der Agent, der  angestossen wird im WebQueryclose:

Sub Initialize
   ' Instantiate a new Log and open it
   Set currentLog = New NotesLog( "ag_wqs_attachment" )   
   Call currentLog.OpenNotesLog( db.Server, db_log )
   hilog "ag_wqs_attachment"
'   dbg " hier "
   
   If doc.ptAction(0)="SAVEANDEXIT" Then
      Dim qry As String
      Dim subqry As String
      qry=doc.Query_string(0)' Returns the part beginning with '?OpenAgent'
      subqry=Mid(qry,16) 'Returns the part after ?OpenAgent&
      Dim oid As String
      oid=Left(subqry, 32)
   '   dbg "oid: " & oid   
      Dim fn As String
      fn=Mid(subqry, 33)
   '   dbg fn
      doc.section=fn
   '   dbg " hinter section "
      
      Dim var1 As Variant
      var1 =(Evaluate(|@Attachmentnames|,doc))
      Forall x In var1
         dbg " x = " & x
      End Forall
      
      doc.attachmentfilename=Implode(Evaluate(|@Attachmentnames|,doc))
      'doc.attachmentfilename=(Evaluate(|@Attachmentnames|,doc))
      dbg " attachment " & doc.attachmentfilename(0)
      doc.originalsDoc_id=oid
   '   dbg doc.originalsDoc_id(0)
      doc.doc_id=doc.universalid
   '   dbg doc.doc_id(0)
   Else
      dbg " hier im löschen"      
      doc.workcopyowner="nemo"
      dbg " doc.workcopyowner= nemo"
      doc.originalsDoc_id="nemo"
      doc.section="nemo"
      
   End If
   Call doc.save(False,False)
   
   dbg "["+homeurl+"/fm_closewindow?OpenForm]"
   Print "["+homeurl+"/fm_closewindow?OpenForm]"
   byelog "ag_wqs_attachment"
End Sub


Auf der Maske selbst für Deletedoc:

<script language="JavaScript">
function saveAndExit(){
document.getElementById('ptaction').value='SAVEANDEXIT'
var fn=''(Feld);
var oldDiv=opener.document.getElementById('att_'+fn).innerHTML;
var appendVal="<img src='"+"(Feld)"+"'>"+"(FEld)"+"<br>";
opener.document.getElementById('att_'+fn).innerHTML=oldDiv+appendVal;
document.forms[0].submit();
//window.close();
}
;
function deleteDoc()
{
var fn=''(Feld);
var oldDiv=opener.document.getElementById('att_'+fn).innerHTML;
var appendVal="<img src='"+"Feld"+"'>"+"Feld"+"<br>";
opener.document.getElementById('att_'+fn).innerHTML=oldDiv+appendVal;
document.getElementById('ptaction').value='DELETE'
document.forms[0].submit();
//window.close();

}
</script>

Im Hauptdokument werden die Attachmentdokumente folgendermassen über ein FEld mit Durchgangs-HTML angezeigt.
REM {VARIABLEN};

_Klammer:=icon_def_link+"klammer.gif";
_fn:=@RightBack(@ThisName;4);

REM {BUTTON NEUE ATTACHMENTS};
_html:="<button onclick=\"newAttachment('"+_fn+"','"+OriginalsDoc_ID+"')\">New attachment</button>";



REM {LINKLISTE ZU VORHANDENEN ATTACHMENTS};

_html:=_html+"<div id='ATT_"+_fn+"'>";
_LinkListe:=@DbLookup("Notes":"NoCache";"";"Attachments";OriginalsDoc_ID+_fn;4);
_OrgIDListe:=@DbLookup("Notes":"NoCache";"";"Attachments";OriginalsDoc_ID+_fn;2);
_FNListe:=@DbLookup("Notes":"NoCache";"";"Attachments";OriginalsDoc_ID+_fn;3);
_IDListe:=@DbLookup("Notes":"NoCache";"";"Attachments";OriginalsDoc_ID+_fn;5);


@For(i:=1;i<=@Elements(_LinkListe);i:=i+1;
_tmpAttName:=@Subset(@Subset(_LinkListe;i);-1);
_tmpOID:=@Subset(@Subset(_OrgIDListe;i);-1);
_tmpFN:=@Subset(@Subset(_FNListe;i);-1);
_tmpID:=@Subset(@Subset(_IDListe;i);-1);

_link:=homelink+"/ag_eda?OpenAgent&"+_tmpID;
_html:=_html+"<a href='"+_link+"' target='_blank'><img src='"+_Klammer+"'>"+_tmpAttName+"</a><br>"

);
_html:=_html+"</div>";


REM {AUSGABE};
_html


DAs Call doc.save(flase,false9 hatte ich schon mal rausgenommen, aber mit demselben Ergebnis.
Wenn ich mich einlogge, werden die Felder umgesetzt, benutze ich einen der Testuser, entsteht ein Konfliktdokument.
èber dbg kann ich mir werte ausgeben lassen.

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln