2013-04-09 30 views
5

Nella nostra applicazione creiamo alcune migliaia di record phonecall. Ogni phonecall dovrebbe avere un proprietario diverso, determinato da un metodo denominato GetAnyAppropriateSystemUser(), che trova alcuni SystemUser casuali in base a determinati criteri.Crea un nuovo record con un proprietario specifico senza chiamare AssignRequest in CRM 2011

Nell'esempio di codice seguente, viene creata una chiamata telefonica e in seguito viene utilizzato AssignRequest per specificare il proprietario.

PhoneCall phoneCall = new PhoneCall(); 

// 
// stuff to set up the new PhoneCall instance here; populate fields, etc... 
// 

// determine this phonecall's owner through some algorithm 
Guid appropriateOwner = GetAnyAppropriateSystemUser(); 

Guid createdPhoneCallId = _serviceProxy.Create(phoneCall); 
if (createdPhoneCallId != Guid.Empty) 
{ 
    AssignRequest phoneCallAssign = new AssignRequest(); 
    phoneCallAssign.Assignee = new EntityReference(SystemUser.EntityLogicalName, appropriateOwner); 
    phoneCallAssign.Target = new EntityReference(PhoneCall.EntityLogicalName, createdPhoneCallId); 
    _serviceProxy.Execute(phoneCallAssign); 
} 

Funziona bene, ma ci sono due chiamate, una da creare e una da assegnare. Va bene solo impostare "ownerid" del record PhoneCall prima di chiamare il metodo Create(), eliminando così la necessità di chiamare un AssignRequest in seguito? Sembra funzionare, e ho persino trovato un esempio che fa una cosa simile nell'SDK, come mostrato di seguito.

SDK Esempio: Roll Up Obiettivo dati per un periodo personalizzato contro il bersaglio delle Entrate

// Create three goals: one parent goal and two child goals. 
Goal parentGoal = new Goal() 
{ 
    Title = "Parent Goal Example", 
    RollupOnlyFromChildGoals = true, 
    ConsiderOnlyGoalOwnersRecords = true, 
    TargetMoney = new Money(300.0M), 
    IsFiscalPeriodGoal = false, 
    MetricId = new EntityReference 
    { 
     Id = _metricId, 
     LogicalName = Metric.EntityLogicalName 
    }, 
    GoalOwnerId = new EntityReference 
    { 
     Id = _salesManagerId, 
     LogicalName = SystemUser.EntityLogicalName 
    }, 
    OwnerId = new EntityReference 
    { 
     Id = _salesManagerId, 
     LogicalName = SystemUser.EntityLogicalName 
    }, 
    GoalStartDate = DateTime.Today.AddDays(-1), 
    GoalEndDate = DateTime.Today.AddDays(30) 
}; 
_parentGoalId = _serviceProxy.Create(parentGoal); 

Anche se sembra funzionare, ci sono qualche cosa che dobbiamo essere consapevoli di se impostiamo ownerid prima di creare il nuovo record? Ci sono delle differenze?

Grazie mille in anticipo.

risposta

5

Come è stato già rilevato, è possibile impostare l'ownerid quando si crea il record.

Tuttavia, non è possibile modificare il proprietario di un record esistente allo stesso modo, in tal caso è necessario utilizzare AssignRequest.

controllare anche questa domanda: ETL Software, can't retrieve owner of a contact