3. Juni 2015 08:16
Hi Dennis,
hier ein Beispiel wie man ein Plugin erstellt:
https://msdn.microsoft.com/de-de/library/gg594416.aspxBeispielCode:
QueryExpression query = new QueryExpression();
query.EntityName = "serviceactivity";
query.ColumnSet = new ColumnSet(true); [Anstatt true kannst du auch die entsprechenden Felder nehmen, ist dir überlassen]
query.Criteria.AddCondition("regardingobjectid", ConditionOptions.Equal, entity.Id);
EntityCollection coll = service.RetrieveMultiple(query);
Int summe = 0;
foreach(Entity ent in coll.Entities)
{
if(((OptionSetValue)ent["statecode"]).Value == 0) [hier deine prüfung auf geschlossen]
{
summe += ent["dauerfeld"]; [hier dein feld eintragen, vllt noch zu einem bestimmten type (int, double,etc) konvertieren
}
}
entity.Summenfeld = summe;
JScriptCode würde in etwa so aussehen:
function SetFields()
// diese Methode dann angeben im OnLoad angeben
{
var lookupObject = Xrm.Page.getAttribute("feldid");
if (lookupObject != null)
{
var lookUpObjectValue = lookupObject.getValue();
if ((lookUpObjectValue != null))
{
var lookupid = lookUpObjectValue[0].id;
}
}
var id = lookupid;
retrieveRecord(id, "ServiceAppointmentSet", retrieveCompleted, null);
}
function retrieveCompleted(data, textStatus, XmlHttpRequest)
{
var servicAct = data;
}
function retrieveRecord(id, odataSetName, successCallback, errorCallback)
{
var context = Xrm.Page.context;
var serverUrl = context.getServerUrl();
var ODATA_ENDPOINT = "/XRMServices/2011/OrganizationData.svc";
if (!id)
{
alert("record id is required.");
return;
}
if (!odataSetName)
{
alert("odataSetName is required.");
return;
}
$.ajax({
type: "GET",
contentType: "application/json; charset=utf-8",
datatype: "json",
url: serverUrl + ODATA_ENDPOINT + "/" + odataSetName + "(guid'" + id + "')",
beforeSend: function (XMLHttpRequest) {
XMLHttpRequest.setRequestHeader("Accept", "application/json");
},
success: function (data, textStatus, XmlHttpRequest) {
if (successCallback) {
successCallback(data.d, textStatus, XmlHttpRequest);
RetrieveMultipleEntities(data.d.results);
}
},
error: function (XmlHttpRequest, textStatus, errorThrown) {
if (errorCallback)
errorCallback(XmlHttpRequest, textStatus, errorThrown);
else
errorHandler(XmlHttpRequest, textStatus, errorThrown);
}
});
}
function RetrieveMultipleEntities(data)
{
var summe = 0;
for(int i = 0; i < data.Length; i++)
{
//hier noch die Prüfung auf den Status alla: var status = data[i].statusfeld; if(status = "0") // aber wie oben deinen Wert setzen
summe += data[i].feld;
}
Xrm.Page.getAttribute(summe).setValue(feld); // trägt in deiner aktuellen Datensatz die Zeit ein
}
Grüße
gE3z