Das Notes Forum

Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: Hans Meiser am 10.03.11 - 14:31:48

Titel: @ExpandNameList löst keine Gruppen auf
Beitrag von: Hans Meiser am 10.03.11 - 14:31:48
Hallo zusammen,

in der Standard Ressourcen-Schablone wird mit dem undokumentierten Befehl @ExpandNameList u.a. in der lib SharedFunctions - Sub GetResourceInfo gearbeitet: tmparr = Evaluate(|@ExpandNameList( @Subset(@DbName;1) ; "| + tmplist(i) +|")|)

Bei mit mit einem Designer-Client geht es. Beim Kunden mit einem einfachen Client löst @ExpandNameList keine Gruppen auf. Wir hab es mit verschiedensten Schreibweise und Gruppen auf verschiedenen Server und von lokal getestet getestet, z.B.:
- @ExpandNameList( _server; _group);
- @ExpandNameList( _server:"names.nsf"; _group);
- @ExpandNameList( @Subset(@DbName;1) ;  _group);
- @ExpandNameList(@LocationGetInfo([HomeServer]); _group);

Die meisten Gruppen-Namen beginnen mit einem $ und sind alle im Adressbuch vorhanden. Mit eknori Funktion können sie ausgelesen werden:
http://www.eknori.de/2008-04-27/is-user-a-member-of-a-nested-group

Dieser undokumeniterte Befehl wird auch im Mail-Template verwendet und müsste doch funktionieren.
Hat jemand eine Idee woran es liegen kann? (Hab mit google nichts gefunden)

Viele Grüße
 
 




Titel: Re: @ExpandNameList löst keine Gruppen auf
Beitrag von: ata am 10.03.11 - 14:38:37
... so weit ich das erkennen konnte, lag es an dem Gruppentyp...

Toni
Titel: Re: @ExpandNameList löst keine Gruppen auf
Beitrag von: MLe56 am 10.03.11 - 14:49:08
Wenn es sich um den Gruppentyp "Nur Zugriffskontrolliste" handelt, geht das nicht.

M. Leonhardt
Titel: Re: @ExpandNameList löst keine Gruppen auf
Beitrag von: Hans Meiser am 10.03.11 - 15:22:26
Der Gruppentyp ist bei den Gruppen immer "Multi-purpose" - trotzdem werden sie nicht aufgelöst
Titel: Re: @ExpandNameList löst keine Gruppen auf
Beitrag von: ata am 10.03.11 - 16:37:47
... habt ihr nur "Multi Purpose"-Gruppen, oder sind in diesen Gruppen auch ACL-Gruppen enthalten?

Toni
Titel: Re: @ExpandNameList löst keine Gruppen auf
Beitrag von: Hans Meiser am 10.03.11 - 16:43:16
bei den getesteten "Multi-purpose" Gruppe stehen nur Personen drin, keine weitere (ACL oder sonstige) Gruppen
Titel: Re: @ExpandNameList löst keine Gruppen auf
Beitrag von: pram am 10.03.11 - 19:34:41
Ich könnte mir vorstellen, dass man dem Evaluate ein Kontextdokument aus der aktuellen DB übergeben muss.

und noch was, bitte in Evaluates keine Strings berechnen
Code
Evaluate(|@ExpandNameList( @Subset(@DbName;1) ; "| + tmplist(i) +|")|)
sondern besser so machen

Code
dim doc as new NotesDocument(db);
doc.data = tmplist(i)
v= Evaluate(|@ExpandNameList( @Subset(@DbName;1) ; data)|,doc)

Grund 1: die Formel wird gleich vorcompiliert (der Designer meckert z.B. beim Speichern schon wenn ein Fehler enthalten ist)

Grund 2: es lässt sich im ersten Beispiel Schadcode einfügen, angenommen tmpList(i) enthält folgende aufzulösende "Gruppe":
Code
dummy");@SetProfileField("admin";"Autoren";"*
(kannst ja mal oben einsetzen was dann für eine Formel ausgefuhrt wird)
Durch Kenntnis der DB könnte man so ein entsprechend präpariertes Dokument einem Admin unterschieben.... nicht auszudenken was dann alles passiert  :-P -> http://xkcd.com/327/ ;)

Gruß
Roland

Titel: Re: @ExpandNameList löst keine Gruppen auf
Beitrag von: Hans Meiser am 11.03.11 - 11:13:22
Hallo Roland,

die Code-Zeile habe ich nicht selber programmiert, sondern sie ist eine Original-Zeile auf dem Lotus Notes Template "StdR7ResourceReservation version 7.03 (05.07.2007)".

Ein Kunde hat auf Basis dieses Ressourcen-Template ein paar Erweiterungen eingebaut (d.h. paar Felder aufgenommen) und nutzt es als eine weitere Raumreservierung-Datenbank. Bei den Räumen arbeitet er mit "Owner restrictions", d.h. nur bestimmte Personen/Gruppen können diese Räume buchen. Das Auflösen der Gruppen über @ExpandNameList funktioniert aber beim Kunden nicht. An der Programmierung für das Auflösen wurden keinerlei Änderungen vorgenommen, d.h. es ist ist immer noch der Original Lotus Notes Template Code.

Als Test habe ich dann einfache @Formel-Buttons mit @ExpandNameList gebaut und dabei festgestellt, dass beim Kunden die Funktion @ExpandNameList gar keine Gruppe auflöst und ich will verstehen warum. Denn ich kann mir nicht vorstellen, dass Lotus ein Ressource-Template erstellt und weltweit mit jedem Server ausliefert und dann funktioniert so ein elementarer Befehl nicht, auch wenn er undokumentiert ist. @ExpandNameList wird übrigens auch im Mail-Template verwendet.

Da muss es doch irgendwelche Restriktionen bei dem Befehl geben...   
Titel: Re: @ExpandNameList löst keine Gruppen auf
Beitrag von: ata am 11.03.11 - 11:45:36
... ich arbeite auch damit, und habe ebenso die Erfahrung abhängig vom Gruppentyp gemacht, daß er nicht alle auflöst. Deshalb habe ich eine Validierung der Auflösung eingbaut, die es dann per Script vervollständigt.

Deine Einschätzung zu IBM muß ich trüben - es ist kaum zu fassen, was sich in den Originalen alles so findet...

Toni
Titel: Re: @ExpandNameList löst keine Gruppen auf
Beitrag von: pram am 11.03.11 - 12:43:15
ExpandNameList funktioniert mit großer Sicherheit dann nicht, wenn das Ergebnis der Auflösung >64K ist.
Im Hinterkopf habe ich auch noch dass es in lokalen Repliken nicht funktioniert, bzw wenn kein Zugriff auf das Adressbuch möglich ist.

Code
die Code-Zeile habe ich nicht selber programmiert, sondern sie ist eine Original-Zeile auf dem Lotus Notes Template "StdR7ResourceReservation version 7.03 (05.07.2007)". 
um so schlimmer  :o muss ich bei Gelegenheit direkt mal einen Exploit basteln ;)

Gruß
Roland