22. Oktober 2012 14:17
Hallo Zusammen
Ich bin noch etwas neu in Navision und habe folgende Frage. Beim Migrieren von Codeteilen aus NAV2009 nach NAV2013 hab ich die Funktion ShorUserID (Codeunit Login Management CU418) entdeckt und kann nicht ganz folgen was diese macht:
IF STRPOS(UserID,'\') IN [0,STRLEN(UserID)] THEN
IF STRLEN(UserID) <= 20 THEN
EXIT(UserID)
ELSE
EXIT('')
ELSE
EXIT(COPYSTR(UserID,STRPOS(UserID,'\') + 1,20));[/i][/i]
Sollte die nicht eher folgendermassen aussehen?
IF STRPOS(UserID,'\') IN [0,STRLEN(UserID)] THEN
EXIT(COPYSTR(UserID,STRPOS(UserID,'\') + 1));
ELSE
IF STRLEN(UserID) <= 20 THEN
EXIT(UserID)
ELSE EXIT('') [/i]
Für Hinweise und Erklärungen bin ich euch sehr dankbar!
Liebe Grüsse
Zuletzt geändert von martin77 am 24. Oktober 2012 14:24, insgesamt 2-mal geändert.
22. Oktober 2012 14:26
Hallo,
die macht aus 'Domäne\Userid' nur 'UserId'.
Gruß, Fiddi
22. Oktober 2012 14:33
Hallo Fiddi
Vielen Dank für Deine rasche Antwort. Dass Sie das macht denke ich mir, aber was ich nicht verstehe ist der Aufbau der Funktion...
Die erste Zeile prüf ob ein '\' vorkommt....falls keines vorkommt macht Sie die letzte Zeile...EXIT(COPYSTR(UserID,STRPOS(UserID,'\') + 1,20))...das geht ja dann gar nicht, oder sehe ich das falsch?
Danke für Deine Unterstützung im Voraus!
IF STRPOS(UserID,'\') IN [0,STRLEN(UserID)] THEN
IF STRLEN(UserID) <= 20 THEN
EXIT(UserID)
ELSE
EXIT('')
ELSE
EXIT(COPYSTR(UserID,STRPOS(UserID,'\') + 1,20));[/i][/i]
22. Oktober 2012 14:42
falls keines vorkommt macht Sie die letzte Zeile
Nein, falls
eines vorkommt geht er in die letzte Zeile. Den true Teil führt er nur aus, wenn Strpos(UserId,'\') =0 (nicht vorhanden) oder Strlen(UserId) (das letzte Zeichen ist, sprich nur die Domäne ist)
Gruß, Fiddi
22. Oktober 2012 14:48
Manchmal dauert es etwas länger...
aber jetzt hab ich's verstanden
Vielen Dank!
Gruss, Martin
22. Oktober 2012 14:56
Muss mal blöd fragen: Wofür brauch man das?
Ist es nicht eher problematisch nur auf den Usernamen ohnen Domain zu kürzen? Im AD kann man ja schließlich Vertrauensstellungen aufbauen, womit theoretisch zwei User mit gleichem Namen aber unterschiedlicher Domain (Dom1\hmeier und dom2\hmeier) aufgrund von Gruppenrechten Rechte in einem AD/SQL-Server/NAV haben könnten und somit nicht mehr zu unterscheiden wären.
Oder besteht da keine Gefahr?
Volker
22. Oktober 2012 14:58
Muss mal blöd fragen: Wofür brauch man das?
das war in 2009 aber noch anders.
Gruß, Fiddi
22. Oktober 2012 15:10
vsnase hat geschrieben:Muss mal blöd fragen: Wofür brauch man das?
Ist es nicht eher problematisch nur auf den Usernamen ohnen Domain zu kürzen? Im AD kann man ja schließlich Vertrauensstellungen aufbauen, womit theoretisch zwei User mit gleichem Namen aber unterschiedlicher Domain (Dom1\hmeier und dom2\hmeier) aufgrund von Gruppenrechten Rechte in einem AD/SQL-Server/NAV haben könnten und somit nicht mehr zu unterscheiden wären.
Oder besteht da keine Gefahr?
Volker
Ein Geschäft mit mehr als einer Domäne (mal DMZ aussen vor) sind wohl für NAV zu groß ;)
23. Oktober 2012 08:26
Also ich finde das nicht ganz so weit hergeholt. Es gibt ja wohl genug Firmen, die international arbeiten und deshalb schon mehrere Standorte haben, was manche auch über verschiedene Domains lösen. Dann gibt es ja auch noch Firmenkäufe/-zusammenschlüsse, bei denen (wenigstens zeitweise) mehrere bestehende Domains verbunden werden müssen. Das soll man mit NAV nicht machen können? Oder dafür ist NAV zu klein bzw. die Firma zu groß? Nach meinem Kenntnisstand wird NAV ja auch bei Firmen mit mehreren Mrd. Umsatz eingesetzt. Da paßt was nicht.
Volker
23. Oktober 2012 09:25
@vsnase:
Das Problem tritt ja nur auf, wenn du Benutzer 'Domäne1\Müller' und 'Domäne2\Müller' hast.
Gruß,Fiddi
23. Oktober 2012 09:26
fiddi hat geschrieben:@vsnase:
Das Problem tritt ja nur auf, wenn du Benutzer 'Domäne1\Müller' und 'Domäne2\Müller' hast.
Gruß,Fiddi
Deswegen werden in größeren Unternehmen öfters die Domänenzugehörigkeit im Accountnamen selbst integriert. Somit verhindert man diese Art von "Kollision".
Powered by phpBB © phpBB Group.
phpBB Mobile / SEO by Artodia.