Hi,
ich verwende in einem ausführlicheren Script im Ereigniss des abzufragenden Feldes, dessen Inhalt geändert werden muss, damit das Datumsfeld sich aktualisiert unter anderem folgende Strings:
function getUserId()
{
try
{
var command = new RemoteCommand("SystemUser", "WhoAmI", "/MSCRMServices/");
var oResult = command.Execute();
if (oResult.Success)
{
return oResult.ReturnValue.UserId;
}
}
catch(e)
{
alert("Error while retrieving userid.");
}
return null;
}
function getUserRoles(userId)
{
try
{
var command = new RemoteCommand("UserManager", "GetUserRoles");
command.SetParameter("userIds", "<guid>" + userId + "</guid>");
var oResult = command.Execute();
if (oResult.Success)
{
return oResult.ReturnValue;
}
}
catch(e)
{
alert("Error while retrieving roles.");
}
return null;
}
function userHasRole(userId, roleName)
{
result = getUserRoles(userId);
if (result != null)
{
var oXml = new ActiveXObject("Microsoft.XMLDOM");
oXml.resolveExternals = false;
oXml.async = false;
oXml.loadXML(result);
roleNode = oXml.selectSingleNode("/roles/role[name='" + roleName + "']");
if (roleNode != null)
{
if (roleNode.selectSingleNode("roleid[@checked='true']") != null)
return true;
}
}
return false;
}
function currentUserHasRole(roleName)
{
userId = getUserId();
return userHasRole(userId, roleName);
}
//------------------------------------------------------------------------------------------------------
crmForm.all.new_Attributname_Von_Datumsfeld.DataValue = new Date();
Ich frage darin noch die Userrollen ab und mache diese zur Bedingung.
Das sieht dann so aus:
var oField = crmForm.all.new_Attributname;
if(currentUserHasRole(Schmidt))
{
oField.DataValue = "Schmidt"
crmForm.all.new_verschwiegenheitversandtdatum.DataValue = new Date();
}
Vielleicht klappt es aber auch ohne dieser Abfrage?
Ich weiß auch nicht, ob das die beste Lösung ist. Habe noch nichts besseres gefunden - leider.
Gruß
Gisa (gwi)