Condividi tramite


Risolvere i problemi comuni relativi a più tabelle

Questo articolo consente di risolvere e risolvere i problemi comuni in più tabelle, ad esempio opportunità, offerta, ordine o fattura in Microsoft Dynamics 365 Sales.

Problema 1- Nel modulo di contesto può essere visualizzato nel selettore di modulo

Il modulo Nel contesto viene usato per visualizzare e personalizzare il pannello laterale in Deal Manager e nella nuova interfaccia per contatti, opportunità, lead e account.

Causa

Se nell'ambiente è presente una personalizzazione che imposta formActivationState su Active per queste tabelle, nell'elenco a discesa Modulo contesto viene visualizzato l'elenco a discesa del selettore del modulo e consente agli utenti di selezionare questo modulo per visualizzare i dettagli del record.

Elenco a discesa Del selettore di modulo che mostra l'opzione Modulo di contesto.

Risoluzione

Se l'aspetto di In Context Form causa confusione, è possibile disattivare il Modulo nel contesto, come illustrato nello screenshot seguente.

In Formato contesto con l'opzione da disattivare.

Problema 2 - Errore o comportamento imprevisto durante l'uso delle tabelle

Sintomi

Durante l'uso di tabelle (ad esempio opportunità, offerta, ordine, fattura, prodotto offerta e ordine), si osserva un comportamento imprevisto o un errore in Dynamics 365 for Sales. Di seguito sono riportati alcuni degli errori che possono verificarsi durante l'utilizzo delle opportunità e possono essere applicati ad altre tabelle:

  • "Extended Amount is wrong after revising quote"- this error might occur due to a custom plug-in.
  • "Errore durante il salvataggio dell'opportunità" - Questo errore potrebbe verificarsi a causa di JavaScript personalizzato.
  • "Errore durante la chiusura dell'opportunità" - Questo errore potrebbe verificarsi a causa di un flusso di lavoro personalizzato.

Causa

Questi problemi possono verificarsi a causa di una personalizzazione non corretta dell'applicazione.

Risoluzione

È necessario verificare le personalizzazioni non corretta e risolverle. Eseguire i metodi di verifica seguenti per identificare la personalizzazione che causa il problema e quindi risolvere:

Disattivare un plug-in personalizzato

  1. Vai a Impostazioni>Personalizzazione>Personalizza il sistema.

  2. Selezionare Sdk Message Processing Steps (Passaggi per l'elaborazione dei messaggi sdk).

    Viene visualizzato un elenco dei passaggi di elaborazione dei messaggi SDK disponibili.

  3. Selezionare l'icona Filtro , selezionare la colonna Primary Object Type Code (Sdk Message Filter) e quindi selezionare la tabella per cui si verifica l'errore.

    Passare all'elenco di plug-in personalizzato per selezionare la tabella per cui si verifica l'errore.

  4. Selezionare i passaggi di elaborazione dei messaggi SDK provenienti dalle soluzioni di proprietà dell'utente.

    Note

    Per visualizzare i passaggi di elaborazione dei messaggi DELL'SDK personalizzati:

    1. Passare a Impostazioni>Soluzioni e quindi aprire la soluzione.

    2. Selezionare SDK Message Processing Steps (Passaggi di elaborazione messaggi SDK). Verificare che i valori siano selezionati nel modo seguente: Tipo di componente al passaggio di elaborazione messaggi SDK e Visualizza a tutti.

  5. Seleziona Disattiva.

  6. Pubblicare le personalizzazioni.

    Scegliere e disattivare plug-in personalizzati non gestiti.

  7. Verificare il problema e, in caso contrario, il problema riguarda i passaggi di elaborazione dei messaggi dell'SDK personalizzati. Risolvere il problema.

Note

Se si verifica il problema, attivare i passaggi di elaborazione dei messaggi dell'SDK disattivati ora e provare a disabilitare JavaScript personalizzato o disattivare un processo del flusso di lavoro personalizzato.

Disabilitare JavaScript personalizzato

  1. Aprire l'editor di moduli della tabella in cui si verifica l'errore. In questo esempio si seleziona la tabella come Opportunità e il modulo predefinito della soluzione.

    Aprire l'editor di moduli.

  2. Selezionare Proprietà modulo nell'editor di moduli.

    Selezionare Proprietà modulo nell'editor di moduli.

    Verrà visualizzata la finestra di dialogo Proprietà modulo.

  3. Nella scheda Eventi selezionare il controllo OnLoad dall'elenco a discesa Eventi.

    Selezionare il controllo OnLoad dall'elenco a discesa Eventi.

  4. Scegliere i file JavaScript personalizzati provenienti dalla soluzione di proprietà dell'utente.

    Note

    Per visualizzare javaScript personalizzato:

    1. Passare a Impostazioni>Soluzioni e quindi aprire la soluzione.
    2. Selezionare WebResources. Verificare che i valori siano selezionati come: Tipo di componente in WebResources e Visualizza su tutti.
    3. Selezionare l'icona Filtro per abilitare le opzioni di filtro per le colonne. Selezionare Tipo e impostare il filtro come Script (JScript).

    Selezionare Tipo e impostare il filtro come Script (JScript).

  5. Seleziona Modifica In questo esempio è stato selezionato il file JavaScript personalizzato eg_opportunity da modificare.

    Dettagli di input nella finestra di dialogo Proprietà gestore.

  6. Deselezionare l'opzione Abilitato e selezionare OK.

    Deselezionare l'opzione Abilitato nella finestra di dialogo Proprietà gestore.

  7. Pubblicare le personalizzazioni.

  8. Verificare il problema e, in caso contrario, il problema riguarda javaScript personalizzato. Risolvere il problema.

Note

Se si verifica il problema, abilitare il codice JavaScript disabilitato ora e provare a Disattivare un plug-in personalizzato o Disattivare un processo di flusso di lavoro personalizzato.

Disattivare un processo di flusso di lavoro personalizzato

  1. Vai a Impostazioni>Personalizzazione>Personalizza il sistema.

  2. Selezionare Processi. Questi processi includono flusso di lavoro, processo aziendale e regola business.

    Viene visualizzato un elenco dei processi disponibili.

  3. Selezionare l'icona Filtro , selezionare la colonna Entità primaria e quindi selezionare la tabella per cui si verifica l'errore.

    Passare all'elenco del flusso di lavoro del processo personalizzato per selezionare la tabella per cui si è verificato l'errore.

  4. Scegliere i processi provenienti dalle soluzioni di proprietà dell'utente.

    Note

    Per visualizzare i processi personalizzati:

    1. Passare a Impostazioni>Soluzioni e quindi aprire la soluzione.
    2. Selezionare Processi. Verificare che i valori siano selezionati come: Tipo di componente in Processi e Visualizza a tutti.
  5. Seleziona Disattiva.

  6. Pubblicare le personalizzazioni.

    Scegliere e disattivare i flussi di lavoro dei processi non gestiti.

  7. Verificare il problema e, in caso contrario, il problema riguarda i processi personalizzati. Risolvere il problema.

Note

Se il problema si verifica, attivare i processi disattivati ora e provare a Disattivare un plug-in personalizzato o Disabilitare JavaScript personalizzato.

Problema 3 - Gestione personalizzata dei plug-in tramite una variabile condivisa

Sintomi

  • Le operazioni di creazione e aggiornamento delle tabelle Opportunity, Quote, Order e Invoice attivano gli aggiornamenti nelle tabelle padre.
  • Il recupero dei dettagli sulle tabelle Opportunità, Offerta, Ordine e Fattura attiva internamente il servizio Calcolo prezzi, che successivamente attiva plug-in personalizzati creati dai clienti.

Risoluzione

I plug-in personalizzati eseguono operazioni di creazione, aggiornamento e salvataggio nelle tabelle Opportunity, Quote, Order e Invoice. Le operazioni di creazione e aggiornamento in queste tabelle attivano internamente il servizio Calcolo prezzi, che aggiorna quindi i campi o gli attributi correlati al prezzo associati delle tabelle padre.

È possibile identificare o distinguere gli aggiornamenti nelle tabelle Opportunità, Offerta, Ordine o Fattura o Opportunità padre, Offerta, Ordine o Fattura tramite il servizio di calcolo dei prezzi interno o usando il proprio plug-in personalizzato. La variabile InternalSystemPriceCalculationEventcondivisa booleana , accessibile tramite IPluginExecutionContext, è disponibile all'interno del codice plug-in. Qualsiasi evento di creazione o aggiornamento elaborato tramite il servizio Calcolo prezzi imposta il valore della variabile InternalSystemPriceCalculationEvent su true. Il valore predefinito di InternalSystemPriceCalculationEvent è false. È possibile accedere a questa variabile dal codice plug-in personalizzato per controllare il flusso della logica di business esistente.

Note

Per eseguire operazioni plug-in personalizzate usando una variabile condivisa, assicurarsi che il servizio Di calcolo prezzi predefinito sia disabilitato.

Codice di esempio

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
    }

}