Привяжите несколько ресурсов к объекту назначения службы, используя конечную точку OData с javascript в CRM 2013
Моя цель - создать запись о встрече в службе, связанную с несколькими ресурсами.
Для этого я последовал этому примеру MSDN.
Проблема возникает, когда я пытаюсь связать несколько ресурсов для одного конкретного назначения службы, сервер CRM будет хранить только последний (1 запись). Ниже демонстрируется мой код:
//attendees =[... array of resource ids]
var serviceAppointment = {
ScheduledStart: new Date("12/22/2014 4:53 PM"),
ScheduledEnd: new Date("12/22/2014 5:53 PM"),
Subject: "test service",
ServiceId:
{
//// hardcoded id for simplicity
Id: "6f795012-ca55-e411-aa38-00155d0a0948",
LogicalName: "service"
}
};
SDK.JQuery.createRecord(serviceAppointment,"ServiceAppointment"
,function(sa){
for(var i=0;i<attendees.length;i++)
{
var activityParty = {
PartyId:
{
Id: attendees[i],
LogicalName: "systemuser",
},
ActivityId:
{
Id: sa.ActivityId,
LogicalName: "serviceappointment",
},
ParticipationTypeMask:
{
//See http://msdn.microsoft.com/en-us/library/gg328549.aspx
//10 is for resource
Value: 10
}
};
SDK.JQuery.createRecord(activityParty,"ActivityParty", function(ap){debugger;},errorHandler);
}
}
,errorHandler);
Насколько я отлаживал код, запись создания выполняется должным образом без исключения. Я полагаю, что где-то в моем коде отсутствует флаг конфигурации, и CRM рассматривает связь один к одному, а не один ко многим. Есть какие-нибудь подсказки?
1 ответ
Решение
Я мог бы решить эту проблему, передавая массив партий в записи о назначении службы в первую очередь, а не вставляя их по одному в конце. Вот код, который работает:
var parties =[];
for(var i=0;i< e.event.attendees.length;i++)
{
var activityParty = {
PartyId:
{
Id: e.event.attendees[i],
LogicalName: "systemuser",
},
ParticipationTypeMask:
{
//See http://msdn.microsoft.com/en-us/library/gg328549.aspx
//10 is for resource
Value: 10
}
}
parties.push(activityParty);
}
var serviceAppointment = {
ScheduledStart: e.event.start,
ScheduledEnd: e.event.end,
Subject: e.event.title,
ServiceId:
{
Id: "6f795012-ca55-e411-aa38-00155d0a0948",
LogicalName: "service"
},
serviceappointment_activity_parties: parties,
};
SDK.JQuery.createRecord(serviceAppointment,"ServiceAppointment"
,function(sa){
debugger;
e.event.ActivityId = serviceAppointmentActivityId = sa.ActivityId;
}
,errorHandler);
}
надеюсь, это поможет кому-то там.