2016-08-17 2 views
1

Использование Dynamics CRM 2011. Я узнаю о ActivityPartys.Как определить тип Entity PartyId?

Поскольку PartyId ActivityParty является EntityReference, для установки PartyId вам необходимо знать тип Entity.

Я пытаюсь создать новый PhoneCall (в плагине), используя тот же Получатель, что и существующий телефонный звонок. Я могу получить руководство PartyId получателя с помощью LINQ из ActivityPartySet, но как я могу определить тип Entity, который может быть либо учетной записью, либо контактом?

И наоборот, можно ли установить PartyId, не зная EntityLogicalName?

Update:

Спасибо за реагирование, но я либо неправильно или вы поняли, что я пытаюсь выяснить. Вот мой код прямо сейчас:

// Get the oldPhoneCall's To ActivityParty list: 
        EntityCollection Recipients = oldPhonecall.GetAttributeValue<EntityCollection>("to"); 

        // Use the first one to find the partyId 
        // Need to do it this way because we don't know if partyId points to an Account or a Contact: 
        Guid activityPartyId = Recipients.Entities[0].Id; 
        var activityParty2 = new Xrm.ActivityParty(); 

        context.GetWorkflowHelper().serviceContext.ClearChanges(); 

        var queryParty = from ap in context.GetWorkflowHelper().serviceContext.ActivityPartySet 
            where ap.ActivityPartyId.Equals(activityPartyId) 
            select new { ap.PartyId, ap.LogicalName }; 
        foreach (var party in queryParty) 
        { 
         activityParty2.PartyId = new EntityReference(party.LogicalName, party.PartyId.Id); 
        } 

Я обнаружил, что в Еогеасп, party.LogicalName является ActivityParty. Это не тип сущности получателя oldphonecall, который в моем тестовом случае Contact, но в других случаях - это учетная запись.

Как определить логическое имя объекта? Где я ошибся?

Update2:

В SQL я могу видеть поле PartyObjectTypeCode, и я знаю, что могу сопоставить, что к типу объекта (где 1 = счета, 2 = контакт, и т.д.), но когда я запроса ActivityPartySet, нет такого поле, похоже, существует.

Update 3:

Понял -

foreach (var party in queryParty) 
        { 
         activityParty2.PartyId = new EntityReference(party.PartyId.LogicalName, party.PartyId.Id); 
        } 
+0

спасибо за подтверждение, но если вы можете, пожалуйста, подтвердите ответ, написанный dynamicallyCRM, он написал первый, и это правильно –

ответ

4

как я могу определить Entity Type, который может быть либо счета или Контакт?

PartyId относится к типу EntityReference где LogicalName дало бы вам соответствующий тип объекта.

var entityLogicalName = context.EmailSet.FirstOrDefault().To.FirstOrDefault().PartyId.LogicalName 

И наоборот, можно установить PartyId, не зная EntityLogicalName?

Нет, при установке ссылки на объект CRM должны быть указаны как Id, так и LogicalName.

+0

upvoted, извините, что я отправил свой ответ через 10 секунд после вашего, но браузер не сообщил мне –

3

Чтобы установить PartyId, вам необходимо знать логическое имя объекта.

Вы не отправлял код, но если вы можете получить Ид от получателя Вы можете получить также LogicalName (они хранятся в виде EntityReference)

Смежные вопросы