Usuário com melhor resposta
Criar entidade dentro de outra via plugin

Pergunta
-
Bom dia,
Gostaria de saber como faço para criar e manipular uma entidade dentro de outra, exemplo, tenho como target a entidade oportunidade e preciso de acessar a campanha, e não na forma de query e sim pelos atributos (ter acesso a classe).
Tentei assim:
Guid
solID = (Guid)context.OutputParameters[ParameterName.Id];CrmWebService.
campaign entCampanha = service.Retrieve("campaign", solID, new CrmWebService.AllColumns());E assim:
DynamicEntity
entCampanha = (DynamicEntity)context.InputParameters.Properties["campaign"];
E nenhuma funcionou...
Respostas
-
Olá Tiago,
Uma vez com o ID da campanha "em mãos", faça a busca da campanha no CRM, retornando o objeto como uma DynamicEntity, da seguinte forma:
using Microsoft.Crm.Sdk;
using Microsoft.Crm.Sdk.Query;
using Microsoft.Crm.SdkTypeProxy;
ICrmService service = context.CreateCrmService(true);TargetRetrieveDynamic targetRetrieve = new TargetRetrieveDynamic();
targetRetrieve.EntityName = EntityName.campaign.ToString();
// EntityId = ID DA CAMPANHA
targetRetrieve.EntityId = new Guid("1564F593-75F7-DD11-AB09-0015F2044350");
RetrieveRequest retrieve = new RetrieveRequest();
retrieve.Target = targetRetrieve;
retrieve.ColumnSet = new AllColumns();
retrieve.ReturnDynamicEntities = true;
RetrieveResponse retrieved = (RetrieveResponse)service.Execute(retrieve);
DynamicEntity entity = (DynamicEntity)retrieved.BusinessEntity;foreach (Property prop in entity.Properties)
{
if (prop.Name.Equals("nome_campo"))
{
string str = ((StringProperty)prop).Value;
break;
}
}
Fonte: http://msdn.microsoft.com/en-us/library/cc151178.aspx
Gilberto Tezini - MCP ASP.NET (C#/VB.NET) / MCP CRM - (http://gtezini.blogspot.com)- Marcado como Resposta Tiago Cardoso quarta-feira, 4 de março de 2009 20:26
-
Consegui... criei uma propriedade para me auxilar:
CrmNumber number = new CrmNumber(valor); CrmNumberProperty property = new CrmNumberProperty("atributo", number);
service.Update(entidade);
- Marcado como Resposta Tiago Cardoso quinta-feira, 5 de março de 2009 12:38
Todas as Respostas
-
Olá Tiago,
Uma vez com o ID da campanha "em mãos", faça a busca da campanha no CRM, retornando o objeto como uma DynamicEntity, da seguinte forma:
using Microsoft.Crm.Sdk;
using Microsoft.Crm.Sdk.Query;
using Microsoft.Crm.SdkTypeProxy;
ICrmService service = context.CreateCrmService(true);TargetRetrieveDynamic targetRetrieve = new TargetRetrieveDynamic();
targetRetrieve.EntityName = EntityName.campaign.ToString();
// EntityId = ID DA CAMPANHA
targetRetrieve.EntityId = new Guid("1564F593-75F7-DD11-AB09-0015F2044350");
RetrieveRequest retrieve = new RetrieveRequest();
retrieve.Target = targetRetrieve;
retrieve.ColumnSet = new AllColumns();
retrieve.ReturnDynamicEntities = true;
RetrieveResponse retrieved = (RetrieveResponse)service.Execute(retrieve);
DynamicEntity entity = (DynamicEntity)retrieved.BusinessEntity;foreach (Property prop in entity.Properties)
{
if (prop.Name.Equals("nome_campo"))
{
string str = ((StringProperty)prop).Value;
break;
}
}
Fonte: http://msdn.microsoft.com/en-us/library/cc151178.aspx
Gilberto Tezini - MCP ASP.NET (C#/VB.NET) / MCP CRM - (http://gtezini.blogspot.com)- Marcado como Resposta Tiago Cardoso quarta-feira, 4 de março de 2009 20:26
-
Ok Gilberto muito obrigado, só um porém não estou conseguindo fazer um update com a resposta encontrada:
CrmWebService.
entidadepersonalizada entidade = new CrmWebService.entidadepersonalizada();entidade.atributo.Value += 1;
service.Update(entidade);
-
Consegui... criei uma propriedade para me auxilar:
CrmNumber number = new CrmNumber(valor); CrmNumberProperty property = new CrmNumberProperty("atributo", number);
service.Update(entidade);
- Marcado como Resposta Tiago Cardoso quinta-feira, 5 de março de 2009 12:38
-
Tiago,
Pelo seu exemplo, você está criando um novo registro para uma entidade personalizada, certo? Note que para este caso, você deve usar o método [Create] e não [Update].
Então substitua a linha
service.Update(entidade);
por
service.Create(entidade);
Dica: Sempre coloque o código que executa o WS do CRM em um try catch (System.Web.Services.Protocols.SoapException ex) para obter detalhes de erros.
Gilberto Tezini - MCP ASP.NET (C#/VB.NET) / MCP CRM - (http://gtezini.blogspot.com)