2014-02-21 3 views
0

В нашей компании у нас есть приложение, которое использует веб-службы CRM. Поскольку мы обновили с CRM 4.0 до CRM 2011, я пытаюсь перенести наш код на новый CRM 2011. Также мне нужно предотвратить использование сильных типов. Поэтому я использую для всех сущностей Entity-Class, которые предоставляются веб-службой CRM 2011.CRM 2011 связывает лидерство с ответом кампании

Наше приложение делает следующее:

  1. Создает свинец из HTML формы
  2. Создает ответ кампании и связывает его с ведущей
  3. Ссылки ответа кампании с конкретной кампанией

Это код CRM 4.0:

Dim lookup As New Lookup() 
lookup.Value = New Guid(linkCampaignGuid) 
lookup.type = "campaign" 

Dim activity As New activityparty() 
activity.partyid = New Lookup() 
activity.partyid.type = "lead" 
' the CreateLead method creates a lead and returns its guid 
' linkCustomer is the object wich is filled by the HTML form 
activity.partyid.Value = New Guid(CreateLead(linkCustomer)) 

Dim cr As New campaignresponse() 
cr.regardingobjectid = lookup 
cr.customer = New activityparty() {activity} 

' my CrmService object 
_service.Create(cr) 


CRM 2011 код до сих пор:

Dim lookup As New EntityReference() 
lookup.LogicalName = "campaign" 
lookup.Id = New Guid(linkCampaignGuid) 

Dim lead As New EntityReference() 
lead.LogicalName = "lead" 
lead.Id = New Guid(CreateLead(linkCustomer)) 

Dim activity As New Entity 
activity.LogicalName = "activityparty" 
activity.Id = lead.Id 
activity.Attributes = New AttributeCollection 
activity.Attributes.Add(New KeyValuePair(Of String, Object)("partyid", lead)) 

Dim campaignResponse As New Entity 
campaignResponse.LogicalName = "campaignresponse" 
campaignResponse.Attributes = New AttributeCollection 
campaignResponse.Attributes.Add(New KeyValuePair(Of String, Object)("regardingobjectid", lookup)) 
campaignResponse.Attributes.Add(New KeyValuePair(Of String, Object)("customer", activity)) 

_service.Create(campaignResponse) 

Создание ответа кампании, связать его с кампанией и создание свинца работает. Моя проблема заключается в том, что связь между ответом кампании и руководством не работает.

Я ценю любую помощь!

UPDATE:

Наконец после попытки почти все, я нашел способ, чтобы получить его работу:

Dim campaignId As Guid = New Guid(linkCampaignGuid) 
Dim leadId As Guid = New Guid(CreateLead(linkCustomer)) 

Dim campaignReference As New EntityReference("campaign", campaignId) 
Dim leadReference As New EntityReference("lead", leadId) 

Dim activityParty As New Entity("activityparty") 
activityParty.AddAttribute("partyid", leadReference) 

Dim entityCollection As New EntityCollection() 
entityCollection.EntityName = "activityparty" 
entityCollection.Entities.Add(activityParty) 

Dim campaignResponse = New Entity("campaignresponse") 
campaignResponse.Attributes.Add("regardingobjectid", campaignReference) 
campaignResponse.Attributes.Add("customer", entityCollection) 

_service.Create(campaignResponse) 

ответ

0

Я думаю, что ошибка в этой строке:

campaignResponse.Attributes.Add(New KeyValuePair(Of String, Object)("customer", activity)) 

customer поле для CRM 2011 - простой поиск, поэтому попробуйте напрямую установить ссылку на вывод:

campaignResponse.Attributes.Add(New KeyValuePair(Of String, Object)("customer", lead)) 

Кроме того, я предлагаю переписать код таким образом (более читаемым)

Dim campaignId As Guid 
campaignId = New Guid(linkCampaignGuid) 

Dim leadId As Guid 
leadId = New Guid(CreateLead(linkCustomer)) 

Dim campaignReference = New EntityReference("campaign", campaignId) 
Dim leadReference = New EntityReference("lead", leadId) 

Dim campaignResponse = New Entity("campaignresponse") 
campaignResponse.Attributes.Add("regardingobjectid", campaignReference) 
campaignResponse.Attributes.Add("customer", leadReference) 

_service.Create(campaignResponse); 
+0

Спасибо за ответ, но это не сработало. Я также попытался использовать вместо массива класс EntityCollection, но он тоже не работал. –

+0

@langer_muc Я отредактировал свой ответ, повторите попытку и обратно с результатами –

+0

, это тоже не сработало. Но я должен сказать вам, что у меня нет конструктора для класса EntityReference с двумя параметрами. У меня только стандартный(). –