none
Como obter o status de um registro RRS feed

  • 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."

    terça-feira, 8 de fevereiro de 2011 18:32

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
    quarta-feira, 9 de fevereiro de 2011 11:02
    Moderador
  • 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
    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
    quarta-feira, 9 de fevereiro de 2011 11:02
    Moderador
  • 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
    quarta-feira, 9 de fevereiro de 2011 13:08