2013-04-09 25 views
5

W naszej aplikacji tworzymy kilka tysięcy rekordów połączeń telefonicznych. Każdy telefon powinien mieć innego właściciela, określony przez metodę o nazwie GetAnyAppappropriateSystemUser(), która znajduje losowego SystemUser na podstawie pewnych kryteriów.Utwórz nowy rekord z określonym właścicielem bez wywoływania AssignRequest w CRM 2011

W poniższym przykładzie kodu tworzymy wywołanie fonetyczne, a później używamy na nim parametru AssignRequest, aby określić jego właściciela.

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); 
} 

To działa dobrze, ale istnieją dwa połączenia, jeden do utworzenia i jeden do przypisania. Czy wystarczy ustawić "ownerid" rekordu PhoneCall przed wywołaniem metody Create(), eliminując w ten sposób konieczność wywoływania później AssignRequest? Wydaje się, że działa, a ja nawet znalazłem przykład robienia podobnej rzeczy w SDK, jak pokazano poniżej.

SDK próbki: zakasać danych wybija na okres niestandardowej Przeciwko docelowa Skarbowego

// 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); 

Chociaż wydaje się działać, to jest coś, co musimy mieć świadomość, jeśli stawiamy ownerid przed utworzeniem nowy rekord? Czy są jakieś różnice?

Dziękuję bardzo z góry.

Odpowiedz

5

Jak już ustalono, można ustawić ownerid podczas tworzenia rekordu.

Ale nie można edytować właściciela istniejącego rekordu w ten sam sposób, w takim przypadku musisz użyć AssignRequest.

Sprawdź również to pytanie: ETL Software, can't retrieve owner of a contact