Отметить встречу как запланированную в CRM 2011 - PullRequest
1 голос
/ 21 июля 2011

У меня есть приложение Silverlight, которое создает встречу, но, поскольку она не помечена как «Запланированная», она не будет отображаться в календаре.Я использую сервис SOAP для этого, и вот некоторый пример кода, который срабатывает при нажатии кнопки, которая создает встречу, но не отображается в календаре:

TestCommand = new RelayCommand(() =>
{
    var soapCtx = ServiceHelper.GetSingletonSoapService();
    var activityId = Guid.NewGuid();
    var appt = new Entity()
    {
        Id = activityId,
        LogicalName = "appointment"
    };

    appt["activityid"] = activityId;
    appt["scheduledstart"] = DateTime.Now.Date;
    appt["scheduledend"] = DateTime.Now.Date.AddHours(1);
    appt["description"] = "Test 1 2 3";
    appt["subject"] = "Test Command Button Appointment";
    appt["location"] = "Location 1 2 3";

    soapCtx.BeginCreate(appt, ar =>
        {
            var response = soapCtx.EndCreate(ar);                                           
            var bookRequest = new OrganizationRequest();

            bookRequest.RequestName = "Book";
            bookRequest["Target"] = appt;
            soapCtx.BeginExecute(bookRequest, 
                new AsyncCallback(OnBookRequestedCompleted), soapCtx);

        }, null);                

});

void OnBookRequestedCompleted(IAsyncResult ar)
{
    var soapCtx = (IOrganizationService)ar.AsyncState;
    var response = soapCtx.EndExecute(ar);      
}

Я продолжаю получать "NotFound"исключение в методе OnBookRequestedCompleted.Есть ли другой способ сделать это?

Ответы [ 2 ]

1 голос
/ 02 ноября 2011

Используйте Fiddler для отладки вашего HTTP-запроса / ответа, и это даст вам подробную информацию об исключении «Не найдено».

0 голосов
/ 30 марта 2018

Вы не должны устанавливать поле ActivityId, которое возвращается BookRequest. if BookResponse.ValidationResult.ValidationSuccess == true, apptId = BookResponse.ValidationResult.ActivityId

Вам необходимо вызвать SetStateRequest с идентификатором, возвращенным BookRequest, чтобы установить состояние по расписанию

Например:

                SetStateRequest state = new SetStateRequest();
                state.State = new OptionSetValue(3);   // Scheduled
                state.Status = new OptionSetValue(5);  // Busy
                state.EntityMoniker = new EntityReference("appointment", apptId);
                SetStateResponse stateSet = (SetStateResponse)this.orgService.Execute(state);
...