Dynamics CRM 2011 - Как добавить запись в очередь (QueueItem) с использованием конечной точки REST с Silverlight - PullRequest
1 голос
/ 17 ноября 2011

Я хочу назначить запись определенной очереди в моем приложении Silverlight.

Я отображаю список записей, и пользователь может выбрать одну или несколько записей. Затем я отображаю список очереди, и пользователь выбирает очередь, в которую он хочет добавить эти записи.

Я последовал этому примеру:

http://msdn.microsoft.com/en-us/library/gg309558.aspx

Я пробовал другой способ, но он никогда не работал.

Первый

Я пытался создать «пустой» QueueItem: (некоторые части кода отсутствуют, например, здесь нет записи Queue, но это не важно, это просто чтобы показать вам проблему)

internal void AddBillingToQueue()
    {
        QueueItem item = new QueueItem();

        context.AddToQueueItemSet(item);

        context.BeginSaveChanges(OnCreateCompleted, item);
    }

    private void OnCreateCompleted(IAsyncResult result)
    {
        QueueItem item = result.AsyncState as QueueItem
        DataServiceResponse response = context.EndSaveChanges(result);

        // Normally, the GUID shouldn't be empty anymore, 
        // but it fails at the EndSaveChanges line.
    }

В сообщении об исключении сказано, что объектный код отсутствует. Поэтому я снова попытался указать объект, который хочу поместить в очередь.

internal void AddBillingToQueue(all_billing billing)
    {
        QueueItem item = new QueueItem();
        item.ObjectId = new EntityReference()
        {
            Name = billing.all_name,
            Id = billing.all_billingId,
            LogicalName = "all_billing"
        }

        context.AddToQueueItemSet(item);

        context.BeginSaveChanges(OnCreateCompleted, item);
    }

    private void OnCreateCompleted(IAsyncResult result)
    {
        QueueItem item = result.AsyncState as QueueItem
        DataServiceResponse response = context.EndSaveChanges(result);

        // again it fails
    }

Сообщение об исключении теперь говорит, что QueueId отсутствует. Поэтому я попытался также указать ссылку на очередь.

internal void AddBillingToQueue(all_billing billing, Queue queue)
    {
        QueueItem item = new QueueItem();

        item.ObjectId = new EntityReference()
        {
            Name = billing.all_name,
            Id = billing.all_billingId,
            LogicalName = "all_billing"
        }


        item.QueueId = new EntityReference()
        {
            Name = queue.Name,
            Id = queue.QueueId,
            LogicalName = "Queue"
        };

        context.AddToQueueItemSet(item);

        context.BeginSaveChanges(OnCreateCompleted, item);
    }

    private void OnCreateCompleted(IAsyncResult result)
    {
        QueueItem item = result.AsyncState as QueueItem
        DataServiceResponse response = context.EndSaveChanges(result);

        // again it fails
    }

И здесь сообщение об исключении:

<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\"?>
<error xmlns=\"http://schemas.microsoft.com/ado/2007/08/dataservices/metadata\">
<code>-2147217150</code>
<message xml:lang=\"nl-BE\">Queue</message>
</error>

Согласно этому сайту (http://www.cub -e.net / post / Microosft-Dynamics-CRM-Error-Code-List-List.aspx ) код означает: Указанный объект был не найден. Полагаю, это означает, что очередь не была найдена.

Но предоставленный GUID определенно прав, потому что он был получен из того же контекста.

Итак, если я предоставлю идентификатор очереди, он не будет работать. И если я этого не сделаю, это не удастся. Что я пропустил? Кто-то уже работал с QueueItem и конечной точкой REST?

1 Ответ

3 голосов
/ 18 ноября 2011

Это может указывать на очевидное, вы упомянули, что там есть не весь код, поэтому я подумал, не является ли это побочным эффектом, кроме строки.

LogicalName = "Queue"

Выскочил на меняпоскольку использование остальной конечной точки чувствительно к регистру в том, что касается имени объекта (т. е. все строчные буквы), поэтому он не может найти очередь из-за этого.

Кроме того, если ваше приложение показываеточереди для пользователя для назначения элементов, эта точка также может быть отключена, но если это фактическая запись, которую она не может найти, убедитесь, что есть разрешения для просмотра очереди, добавьте в очередь / назначьте элемент, который вы пытаетесь поместить вочередь.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...