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.
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.
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
- Desabilitar JavaScript personalizado
- Desativar um processo de fluxo de trabalho personalizado
Desativar um plug-in personalizado
Acesse Configurações>Personalizações>Personalizar o Sistema.
Selecione Etapas de Processamento de Mensagens do Sdk.
Uma lista de etapas de processamento de mensagens SDK disponíveis é exibida.
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.
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:
Vá para Soluções de Configurações> e abra a solução.
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.
Selecione Desativar.
Publique as personalizações.
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
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.
Selecione Propriedades de Formulário no editor de formulários.
A caixa de diálogo Propriedades do Formulário é aberta.
Na guia Eventos , selecione o controle OnLoad na lista suspensa Eventos .
Escolha os arquivos JavaScript personalizados provenientes da solução de propriedade de você.
Observação
Para exibir seu JavaScript personalizado:
- Vá para Soluções de Configurações> e abra a solução.
- Selecione WebResources. Verifique se os valores são selecionados como: Tipo de componente para WebResources e Exibir para Todos.
- Selecione Ícone de filtro para habilitar opções de filtro para colunas. Selecione Digitar e defina o filtro como Script (JScript).
Selecione Editar. Neste exemplo, selecionamos o arquivo JavaScript personalizado eg_opportunity para editar.
Desmarque a opção Habilitada e selecione OK.
Publique as personalizações.
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
Acesse Configurações>Personalizações>Personalizar o Sistema.
Selecione Processos. Esses processos incluem Fluxo de Trabalho, Fluxo de Processo empresarial e Regra de Negócios.
Uma lista de processos disponíveis é exibida.
Selecione o ícone Filtrar , selecione a coluna Entidade Primária e selecione a tabela para a qual o erro está ocorrendo.
Escolha os processos provenientes das soluções de sua propriedade.
Observação
Para exibir seus processos personalizados:
- Vá para Soluções de Configurações> e abra a solução.
- Selecione Processos. Verifique se os valores são selecionados como: Tipo de componente para Processos e Exibir para Todos.
Selecione Desativar.
Publique as personalizações.
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 InternalSystemPriceCalculationEvent
compartilhada booliana , que é acessível por meio IPluginExecutionContext
de , 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
}
}