Привяжите несколько ресурсов к объекту назначения службы, используя конечную точку 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);
    }

надеюсь, это поможет кому-то там.

Другие вопросы по тегам