20. April 2012 09:37
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Xrm.Sdk;
using Microsoft.Xrm.Sdk.Query;
namespace AutoNumber
{
public class AutoNumber:IPlugin
{
public void Execute(IServiceProvider serviceProvider)
{
// Fordern Sie den Ausführungskontext vom Dienstanbieter an.
Microsoft.Xrm.Sdk.IPluginExecutionContext context = (Microsoft.Xrm.Sdk.IPluginExecutionContext)
serviceProvider.GetService(typeof(Microsoft.Xrm.Sdk.IPluginExecutionContext));// hier ist der Breakpoint
// Die InputParameters-Sammlung enthält alle Informationen, die in der Meldungsanforderung übergeben wurden.
if (context.InputParameters.Contains("Target") &&context.InputParameters["Target"] is Entity)
{
// Fordern Sie die Zielentität von den Eingabeparametern an.
Entity entity = (Entity)context.InputParameters["Target"];
QueryExpression qe = new QueryExpression("lead");
// Rufen Sie das new_autonumber-Feld auf
qe.ColumnSet = new ColumnSet();
qe.ColumnSet.Columns.Add("new_autonumber");
// Sortieren Sie die Datensätze absteigend nach autonumber (höchste autonumber zuerst)
OrderExpression oe = new OrderExpression();
oe.AttributeName = "new_autonumber";
oe.OrderType = OrderType.Descending;
qe.Orders.Add(oe);
// Verwenden Sie Auslagerung, um nur einen Datensatz zurückzugeben
qe.PageInfo = new PagingInfo();
qe.PageInfo.Count = 1;
qe.PageInfo.PageNumber = 1;
qe.PageInfo.PagingCookie = null;
// Fordern Sie den Organisationsdienstverweis an.
IOrganizationServiceFactory serviceFactory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
IOrganizationService service = serviceFactory.CreateOrganizationService(context.UserId);
// Rufen Sie die erste Seite (ein Datensatz) der Leaddatensätze ab
EntityCollection ec = service.RetrieveMultiple(qe);
// Spät gebundene Entität
Entity lead = (Entity)ec[0];
int nextnumber = 1; // Standardmäßiger Anfangswert
// Berechnen Sie den nächsten autonumber-Wert, falls Wert vorhanden
if (lead.Attributes.Contains("new_autonumber"))
nextnumber = (int)lead.Attributes["new_autonumber"] + 1;
// Fügen Sie der Entität die autonumber hinzu
entity.Attributes.Add("new_autonumber", nextnumber);
}
}
}
}
20. April 2012 10:42
20. April 2012 14:22
Szenario: Ein Unternehmen möchte seine Leads von Microsoft Dynamics CRM
automatisch nummerieren lassen. Das Unternehmen verwaltet regelmäßig eine
große Anzahl von Leads und möchte mithilfe eines Nummerierungssystems
schnell auf diese verweisen können.
Zielbeschreibung: Führen Sie diese Übungseinheit anhand folgender Informationen durch:
1.Das Feld Auto Number ist ein benutzerdefiniertes Feld mit der
Bezeichnung „new_autonumber“ und wird dem Formular
hinzugefügt.
2.Das Feld Auto Number ist im Formular deaktiviert.
3.Der Wert im Feld Auto Number wird schrittweise auf die nächste
freie Nummer erhöht. Wenn z. B. die höchste im System vorhandene
Nummer 23 ist, erhält der nächste Lead die Nummer 24.
4.Das Plug-In wird mit dem im SDK zur Verfügung stehenden Plug-
In-Registrierungstool für das Pre-Event der Create-Meldung für die
Lead-Entität registriert.
23. April 2012 08:10