2016-10-05 2 views
2

Я создал новую сущность.Обновление созданной записи в пользовательской операции рабочего процесса -CRM -C#

От этой сущности я вызываю пользовательский объект Activity Workflow, который создает возможность. Это работает, но, кроме того, мне нужно изменить некоторые поля на созданную возможность. (Я должен добавить продукты с возможностями, и вам нужно изменить прайс-лист для каждой возможности).

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

  Entity entity = null; 
     if (context.InputParameters != null && context.InputParameters.Contains("Target") && context.InputParameters["Target"] is Entity) 
     { 
      entity = (Entity)context.InputParameters["Target"]; 
     } 
     else 
     { 
      entity = service.Retrieve(context.PrimaryEntityName, ((Guid)context.PrimaryEntityId), new ColumnSet(true)); 
     } 
     Entity opportunity = new Entity("opportunity"); 
     string name = entity.GetAttributeValue<string>("subject"); 
     opportunity["name"] = name; 
     opportunityId = service.Create(opportunity); 
     EntityReference accountlookup = (EntityReference)entity.Attributes["ad_sendto"]; 
     Guid accountId = accountlookup.Id; 

     opportunity["parentaccountid"] = new EntityReference("account", accountId); 
     service.Update(opportunity); 

Повторим, это создает возможность, но она не работает для обновления, есть ли другой способ сделать это, или у меня есть некоторые ошибки здесь?

ответ

2

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

Вместо того, чтобы обновлять возможность после ее создания, почему бы просто не назначить parentaccountid во время операции создания?

var opportunity = new Entity("opportunity"); 
opportunity["name"] = entity.GetAttributeValue<string>("subject"); ; 
opportunity["parentaccountid"] = entity.Attributes["ad_sendto"]; 
opportunityId = service.Create(opportunity); 

Для будущих ссылок, если вы когда-либо обновить объект, который был только что создан или любое юридическое лицо по этому вопросу:

var opportunityToUpdate = new Entity("opportunity") 
{ 
    Id = opportunityId 
}; 
opportunityToUpdate["parentaccountid"] = entity.Attributes["ad_sendto"]; 
service.Update(opportunityToUpdate); 
+0

'возможность [ "parentaccountid"] = entity.Attributes [" ad_sendto "];' 'service.Update (optionToUpdate);' Последние две строки, вы имели в виду 'возможность [" parentaccountid "]' или 'optionToUpdate [" parenaccountid "]', forfor Update? –

+0

Вы правы, скопируйте ошибку патча, обновите ответ. – dynamicallyCRM

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