gefilterter Lookup auf Kontakte --> Übernahme der Firma bei Neuanlage

30/01/2009 - 14:41 von Benjamin Hauser | Report spam
Hallo Zusammen,

folgendes Problem:
Ich habe in der Serviceaktivitàt eine Verknüpfung zu den Kontakten
drin. Dieser Lookup ist auf die Verknüpfte Firma zur Serviceaktivitàt
gefiltert.


erstelle die Firma direkt mit übernommen wird, auf die ich zuvor
gefiltert habe.


Viele Grüße
Benni
 

Lesen sie die antworten

#1 Michael Sulz
31/01/2009 - 14:18 | Warnen spam
Hallo Benni,

dazu musst du über die Webservices gehen. Ich habe mal eine gutes Beispiel
im WEb gefunden, weis aber leider nicht mehr wo, so das ich dir hier einfach
den kompletten Code bereitstelle. Du musst es nur für deine Zwecke entsprechend
anpassen

<SNIP>
Zuerst werden die beiden Funktionen GetByService und GetPropertyValue geladen,
um den grundsàtzlichen Zugriff auf den Wedienst zu ermöglichen.
Anschließend wird aus dem Lookup der übergeordneten Firma die GUID der übergeordneten
Firma ermittelt um dann mit dieser GUID das Feld telephone1 zu holen und
anschließend zuzuweisen.

Die beiden Funktionen sollten nicht für dieses eine Feld verwendet werden,
sondern bei Bedarf bereits mit dem Laden des CRM geladen werden.

// Funktion für den Zugriff auf den Webservice
GetByService = function(entityName,conditionAttribute,conditionId,conditionType)
{
if ( conditionType==null )
{
conditionType="guid";
}


// assembles XML request for service call
var xml = "" +
"<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
"<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\"
xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">"
+
" <soap:Body>" +
" <query xmlns:q1=\"http://schemas.microsoft.com/crm/2006/Query\" xsi:type=\"q1:QueryExpression\"
xmlns=\"http://schemas.microsoft.com/crm/2006/WebServices\">" +
" <q1:EntityName>"+entityName+"</q1:EntityName>" +
" <q1:ColumnSet xsi:type=\"q1:AllColumns\" />" +
" <q1:Distinct>false</q1:Distinct>" +
" <q1:Criteria>" +
" <q1:FilterOperator>And</q1:FilterOperator>" +
" <q1:Conditions>" +
" <q1:Condition>" +
" <q1:AttributeName>"+conditionAttribute+"</q1:AttributeName>" +
" <q1:Operator>Equal</q1:Operator>" +
" <q1:Values>" +
" <q1:Value xmlns:q2=\"http://microsoft.com/wsdl/types/\" xsi:type=\"q2:"+conditionType+"\">"+conditionId+"</q1:Value>"
+
" </q1:Values>" +
" </q1:Condition>" +
" </q1:Conditions>" +
" </q1:Criteria>" +
" </query>" +
" </soap:Body>" +
"</soap:Envelope>" +
"";

// retrieve response
var xmlHttpRequest = new ActiveXObject("Msxml2.XMLHTTP");
xmlHttpRequest.Open("POST", "/mscrmservices/2006/CrmService.asmx", false);
xmlHttpRequest.setRequestHeader("SOAPAction","http://schemas.microsoft.com/crm/20...iple");
xmlHttpRequest.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
xmlHttpRequest.setRequestHeader("Content-Length", xml.length);
xmlHttpRequest.send(xml);
var doc = xmlHttpRequest.responseXML;
return doc;
}

GetPropertyValue = function(entityXML,propertyName)
{
// adds in "q1:" for mental light-weights like me :)
if ( propertyName.indexOf("q1:")<0 )
{
propertyName = "q1:"+propertyName;
}

// gathers property values in arrray by iterating through BusinessEntity
nodes
var propertyValues=new Array();
var valueCount=0;

var bE = entityXML.selectNodes("//BusinessEntities");
for (var i = 0; i < bE.length; i++)
{
var beTmp = bE[i];
var bEntities = beTmp.selectNodes("//BusinessEntity");
for ( var k=0;k<bEntities.length; k++)
{
if ( bEntities[k].selectSingleNode(propertyName)!=null && bEntities[k].selectSingleNode(propertyName).text!=null
)
{
var propertyValue = bEntities[k].selectSingleNode(propertyName).text;
propertyValues[valueCount] = propertyValue;
}
else
{
propertyValues[valueCount]="";
}
valueCount++;
}
}

return propertyValues;
}

// Die ID der übergeordneten Firma ermitteln
var lookup = crmForm.all.parentaccountid.DataValue;

if (lookup[0] != null) {
var theID = lookup[0].id
}

// Jetzt die Telefonnummer aus der übergeordneten Firma mit dem Webdienst
holen
var myObject = GetByService("account","accountid",theID);

var myTelephoneNumber = GetPropertyValue(myObject,"telephone1");

crmForm.all.telephone1.DataValue = myTelephoneNumber.toString();

</SNIP>


mit freundlichen Grüßen

Michael Sulz

Ähnliche fragen