Im CRM ist es möglich via URL ein Formular zum Erfassen eines neuen Datensatzes zu öffnen. Dabei können meisten Felder eines Formulars direkt mit URL-Parameter gesetzt werden. Bsp. zum Setzen des Feldes “Name”:
/main.aspx?etn=account&extraqs=name%3DNew%20Account&pagetype=entityrecord
https://msdn.microsoft.com/en-us/library/gg334375.aspx
Es gibt jedoch Ausnahmen wie bsp. das Feld “RegardingObjectId” auf einer Aktivität-Entität. Dieses Feld kann (wahrscheinlich da es sich um ein ActivityParty handelt) nicht via URL gesetzt werden. Versucht man es trotzdem findet man im CRM-Server-Trace folgenden Fehler:
System.InvalidOperationException: CRM Parameter Filter - Invalid parameter 'regardingobjectidtype=account' in Request.QueryString
Ist das Setzen des Feldes jedoch trotzdem gewünscht, kann mit Form-Parametern gearbeitet werden. Hierzu sind drei Parameter notwendig:
Diese drei Parameter können in der URL dem Formular übergeben werden:
main.aspx?etn=phonecall&newWindow=true&pagetype=entityrecord&extraqs=is_regardingobjectid%3D%7B67D26E69-082B-4F30-B70D-EF202530CD41%7D%26is_regardingobjectidtype%3Daccount%26is_regardingobjectidname%3DCompanyname
Auf dem Formular kann nun mit Hilfe von JavaScript das Feld “RegardingObjectId” gesetzt werden:
function addToPartyListFromFormParameters(propertyName, idBaseName, replaceExisting) {
var queryParams = Xrm.Page.context.getQueryStringParameters();
var idParam = queryParams[idBaseName];
var nameParam = queryParams[idBaseName + "name"];
var typeParam = queryParams[idBaseName + "type"];if (idParam && nameParam && typeParam) {
addToPartyList(propertyName,
{
Id: idParam,
Name: nameParam,
LogicalName: typeParam,
}, replaceExisting
);
return true;
}
return false;
}
Ein möglicher Inhalt wie die Funktion “addToPartyList” aussehen könnte, kann hier gefunden werden:
https://rajeevpentyala.wordpress.com/2012/04/02/get-and-set-partylist-fields-using-jscript/