Compartilhar via


Solucionar problemas comuns com várias tabelas

Este artigo ajuda você a solucionar problemas comuns em várias tabelas, como oportunidade, cotação, pedido ou fatura no 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.

Causa

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

Menu suspenso do seletor de formulário mostrando a opção Formulário em contexto.

Solução

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

No formulário de contexto 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, pedido, fatura, cotação de produto e produto do pedido), você observa um comportamento inesperado ou um erro no Dynamics 365 for Sales. A seguir estão alguns dos erros que você pode encontrar ao trabalhar em oportunidades e eles podem se aplicar a outras tabelas:

  • "O valor estendido está errado após a revisão da 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 ao fechar oportunidade" – esse erro pode ocorrer devido a um fluxo de trabalho personalizado.

Causa

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

Solução

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

Desativar um plug-in personalizado

  1. Vá para Configurações>Personalizações>Personalizar o Sistema.

  2. Selecione Etapas de Processamento de Mensagens do SDK.

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

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

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

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

    Observação

    Para visualizar as etapas de processamento de mensagens personalizadas do SDK:

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

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

  5. Selecione Desativar.

  6. Publicar as personalizações.

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

  7. Verifique o problema e, se ele não ocorrer, o problema está nas etapas de processamento de mensagens personalizadas do SDK. Resolva o problema.

Observação

Se o problema ocorrer, ative as etapas de processamento de mensagens do SDK que você desativou agora e tente desativar o JavaScript personalizado ou desativar um processo de fluxo de trabalho personalizado.

Desativar 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 do formulário no editor de formulários.

    Selecione Propriedades do 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 sua propriedade.

    Observação

    Para visualizar seu JavaScript personalizado:

    1. Vá para Configurações>Soluções e abra a solução.
    2. Selecione WebResources. Verifique se os valores estão selecionados como: Tipo de componente para WebResources e Exibir para todos.
    3. Selecione o ícone Filtro para ativar as opções de filtro para colunas. Selecione Tipo e defina o filtro como Script (JScript).

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

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

    Insira detalhes na caixa de diálogo Propriedades do manipulador.

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

    Desmarque a opção Habilitado na caixa de diálogo Propriedades do manipulador.

  7. Publicar as personalizações.

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

Observação

Se o problema ocorrer, ative o JavaScript que você desativou 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. Vá para Configurações>Personalizações>Personalizar o Sistema.

  2. Selecione Processos. Esses processos incluem Fluxo de trabalho, Fluxo do processo de negócios e Regra de negócios.

    Uma lista de processos disponíveis é exibida.

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

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

  4. Escolha os processos que vêm das soluções de sua propriedade.

    Observação

    Para visualizar seus processos personalizados:

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

  6. Publicar as personalizações.

    Escolha e desative fluxos de trabalho de processos não gerenciados.

  7. Verifique o problema e, se ele não ocorrer, o problema está nos 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 desativar o JavaScript personalizado.

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

Sintomas

  • Criar e atualizar operações em tabelas de Oportunidade, Cotação, Pedido e Fatura acionam atualizações em suas tabelas pai.
  • A recuperação de detalhes sobre as tabelas Oportunidade, Cotação, Pedido e Fatura aciona internamente o serviço de Cálculo de Preço, que subsequentemente aciona plug-ins personalizados criados pelos clientes.

Solução

Os plug-ins personalizados executam operações de criação, atualização e salvamento nas tabelas Oportunidade, Cotação, Pedido e Fatura. As operações de criação e atualização nessas tabelas acionam 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 de Oportunidade, Cotação, Pedido ou Fatura ou nas tabelas pai de Oportunidade, Cotação, Pedido ou Fatura usando o serviço interno de Cálculo de Preço ou usando seu próprio plug-in personalizado. A variável InternalSystemPriceCalculationEventcompartilhada booleana , que pode ser acessada por meio IPluginExecutionContextde , está disponível no código do 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 a partir 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, certifique-se de que o serviço de Cálculo de Preço pronto para uso esteja 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
    }

}