Das Notes Forum

Lotus Notes / Domino 10 => ND10: Administration & Userprobleme => Thema gestartet von: Tode am 07.04.20 - 12:34:40

Titel: INFO: Bug in Feldvalidierung in Gruppenname im 10er Template
Beitrag von: Tode am 07.04.20 - 12:34:40
Manchmal frage ich mich, ob die "großen" an die Systemtemplates nur Azubis ran lassen...

Das 10er pubnames- template lässt das Anlegen / Speichern von Gruppen NICHT zu, wenn der Vorname oder Nachname irgendeines Benutzers dem Gruppennamen entspricht.

Heisst Dein Mitarbeiter also "Hans Hamburg" und Du willst eine Gruppe mit dem namen "Hamburg" anlegen, dann kommt die Meldung, dass Gruppennamen nicht Benutzernamen entsprechen dürfen.

Im 9er Template war das in Ordnung, ist aber fehlgeschlagen, wenn ListName ein MultiValue war, im 11er Template haben sie es wieder korrigiert.

Nur falls mal wer drüber stolpert, dass man plötzlich Gruppen nach einem Template- Update auf 10 nicht mehr speichern kann mit der Meldung "A User name already exists by this name.  Group names are not allowed to match exactly a User name.  Please choose a different Group name."
Titel: Re: INFO: Bug in Feldvalidierung in Gruppenname im 10er Template
Beitrag von: eknori am 07.04.20 - 12:46:13
ist in 11.0.1 auch so.

Allerdings funktioniert Hamburg und Hans Hamburg, nicht aber Hans Hamburg Hans Hamburg
Titel: Re: INFO: Bug in Feldvalidierung in Gruppenname im 10er Template
Beitrag von: oliK am 07.04.20 - 15:33:49
Mich stört eher, dass man es bis heute nicht hinbekommen hat, ein berechnetes Feld einzubauen, das die Mitgliederliste einer Gruppe sortiert im Stil "Nachname, Vorname" zusätzlich anzeigt.
Titel: Re: INFO: Bug in Feldvalidierung in Gruppenname im 10er Template
Beitrag von: Peter Klett am 07.04.20 - 17:09:59
Mich stört eher, dass man es bis heute nicht hinbekommen hat, ein berechnetes Feld einzubauen, das die Mitgliederliste einer Gruppe sortiert im Stil "Nachname, Vorname" zusätzlich anzeigt.
Das liegt vermutlich daran, dass man aus dem Usernamen nicht Vor- und Nachnamen ermitteln kann, ohne über den Usernamen erst das Personendokument zu suchen. Und andere Länder haben da vielleicht auch unterschiedliche Prioritäten, so wird das schwierig allgemeingültig. Bei uns würde eine Sortierung nach Nachnamen wohl eher Verwunderung auslösen, denn man kennt sich eigentlich nur anhand des Vornamen, Nachname ist weniger wichtig.

Hast Du nicht neulich erst geschrieben, dass man die Maildatenbank einfach anpassen kann? Kann man mit dem Adressbuch ja auch. Baue Dir doch eine Aktion, die das Feld sortiert.

Übrigens: Zusätzliches berechnetes Feld bedeutet Halbierung des möglichen Feldinhaltes. Knallt das Dokument heute mit 32 kB in der Mitgliederliste, hättest Du dann zwei Felder zu 16 kB, die zum Aus führen. Es müsste dann Berechnet zur Anzeige sein, und es würde immer beim Öffnen rechnen, lange Liste = lange Laufzeit. Der Ruf nach einem INI-Eintrag, mit dem man das wieder abschalten kann, käme sicherlich schnell hinterher ...
Titel: Re: INFO: Bug in Feldvalidierung in Gruppenname im 10er Template
Beitrag von: Tode am 07.04.20 - 18:27:40
Wen es genauer interessiert:
Ich habe den relevanten Code mal rausgepflückt (leicht verkürzt):

9er Code:
Code
usrname:=@DbLookup("":"NoCache";server:db;"($Users)";ListName;3);
tmpusrname:=@If(@IsError(usrname);"";usrname);

@If( @LowerCase(tmpusrname) = @LowerCase(ListName); L_ERR_MSG3; "");

==> Ein Lookup mit allen Werten aus ListName, wenn nicht @IsError, dann Vergleich der Ergebnisses (Spalte 3 = FullName des Users), wenn identisch, dann Fehler.

10er Code:
Code
tmpusrname := @Transform(ListName; "_x"; @If(@DbLookup("":"NoCache";""; "($Users)"; _x; 3; [FailSilent]) = ""; @Nothing; _x));
@If(tmpusrname != ""; L_ERR_MSG3; "");

==> Pro Wert in ListName ein Lookup mit FAILSILENT- Parameter, aber der Return- Wert aus Spalte 3 wird gar nicht berücksichtigt, sondern direkt der Lookup- Wert in die Variable geschrieben... dieser Wert wird dann mit "" verglichen. Gibt es also IRGENDEINEN Match (mit einem Vornamen, Nachnamen), dann kommt der Fehler...  >:D

11er Code:
Code
tmpusrname := @Transform(@ThisValue; "_x"; @If(@LowerCase(@DbLookup("":"NoCache";""; "($Users)"; _x; 3; [FailSilent])) = @LowerCase(_x); _x; @Nothing));
sMsg := @If(tmpusrname != ""; L_ERR_MSG3; "");

==> Pro Wert in ListName ein Lookup mit Failsilent, das Ergebnis wird direkt mit dem Lookup- Wert verglichen, und nur wenn sie identisch sind, wird etwas zurückgeliefert. Dann kommt die Meldung...

Damit funktioniert der 11er Code so, wie der 9er gedacht war und eben auch für mehrere ListNames, was der 9er nicht konnte (wenn nicht alle ListNames gematcht haben).

Nur eine Nebenbemerkung: Im 9er Code kam die Definition der Variablen "server" und "db" erst in der Zeile NACH dem Lookup, und der Code hat nur zufälligerweise deshalb funktioniert, weil "" : "" im DBLookup identisch ist mit @Subset(@DbName;1) : @Subset(@DbName;-1).