Das Notes Forum

Domino 9 und frühere Versionen => ND7: Entwicklung => Thema gestartet von: botschi am 10.08.07 - 09:15:52

Titel: Session.Adressbooks, was bekommt man zurük?
Beitrag von: botschi am 10.08.07 - 09:15:52
Hallo,

wir haben einen Kunden, der greift über eine Leitung auf unseren Notesserver zu- also keine Webapplikation.

Wenn ich nun mit Notessession.Adressbooks alle unsere Adressbücher nach einem bestimmten Personendokument durchsuchen möchte, was bekommt der Kunde für Adressbücher zurück? UNsere oder seine? Der Kunde hat Lesezugriff auf unsere Adressbücher.
Wenn ich es debugge, bekomme ich alle öffentlichen Adressbücher unserer Domäne zurück, der Kunde auch?

Matthias
Titel: Re: Session.Adressbooks, was bekommt man zurük?
Beitrag von: Driri am 10.08.07 - 09:19:35
Ich würde sagen, kommt darauf an, wo das Script läuft.

Wenn das Script auf eurem Server läuft, würde es auch eure Adreßbücher liefern, läuft das Script auf dem Client des Kunden, müßte es die beim Kunden konfigurierten Adreßbücher liefern.
Titel: Re: Session.Adressbooks, was bekommt man zurük?
Beitrag von: botschi am 10.08.07 - 09:21:15
Also die DB liegt auf unserem Server und der Code ist in einer Bibliothek, also kein Agent der aufgerufen wird.
Wo läuft denn dann das Script???

Matthias
Titel: Re: Session.Adressbooks, was bekommt man zurük?
Beitrag von: m3 am 10.08.07 - 09:21:23
1) Auch ein Webclient greift über eine "Leitung" zu. ;)

2) Die Antwort auf Deine Frage steht doch eh in der Designer-Hilfe (http://www.lotus.com/ldd/doc/domino_notes/7.0/help7_designer.nsf/f4b82fbb75e942a6852566ac0037f284/02a707852bd9b6f58525704a00410212?OpenDocument):
Zitat
If the program runs on a workstation, this property includes Domino Directories, directory catalogs, and Personal Address Books. If the program runs on a server, this property includes only Domino Directories and directory catalogs on the server.
Titel: Re: Session.Adressbooks, was bekommt man zurük?
Beitrag von: botschi am 10.08.07 - 09:56:50
Danke für eure Antworten.
Warum findet diese Zeile dann das Personendokument nicht?
Set ivAdressview = book.GetView( "($VIMPeople)" )
Set ivPersonendok = ivAdressview.GetDocumentByKey( ivName.Abbreviated)

In ivName steht "Hans Dampf/Firma".
Ich habe hinter "ivName.Abbreviated" ein true gesetzt, also
Set ivPersonendok = ivAdressview.GetDocumentByKey( ivName.Abbreviated, true)

Hoffentlich bringt es was, ich kann den Zugriff des Kunden hier nicht simulieren und bin auf ihn angewiesen- was es nicht leichter macht... Bei mir gehts auch ohne das true.

Matthias
Titel: Re: Session.Adressbooks, was bekommt man zurük?
Beitrag von: m3 am 10.08.07 - 10:09:18
Code
Set ivAdressview = book.GetView( "($VIMPeople)" )
Set ivPersonendok = ivAdressview.GetDocumentByKey( ivName.Abbreviated)

Ev. ist "book" nicht die "korrekte" Datenbank?

Prüfst Du in Deinem Code, ob Du
a) am richtigen Server
b) in der richtigen DB
bist?
Titel: Re: Session.Adressbooks, was bekommt man zurük?
Beitrag von: botschi am 10.08.07 - 10:17:09
Das ist der Schnipsel:

ivAdressbooks = s.AddressBooks
   Stop
   Forall personen In SendenAn
      
      Forall book In ivAdressbooks
         
             ' alle adressbücher durchsuchen und die
         ' internetadresse ermitteln
         If ( book.IsPublicAddressBook )  Then
            
            Call book.Open( "", "" )
            
            Set ivAdressview = book.GetView( "($VIMPeople)" )
            
            ' namensumwandlung
            ivFormel = |@left("|& personen &|";"@")|
            ivEval = Evaluate(ivFormel)
            
            Set ivName = s.CreateName(ivEval(0))
            Set ivPersonendok = ivAdressview.GetDocumentByKey( ivName.Abbreviated, True )
            
            ' die interne adresse wird durch die internetadresse ersetzt
            If Not ivPersonendok Is Nothing Then
               
               ivEmpfaenger(Ubound(ivEmpfaenger)) = ivPersonendok.InternetAddress(0)
               Exit Forall
            End If
            
         End If
      End Forall

Aus welchem Adressbuch und von welchem Server das Personendokument geholt wird, ist mir eigentlich egal (wir haben mehrere öffentliche Adressbücher). Da der Kunde das Personendok nicht findet, dachte ich halt der Code liefert seine Adressbücher zurück und da findet er natürlich das Personendok nicht.

Matthias
Titel: Re: Session.Adressbooks, was bekommt man zurük?
Beitrag von: m3 am 10.08.07 - 10:27:13
Also ICH würde mir (in der IsNothing Abfrage) ivEval(0) und den Server, DB sowie Viewnamen in ein Log ausgeben lassen und dann mal schaun, was da steht, wenn der Kunden die Funktion aufruft.

Aus dem Bauch heraus würde ich sagen, dass der Namen nicht "passt".
Titel: Re: Session.Adressbooks, was bekommt man zurük?
Beitrag von: botschi am 10.08.07 - 15:21:51
Das mit dem Protokoll ist generell ne gute Idee, aber war mir jetzt zu heikel, am offenen Herzen an der DB zu programmieren. Ich habs aufgenommen, sodass wir das im nächsten Release dann einbauen werden.

Mittlerweile kommen die Mails auch an. Ich bin von dem "ivAdressbooks = s.AddressBooks" weg und habe direkt den Pfad zu dem Adressbuch angegeben mit "Set Adressbuch = New NotesDatabase( gvTTS.Server, "names.nsf" )".
Ich habe das Gefühl, über die Session werden irgendwelche Adressbücher zurückgegeben, aber nicht die, die wir brauchten...

Noch schlimmer finde ich, dass die Mailversendung (mit den gleichen internen Adressen) früher mit @Mailsend erfolgte und da wurden die Mails zugestellt. Seitdem wir das auf Script umgestellt haben, hatten wir das Problem. Deswegen ermittel ich jetzt aus dem Adressbuch die Internetadresse... Was macht die Formel anders?

Jedenfalls vielen Dank für eure Aufmerksamkeit!

Matthias
Titel: Re: Session.Adressbooks, was bekommt man zurük?
Beitrag von: koehlerbv am 10.08.07 - 15:26:20
Die Addressbooks property gibt immer alle Adressbücher (public & private) zurück, die dem ausführenden Benutzer bzw. Server bekannt sind.
In dem Kontext, wie Du es gemacht hast, sind es immer die Adressbücher, die der Client (in der aktuellen AU) kennt. Bekannt sind genau die Adressbücher, die der Benutzer auch über den Adress-Dialog auswählen kann.

Bernhard
Titel: Re: Session.Adressbooks, was bekommt man zurük?
Beitrag von: botschi am 10.08.07 - 15:30:22
Ahhh.
Dann bekommt der Kunde halt "seine" Adressbücher zurück und nicht unsere. Deswegen hat er das Personendokument auch nicht gefunden.
Ich gehe stark davon aus, wenn der Kunde den Adress-Dialog aufruft, dass er nicht unsere Adressbücher zur Auswahl hat?
Nur zum Verständnis...

Matthias
Titel: Re: Session.Adressbooks, was bekommt man zurük?
Beitrag von: koehlerbv am 10.08.07 - 15:33:03
Zumindest Eure Server-NAMES.NSF bekommt er zurück - wenn er in einer entsprechenden AU ist. Sonst kommt es darauf an, was über DA oder DC oder gar über die NOTES.INI eingebunden ist.
Es spielt dabei auch keinerlei Rolle, ob die DB mit dem Programm auf dem Server liegt oder lokal.

Bernhard
Titel: Re: Session.Adressbooks, was bekommt man zurük?
Beitrag von: botschi am 10.08.07 - 15:38:37
Tja, das wüsste ich auch manchmal gerne.
Die haben einen Terminalclient und nutzen Notes in diesem Kiosk-Modus... Das ist ja recht wild, ohne Menüleiste und ohne rechte Maustaste (haben die sogar nur einen Tab?) usw.

Was da also konfiguriert ist und wie sich son Ding verhält, würde mich auch interessieren. Da bin ich mit dem direkten Pfad zu unserem Adressbuch wohl auf der sichersten aller Seiten.

Matthias
Titel: Re: Session.Adressbooks, was bekommt man zurük?
Beitrag von: koehlerbv am 10.08.07 - 15:43:22
Der Kiosk-Mode tut da nix zur Sache - der braucht auch 'ne AU  ;)

Aber mit Deiner jetzigen Lösung bist Du auf jedem Fall auf einem sicheren Weg!

Bernhard