Freigeben über


Behandeln von häufigen Problemen mit mehreren Tabellen

Dieser Artikel hilft Ihnen bei der Behandlung und Behebung von häufig auftretenden Problemen in mehreren Tabellen wie Verkaufschance, Angebot, Bestellung oder Rechnung in Microsoft Dynamics 365 Sales.

Problem 1: Im Kontextformular kann in der Formularauswahl angezeigt werden

Das In-Kontext-Formular wird zum Anzeigen und Anpassen des Seitenbereichs im Deal-Manager und in der neuen Benutzeroberfläche für Kontakte, Verkaufschancen, Leads und Konten verwendet.

Ursache

Wenn Ihre Umgebung über eine Anpassung verfügt, die formActivationState für diese Tabellen auf Aktiv festlegt, wird die Dropdownliste In Kontextformular in der Formularauswahl angezeigt, mit der Benutzer dieses Formular auswählen können, um die Datensatzdetails anzuzeigen.

Dropdownliste

Lösung

Wenn die Darstellung von In Context Form zu Verwirrung führt, können Sie das In-Kontext-Formular deaktivieren, wie im folgenden Screenshot gezeigt.

Im Kontextformular mit der Option zum Deaktivieren.

Problem 2: Fehler oder unerwartetes Verhalten beim Arbeiten an Tabellen

Symptome

Beim Arbeiten an Tabellen (z. B. Verkaufschancen, Angebot, Bestellung, Rechnung, Angebotsprodukt und Bestellprodukt) beobachten Sie unerwartetes Verhalten oder einen Fehler in Dynamics 365 for Sales. Im Folgenden finden Sie einige der Fehler, die beim Arbeiten an Verkaufschancen auftreten können, und sie können für andere Tabellen gelten:

  • "Extended Amount is wrong after revising quote": Dieser Fehler kann aufgrund eines benutzerdefinierten Plug-Ins auftreten.
  • "Fehler beim Speichern der Verkaufschance": Dieser Fehler kann aufgrund von benutzerdefiniertem JavaScript auftreten.
  • "Fehler beim Schließen der Verkaufschance": Dieser Fehler kann aufgrund eines benutzerdefinierten Workflows auftreten.

Ursache

Diese Probleme können aufgrund einer unsachgemäßen Anpassung der Anwendung auftreten.

Lösung

Sie müssen die fehlerhaften Anpassungen überprüfen und beheben. Führen Sie die folgenden Überprüfungsmethoden aus, um zu ermitteln, welche Anpassung das Problem verursacht, und beheben Sie dann:

Deaktivieren eines benutzerdefinierten Plug-Ins

  1. Wechseln Sie zu Einstellungen>Anpassungen>System anpassen.

  2. Wählen Sie SDK-Nachrichtenverarbeitungsschritte aus.

    Eine Liste der verfügbaren SDK-Nachrichtenverarbeitungsschritte wird angezeigt.

  3. Wählen Sie das Symbol Filter aus, wählen Sie die Spalte Primärer Objekttypcode (SDK-Nachrichtenfilter) und dann die Tabelle aus, für die der Fehler auftritt.

    Wechseln Sie zur Liste der benutzerdefinierten Plug-Ins, um die Tabelle auszuwählen, für die der Fehler auftritt.

  4. Wählen Sie die Schritte für die SDK-Nachrichtenverarbeitung aus, die von den Lösungen stammen, die Ihnen gehören.

    Hinweis

    So zeigen Sie die Schritte zur Verarbeitung von benutzerdefinierten SDK-Nachrichten an:

    1. Wechseln Sie zu Einstellungen>Projektmappen, und öffnen Sie dann die Projektmappe.

    2. Wählen Sie SDK-Nachrichtenverarbeitungsschritte aus. Stellen Sie sicher, dass die Werte wie folgt ausgewählt sind: Komponententyp für SDK-Nachrichtenverarbeitungsschritt und Ansicht für alle.

  5. Wählen Sie Deaktivieren aus.

  6. Veröffentlichen Sie die Anpassungen.

    Wählen Und deaktivieren Sie nicht verwaltete benutzerdefinierte Plug-Ins.

  7. Überprüfen Sie das Problem, und wenn es nicht auftritt, liegt das Problem bei den benutzerdefinierten SDK-Nachrichtenverarbeitungsschritten vor. Beheben Sie das Problem.

Hinweis

Wenn das Problem auftritt, aktivieren Sie die SDK-Nachrichtenverarbeitungsschritte , die Sie jetzt deaktiviert haben, und versuchen Sie, benutzerdefiniertes JavaScript zu deaktivieren oder einen benutzerdefinierten Workflowprozess zu deaktivieren.

Deaktivieren von benutzerdefiniertem JavaScript

  1. Öffnen Sie den Formular-Editor der Tabelle, in der der Fehler auftritt. In diesem Beispiel wählen wir die Tabelle als Verkaufschancen und das Standardlösungsformular aus.

    Öffnen Sie den Formular-Editor.

  2. Wählen Sie im Formular-Editor Formulareigenschaften aus.

    Wählen Sie im Formular-Editor Formulareigenschaften aus.

    Das Dialogfeld Formulareigenschaften wird geöffnet.

  3. Wählen Sie auf der Registerkarte Ereignisse in der Dropdownliste Ereignisse das Steuerelement OnLoad aus.

    Wählen Sie in der Dropdownliste Ereignisse das Steuerelement OnLoad aus.

  4. Wählen Sie die benutzerdefinierten JavaScript-Dateien aus, die aus der Projektmappe stammen, die Sie besitzen.

    Hinweis

    So zeigen Sie Ihr benutzerdefiniertes JavaScript an:

    1. Wechseln Sie zu Einstellungen>Projektmappen, und öffnen Sie dann die Projektmappe.
    2. Wählen Sie WebResources aus. Vergewissern Sie sich, dass die Werte wie folgt ausgewählt sind: Komponententyp für WebResources und Alle anzeigen.
    3. Wählen Sie Filtersymbol aus, um Filteroptionen für Spalten zu aktivieren. Wählen Sie Typ aus, und legen Sie den Filter auf Skript (JScript) fest.

    Wählen Sie Typ aus, und legen Sie den Filter auf Skript (JScript) fest.

  5. Wählen Sie Bearbeiten aus. In diesem Beispiel haben wir die benutzerdefinierte JavaScript-Datei ausgewählt, eg_opportunity bearbeitet werden soll.

    Eingabedetails im Dialogfeld Handlereigenschaften.

  6. Deaktivieren Sie die Option Aktiviert , und wählen Sie OK aus.

    Deaktivieren Sie die Option Aktiviert im Dialogfeld Handlereigenschaften.

  7. Veröffentlichen Sie die Anpassungen.

  8. Überprüfen Sie das Problem, und wenn es nicht auftritt, liegt das Problem mit dem benutzerdefinierten JavaScript vor. Beheben Sie das Problem.

Hinweis

Wenn das Problem auftritt, aktivieren Sie das JavaScript, das Sie jetzt deaktiviert haben, und versuchen Sie, ein benutzerdefiniertes Plug-In zu deaktivieren oder einen benutzerdefinierten Workflowprozess zu deaktivieren.

Deaktivieren eines benutzerdefinierten Workflowprozesses

  1. Wechseln Sie zu Einstellungen>Anpassungen>System anpassen.

  2. Wählen Sie Prozesse aus. Zu diesen Prozessen gehören Workflow, Geschäftsprozessflow und Geschäftsregel.

    Eine Liste der verfügbaren Prozesse wird angezeigt.

  3. Wählen Sie das Symbol Filter aus, wählen Sie die Spalte Primäre Entität und dann die Tabelle aus, für die der Fehler auftritt.

    Wechseln Sie zur Workflowliste für benutzerdefinierte Prozesse, um die Tabelle auszuwählen, für die der Fehler auftritt.

  4. Wählen Sie die Prozesse aus, die aus den Lösungen stammen, die Ihnen gehören.

    Hinweis

    So zeigen Sie Ihre benutzerdefinierten Prozesse an:

    1. Wechseln Sie zu Einstellungen>Projektmappen, und öffnen Sie dann die Projektmappe.
    2. Wählen Sie Prozesse aus. Vergewissern Sie sich, dass die Werte wie folgt ausgewählt sind: Komponententyp für Prozesse und Alle anzeigen.
  5. Wählen Sie Deaktivieren aus.

  6. Veröffentlichen Sie die Anpassungen.

    Nicht verwaltete Prozessworkflows auswählen und deaktivieren.

  7. Überprüfen Sie das Problem, und wenn es nicht auftritt, liegt das Problem bei den benutzerdefinierten Prozessen. Beheben Sie das Problem.

Hinweis

Wenn das Problem auftritt, aktivieren Sie die Prozesse , die Sie jetzt deaktiviert haben, und versuchen Sie, ein benutzerdefiniertes Plug-In zu deaktivieren oder benutzerdefiniertes JavaScript deaktivieren.

Problem 3: Behandlung von benutzerdefinierten Plug-Ins mithilfe einer freigegebenen Variablen

Symptome

  • Erstellen und Aktualisieren von Vorgängen für Verkaufschancen-, Angebots-, Auftrags- und Rechnungstabellen lösen Aktualisierungen für die übergeordneten Tabellen aus.
  • Durch das interne Abrufen von Details zu den Tabellen Verkaufschancen, Angebot, Auftrag und Rechnung wird der Preisberechnungsdienst ausgelöst, der anschließend benutzerdefinierte Plug-Ins auslöst, die von Kunden erstellt wurden.

Lösung

Benutzerdefinierte Plug-Ins führen Erstellungs-, Aktualisierungs- und Speichervorgänge für Verkaufschancen-, Angebots-, Auftrags- und Rechnungstabellen aus. Die Erstellungs- und Aktualisierungsvorgänge für diese Tabellen lösen intern den Preisberechnungsdienst aus, der dann die zugeordneten preisbezogenen Felder oder Attribute ihrer übergeordneten Tabellen aktualisiert.

Sie können alle Aktualisierungen in Den Tabellen Verkaufschancen, Angebote, Bestellungen oder Rechnungen oder die übergeordneten Tabellen Verkaufschancen, Angebote, Bestellungen oder Rechnungen identifizieren oder unterscheiden, indem Sie den internen Preisberechnungsdienst oder Ihr eigenes benutzerdefiniertes Plug-In verwenden. Die boolesche freigegebene Variable InternalSystemPriceCalculationEvent, auf die über IPluginExecutionContextzugegriffen werden kann, ist im Plug-In-Code verfügbar. Jedes Mit dem Preisberechnungsdienst verarbeitete Erstellungs- oder Aktualisierungsereignis legt den Wert der Variablen InternalSystemPriceCalculationEvent auf fest true. Der Standardwert von InternalSystemPriceCalculationEvent ist false. Sie können auf diese Variable aus Ihrem benutzerdefinierten Plug-In-Code zugreifen, um den Fluss Ihrer vorhandenen Geschäftslogik zu steuern.

Hinweis

Um benutzerdefinierte Plug-In-Vorgänge mithilfe einer freigegebenen Variablen auszuführen, stellen Sie sicher, dass der sofort einsatzbereite Preisberechnungsdienst deaktiviert ist.

Beispielcode

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
    }

}