Das Notes Forum
Domino 9 und frühere Versionen => ND7: Entwicklung => Thema gestartet von: Trudi am 12.08.08 - 20:26:03
-
Hallo,
ein externer Berater hatte mal ein Script (Agent) in unserem NAB geschrieben, da ich aber kein großer Entwickler bin habe ich ein paar Fragen dazu.
Die user bekamen eine Info Mail, in der ein solcherLink war:
notes:///C1256FF60044C418/C7A4040F19B6662AC125713E003F66FF/607175AB03EF7205C1256FF7003ED802
Daraufhin kamen der User in diese Maske:
siehe Bild Maske
Diese hat er dann ausgefüllt und abgespeichert und schon waren im NAB sein Personendokument gepflegt.
So da ich den netten Herren nicht mehr fragen kann, möchte ich gerne Wissen, wie komme ich an die Maske, die muss doch im NAB sein. Ich muss diese noch ergänzen.
Hier das Script:
Public Sub AgentControl()
On Error Goto LabelError
Const CheckFormName = "Person"
Const CheckEmptyFieldName = "XXOfficePhoneNumber"
Const FieldNameSendTo = "FullName"
Const ZimsSpecialViewName = "(PEform)"
Dim Session As NotesSession, IsSessionOnline As Integer
Dim DB As NotesDatabase, FormView As NotesView
Dim DBCol As NotesDocumentCollection, DBDoc As NotesDocument
Dim DocCounter As Integer, MailCounter As Integer, IgnoreCounter As Integer
Dim MailDoc As NotesDocument, MailDocBodyItem As Variant
Dim SendTo As String, CheckFormValue As String, CheckEmptyFieldValue As String
Dim PicView As NotesView, PicDoc As NotesDocument
Dim PicDocRTItem As NotesRichTextItem
Set Session = New NotesSession
IsSessionOnline = Not Session.IsOnServer
Set DB = Session.CurrentDatabase
Set PicView = DB.GetView("(BodyPic)")
Set PicDoc = PicView.GetFirstDocument
Set PicDocRTItem = PicDoc.GetFirstItem("Body")
Set FormView = DB.GetView(ZimsSpecialViewName)
If FormView Is Nothing Then
Call SUBAgentLOG(("Ansicht """ & ZimsSpecialViewName & """ nicht gefunden - Abbruch!!"), IsSessionOnline)
Exit Sub
End If
Set DBCol = DB.UnprocessedDocuments
Set DBDoc = DBCol.GetFirstDocument()
Do
If DBDoc Is Nothing Then Exit Do
DocCounter = (DocCounter + 1)
CheckFormValue = GetDocValues(DBDoc, "Type", 0)
CheckEmptyFieldValue = GetDocValues(DBDoc, CheckEmptyFieldName, 0)
SendTo = GetDocValues(DBDoc, FieldNameSendTo, 0)
If Not (CheckFormValue = CheckFormName) Or Not (CheckEmptyFieldValue = "") Or SendTo = "" Then
IgnoreCounter = (IgnoreCounter + 1)
Goto LabelLoop
End If
Set MailDoc = New NotesDocument(DB)
Set MailDocBodyItem = New NotesRichTextItem (MailDoc, "Body")
Call MailDocBodyItem.AppendText("Sehr geehrte Damen, sehr geehrte Herren,")
Call MailDocBodyItem.AddNewLine(2)
Call MailDocBodyItem.AppendText("es ist geplant das Domino Directory als zentrale Kommunikationsdatenbank zu verwenden. Bitte aktualisieren Sie hierzu Ihre Kontaktinformationen. ")
Call MailDocBodyItem.AddNewLine(2)
Call MailDocBodyItem.AppendText("Bitte verwenden Sie folgenden Link um Ihre Daten zu aktualisieren. Vielen Dank für Ihre Mithilfe. ")
Call MailDocBodyItem.AddNewLine(2)
Call MailDocBodyItem.AppendText(("notes:///" & DB.ReplicaID & "/" & FormView.UniversalID & "/" & DBDoc.UniversalID & " "))
Call MailDocBodyItem.AddNewLine(2)
Call MailDocBodyItem.AppendText("Mit freundlichen Grüßen,")
Call MailDocBodyItem.AddNewLine(1)
Call MailDocBodyItem.AppendText("Ihre IT-Administration")
Call MailDocBodyItem.AddNewLine(2)
Call MailDocBodyItem.AppendText("Hotline +49 211 222")
REM Call MailDocBodyItem.AppendRTItem(PicDocRTItem)
MailDoc.SendTo = SendTo
MailDoc.Form = "Memo"
MailDoc.DeliveryReport = "N"
MailDoc.Importance = "1"
MailDoc.DeliveryPriority = "H"
MailDoc.Subject = ("Ihre Kontaktdaten im Domino Directory")
On Error Goto LabelMailSendError
Call MailDoc.Send(0)
MailCounter = (MailCounter + 1)
LabelLoop:
On Error Goto LabelError
Set DBDoc = DBCol.GetNextDocument(DBDoc)
Loop
Call SUBAgentLOG(("OK!! // Gelesene Dokumente = " & _
Cstr(DocCounter) & " // ... davon ignoriert = " & _
Cstr(IgnoreCounter) & " // Versendete Mails = " & _
Cstr(MailCounter)), IsSessionOnline)
Exit Sub
LabelMailSendError:
IgnoreCounter = (IgnoreCounter + 1)
Resume LabelLoop
LabelError:
Call SUBAgentLOG(("Unerwarteter Fehler in Routine ""AgentControl"": Zeile " & Trim$(Cstr(Erl)) & _
"; Fehler = " & Trim$(Cstr(Err)) & " --> " & Error$(Err)), IsSessionOnline)
Resume LabelExit
LabelExit:
End Sub
und wie kann ich das Script erst selbst testen ?
Danke vorab für eure Hilfe !
LG Trudi
-
Ich würde mir einfach mal die Maske Person ansehen, siehe
Const CheckFormName = "Person"
Zum Senden an Dich selber passe doch mal die Zeile
MailDoc.SendTo = SendTo
an.
-
Nicht nur der Code ist ... "unschön", auch das Verfahren ist mehr als bedenklich für den offensichtlich angestrebten Zweck.
Wenn man sich durch den mistigen Code durchwuselt, dann bekommt man den Eindruck, dass der Code in einer anderen DB läuft (der dann das DD bedient) - das wäre zumindest zu hoffen.
Ansonsten verweist der Code tatsächlich Dokumente mit der Maske "Person" und das würde heissen, dass da ein noch massiverer Eingriff ins Domino Directory stattgefunden hat. Spätestens, wenn dem so, ist dann solltet Ihr Euch Hilfe holen (und keinen "externen Berater", der ein "Programmierer" auf Praktikantenniveau gewesen ist).
Bernhard
PS: Grausam, wenn man sowas sehen muss und mit was manche so ihr Geld "verdienen" ...
-
Nicht nur der Code ist ... "unschön", auch das Verfahren ist mehr als bedenklich für den offensichtlich angestrebten Zweck.
Wenn man sich durch den mistigen Code durchwuselt, dann bekommt man den Eindruck, dass der Code in einer anderen DB läuft (der dann das DD bedient) - das wäre zumindest zu hoffen.
Ansonsten verweist der Code tatsächlich Dokumente mit der Maske "Person" und das würde heissen, dass da ein noch massiverer Eingriff ins Domino Directory stattgefunden hat. Spätestens, wenn dem so, ist dann solltet Ihr Euch Hilfe holen (und keinen "externen Berater", der ein "Programmierer" auf Praktikantenniveau gewesen ist).
Bernhard
PS: Grausam, wenn man sowas sehen muss und mit was manche so ihr Geld "verdienen" ...
ich habe auch zuerst vermutet es würde noch über eine weitere DB funktionieren ich werde morgen mal nach der Maske suchen.
Da ich nicht viel Programmier Kenntnisse habe, meine Frage,ist das Script unschön oder die Art und Weise wie es arbeitet?
Oder wie würde man es richtig machen ?
-
Ich versuche mal, im Rahmen eines Forums entsprechend zu arbeiten. Vorab: Ich habe den Code gerade mal so überflogen und werde mich bestimmt nicht tiefergehend im Forum damit beschäftigen.
1) Der Code ist in einer Art und Weise geschrieben, der zahlreichen Regeln verstösst.
2) Der Code nimmt als Auswahlkiriterium für die Mails nur die fehlende Büro-Telefonnummer her.
3) Der Code hat kein ErrorHandling.
4) Der Code macht es anderen personen unnötig schwer, in nachzuvollziehen.
Wichtiger aber: Wo hast Du den Agent gefunden? Im Domino Directory? Wenn ich im Ausgangspost Deine einleitenden Worte lese, dann steht er tatsächlich im Domino Directory. Und dann ist er kreuzgefährlich und verstösst gegen noch viel mehr Regeln.
Und jetzt zur alles entscheidenden Frage: Wie würde man es richtig machen? Das wird Dir als Nicht-Programmierer hier niemand erklären, weil dann müsste man den Job (richtig) machen, den der "externe Berater" versaubüdelt hat.
Ich habe für so etwas eine separate DB bereit gestellt, in der der User sich "selber pflegen" kann (und die noch etliche weitere Informationen speichert von Bild bis zu alternativen Adressangaben und Skills und ... - all das zeugs, was im DD nix zu suchen hat). Und diese DB tauscht sich dann periodisch in den DD-relevanten Angaben mit dem DD ab. Das wichtigste: Das erfordert keinen Eingriff in das Design des DDs, und den User braucht man gar keinen (Schreib-)Zugriff auf das DD zu geben.
Bernhard
-
Hallo Bernhard,
Trudi hat mir eine PN geschickt und die interpretiere ich so, dass der Agent im DD hängt.
Habe ihr nochmal deutlich gesagt, sie soll die Finger davon lassen soll und sich einen kundigen Externen holen soll.
Schönen Abend noch,
Axel
-
Hallo Axel,
PN habe ich auch bekommen (was aber in diesem Falle alles andere als sinnlos war). Siehe meine zweite Antwort - ich vermute auch, dass der Agent im DD liegt. Und dann wird der Code nicht nur mistig, sondern auch gefährlich.
Bernhard