Usuário com melhor resposta
Como obter o status de um registro

Pergunta
-
Boa tarde!
Estou tento dificuldade em obter o status de um registro a partir de um Plugin que é executado na alteração de uma cotação.
Estava tentando da seguinte forma:
DynamicEntity target = (DynamicEntity)context.InputParameters[ParameterName.Target];
String stateCode = (String)target["statecode"];
Quando executo o Plugin o erro retornado é: "A chave informada não estava presente no dicionário de dados."
Respostas
-
Eu costumo sempre pegar o ID e depois fazer um Retrieve para obter as colunas que necessito do registro, mas creio que deva recuperar através dos "OutputParameters", certo?
Pesquisei links que podem te ajudar, veja:
Procure no SDK por "IPluginExecutionContext Interface"
Este explica como recuperar os parametros (https://community.dynamics.com/product/crm/crmtechnical/b/crminogic/archive/2009/07/29/how-to-use-parameters-in-workflows-47-plugins.aspx)
E este tem um exemplo (http://ameedsheikh.wordpress.com/2010/07/30/mscrm-plugin-before-setstat/)
Claro que pegar um campo que já está no context é muito mais performatico do que pesquisar...
Att,
Tiago Cardoso
- Marcado como Resposta Klibor quarta-feira, 9 de fevereiro de 2011 13:09
-
Obrigado pelos links, achei um código que mostra como recuperar o Status através da classe Moniker:
Moniker entity = null;
if (context.InputParameters.Properties.Contains("EntityMoniker ") &&
context.InputParameters.Properties["EntityMoniker "] is Moniker )
{
// A Entidade que está sofrendo atualização de status
entity = (Moniker)context.InputParameters.Properties["EntityMoniker "];
//------------------------------------------------------------//
// Obtém o status do registro
//------------------------------------------------------------//
string state = (string)context.InputParameters.Properties[ParameterName.State ];
if (entity.Name == EntityName.quote.ToString() && state == "Active" )
{....
}
}.....
- Marcado como Resposta Klibor quarta-feira, 9 de fevereiro de 2011 13:08
Todas as Respostas
-
Eu costumo sempre pegar o ID e depois fazer um Retrieve para obter as colunas que necessito do registro, mas creio que deva recuperar através dos "OutputParameters", certo?
Pesquisei links que podem te ajudar, veja:
Procure no SDK por "IPluginExecutionContext Interface"
Este explica como recuperar os parametros (https://community.dynamics.com/product/crm/crmtechnical/b/crminogic/archive/2009/07/29/how-to-use-parameters-in-workflows-47-plugins.aspx)
E este tem um exemplo (http://ameedsheikh.wordpress.com/2010/07/30/mscrm-plugin-before-setstat/)
Claro que pegar um campo que já está no context é muito mais performatico do que pesquisar...
Att,
Tiago Cardoso
- Marcado como Resposta Klibor quarta-feira, 9 de fevereiro de 2011 13:09
-
Obrigado pelos links, achei um código que mostra como recuperar o Status através da classe Moniker:
Moniker entity = null;
if (context.InputParameters.Properties.Contains("EntityMoniker ") &&
context.InputParameters.Properties["EntityMoniker "] is Moniker )
{
// A Entidade que está sofrendo atualização de status
entity = (Moniker)context.InputParameters.Properties["EntityMoniker "];
//------------------------------------------------------------//
// Obtém o status do registro
//------------------------------------------------------------//
string state = (string)context.InputParameters.Properties[ParameterName.State ];
if (entity.Name == EntityName.quote.ToString() && state == "Active" )
{....
}
}.....
- Marcado como Resposta Klibor quarta-feira, 9 de fevereiro de 2011 13:08