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.