Partilhar via


Solucionar problemas comuns com várias tabelas

Este artigo ajuda você a solucionar problemas e resolve problemas comuns em várias tabelas, como oportunidade, cotação, pedido ou fatura em Microsoft Dynamics 365 Sales.

Problema 1 – No Formulário de Contexto pode aparecer no seletor de formulários

O Formulário em Contexto é usado para exibir e personalizar o painel lateral no gerenciador de negócios e na nova interface para contatos, oportunidades, leads e contas.

Motivo

Se o ambiente tiver alguma personalização que define o formActivationState como Active para essas tabelas, o Formulário de Contexto será exibido na lista suspensa seletor de formulários e permitirá que os usuários selecionem esse formulário para exibir os detalhes do registro.

Lista suspensa seletor de formulários mostrando a opção Formulário de Contexto.

Resolução

Se a aparência de Formulário de Contexto levar a confusão, você poderá desativar o Formulário de Contexto, conforme mostrado na captura de tela a seguir.

No formulário Context com a opção de desativar.

Problema 2 – Erro ou comportamento inesperado ao trabalhar em tabelas

Sintomas

Ao trabalhar em tabelas (como oportunidades, cotação, ordem, fatura, produto de cotação e produto de pedido), você observa um comportamento inesperado ou um erro em Dynamics 365 para Vendas. Veja a seguir alguns dos erros que você pode encontrar ao trabalhar em oportunidades e elas podem se aplicar a outras tabelas:

  • "Quantidade Estendida está errada após revisar a cotação"- esse erro pode ocorrer devido a um plug-in personalizado.
  • "Erro ao salvar a oportunidade" – esse erro pode ocorrer devido ao JavaScript personalizado.
  • "Erro durante a oportunidade próxima" – esse erro pode ocorrer devido a um fluxo de trabalho personalizado.

Motivo

Esses problemas podem ocorrer devido à personalização inadequada do aplicativo.

Resolução

Você deve verificar as personalizações inadequadas e resolve-las. Execute os seguintes métodos de verificação para identificar qual personalização está causando o problema e, em seguida, resolve:

Desativar um plug-in personalizado

  1. Acesse Configurações>Personalizações>Personalizar o Sistema.

  2. Selecione Etapas de Processamento de Mensagens do Sdk.

    Uma lista de etapas de processamento de mensagens SDK disponíveis é exibida.

  3. Selecione o ícone Filtrar , selecione a coluna Código de Tipo de Objeto Primário (Filtro de Mensagem do Sdk) e selecione a tabela para a qual o erro está ocorrendo.

    Acesse a lista de plug-ins personalizada para selecionar a tabela para a qual o erro está ocorrendo.

  4. Selecione as etapas de processamento de mensagens SDK provenientes das soluções de propriedade de você.

    Observação

    Para exibir suas etapas de processamento de mensagens SDK personalizadas:

    1. Vá para Soluções de Configurações> e abra a solução.

    2. Selecione Etapas de processamento de mensagens SDK. Verifique se os valores estão selecionados da seguinte maneira: Tipo de componente para a Etapa de Processamento de Mensagens do SDK e Exibir para Todos.

  5. Selecione Desativar.

  6. Publique as personalizações.

    Escolha e desativar plug-ins personalizados não gerenciados.

  7. Verifique o problema e, se ele não ocorrer, o problema é com as etapas de processamento de mensagens SDK personalizadas. Resolva o problema.

Observação

Se o problema ocorrer, ative as Etapas de Processamento de Mensagens do SDK que você desativou agora e tente desabilitar o JavaScript personalizado ou desativar um processo de fluxo de trabalho personalizado.

Desabilitar JavaScript personalizado

  1. Abra o editor de formulários da tabela na qual o erro está ocorrendo. Neste exemplo, estamos selecionando a tabela como Oportunidades e o formulário de solução padrão.

    Abra o editor de formulários.

  2. Selecione Propriedades de Formulário no editor de formulários.

    Selecione Propriedades de Formulário no editor de formulários.

    A caixa de diálogo Propriedades do Formulário é aberta.

  3. Na guia Eventos , selecione o controle OnLoad na lista suspensa Eventos .

    Selecione o controle OnLoad na lista suspensa Eventos.

  4. Escolha os arquivos JavaScript personalizados provenientes da solução de propriedade de você.

    Observação

    Para exibir seu JavaScript personalizado:

    1. Vá para Soluções de Configurações> e abra a solução.
    2. Selecione WebResources. Verifique se os valores são selecionados como: Tipo de componente para WebResources e Exibir para Todos.
    3. Selecione Ícone de filtro para habilitar opções de filtro para colunas. Selecione Digitar e defina o filtro como Script (JScript).

    Selecione Digitar e defina o filtro como Script (JScript).

  5. Selecione Editar. Neste exemplo, selecionamos o arquivo JavaScript personalizado eg_opportunity para editar.

    Detalhes de entrada na caixa de diálogo Propriedades do Manipulador.

  6. Desmarque a opção Habilitada e selecione OK.

    Desmarque a opção Habilitada na caixa de diálogo Propriedades do Manipulador.

  7. Publique as personalizações.

  8. Verifique o problema e, se ele não ocorrer, o problema será com o JavaScript personalizado. Resolva o problema.

Observação

Se o problema ocorrer, habilite o JavaScript que você desabilitou agora e tente desativar um plug-in personalizado ou Desativar um processo de fluxo de trabalho personalizado.

Desativar um processo de fluxo de trabalho personalizado

  1. Acesse Configurações>Personalizações>Personalizar o Sistema.

  2. Selecione Processos. Esses processos incluem Fluxo de Trabalho, Fluxo de Processo empresarial e Regra de Negócios.

    Uma lista de processos disponíveis é exibida.

  3. Selecione o ícone Filtrar , selecione a coluna Entidade Primária e selecione a tabela para a qual o erro está ocorrendo.

    Acesse a lista de fluxo de trabalho do processo personalizado para selecionar a tabela para a qual o erro está ocorrendo.

  4. Escolha os processos provenientes das soluções de sua propriedade.

    Observação

    Para exibir seus processos personalizados:

    1. Vá para Soluções de Configurações> e abra a solução.
    2. Selecione Processos. Verifique se os valores são selecionados como: Tipo de componente para Processos e Exibir para Todos.
  5. Selecione Desativar.

  6. Publique as personalizações.

    Escolha e desativar fluxos de trabalho de processo não gerenciados.

  7. Verifique o problema e, se ele não ocorrer, o problema é com os processos personalizados. Resolva o problema.

Observação

Se o problema ocorrer, ative os Processos que você desativou agora e tente desativar um plug-in personalizado ou Desabilitar JavaScript personalizado.

Problema 3 – Tratamento de plug-in personalizado usando uma variável compartilhada

Sintomas

  • Criar e atualizar operações nas tabelas Oportunidade, Cotação, Ordem e Fatura disparam atualizações em suas tabelas pai.
  • A recuperação de detalhes sobre tabelas Opportunity, Quote, Order e Invoice aciona internamente o serviço de Cálculo de Preço, que posteriormente dispara plug-ins personalizados criados pelos clientes.

Resolução

Os plug-ins personalizados executam as operações create, update e save nas tabelas Oportunidade, Cotação, Ordem e Fatura. As operações de criação e atualização nessas tabelas disparam internamente o serviço De cálculo de preço, que atualiza os campos ou atributos relacionados ao preço associados de suas tabelas pai.

Você pode identificar ou diferenciar quaisquer atualizações nas tabelas Opportunity, Quote, Order ou Invoice ou tabelas pai Opportunity, Quote, Order ou Invoice usando o serviço de Cálculo de Preço interno ou usando seu próprio plug-in personalizado. A variável InternalSystemPriceCalculationEventcompartilhada booliana , que é acessível por meio IPluginExecutionContextde , está disponível no código de plug-in. Qualquer evento de criação ou atualização processado usando o serviço de Cálculo de Preço definirá o valor da variável InternalSystemPriceCalculationEvent como true. O valor padrão de InternalSystemPriceCalculationEvent é false. Você pode acessar essa variável do código de plug-in personalizado para controlar o fluxo da lógica de negócios existente.

Observação

Para executar operações de plug-in personalizadas usando uma variável compartilhada, verifique se o serviço de cálculo de preços fora da caixa está desabilitado.

Código de exemplo

public void Execute(IServiceProvider serviceProvider)
{
   // Obtain the tracing service
   ITracingService tracingService = (ITracingService)serviceProvider.GetService(typeof(ITracingService));

   // Obtain the execution context from the service provider.  
    IPluginExecutionContext executionContext = (IPluginExecutionContext)
    serviceProvider.GetService(typeof(IPluginExecutionContext))
    bool isInternalSystemPriceCalculationEvent = false;

    //Check existence of shared variable and fetch the value from executionContext
    if (executionContext.ParentContext != null && executionContext.ParentContext.SharedVariables.ContainsKey("InternalSystemPriceCalculationEvent"))
                    
    {
        isInternalSystemPriceCalculationEvent = (bool)executionContext.ParentContext.SharedVariables["InternalSystemPriceCalculationEvent"];
    }   

    if (isInternalSystemPriceCalculationEvent)
    {
            //TO DO - Add or skip custom business logic
    }

}