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.
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.
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
- Deaktivieren von benutzerdefiniertem JavaScript
- Deaktivieren eines benutzerdefinierten Workflowprozesses
Deaktivieren eines benutzerdefinierten Plug-Ins
Wechseln Sie zu Einstellungen>Anpassungen>System anpassen.
Wählen Sie SDK-Nachrichtenverarbeitungsschritte aus.
Eine Liste der verfügbaren SDK-Nachrichtenverarbeitungsschritte wird angezeigt.
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.
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:
Wechseln Sie zu Einstellungen>Projektmappen, und öffnen Sie dann die Projektmappe.
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.
Wählen Sie Deaktivieren aus.
Veröffentlichen Sie die Anpassungen.
Ü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
Ö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.
Wählen Sie im Formular-Editor Formulareigenschaften aus.
Das Dialogfeld Formulareigenschaften wird geöffnet.
Wählen Sie auf der Registerkarte Ereignisse in der Dropdownliste Ereignisse das Steuerelement OnLoad aus.
Wählen Sie die benutzerdefinierten JavaScript-Dateien aus, die aus der Projektmappe stammen, die Sie besitzen.
Hinweis
So zeigen Sie Ihr benutzerdefiniertes JavaScript an:
- Wechseln Sie zu Einstellungen>Projektmappen, und öffnen Sie dann die Projektmappe.
- Wählen Sie WebResources aus. Vergewissern Sie sich, dass die Werte wie folgt ausgewählt sind: Komponententyp für WebResources und Alle anzeigen.
- 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 Bearbeiten aus. In diesem Beispiel haben wir die benutzerdefinierte JavaScript-Datei ausgewählt, eg_opportunity bearbeitet werden soll.
Deaktivieren Sie die Option Aktiviert , und wählen Sie OK aus.
Veröffentlichen Sie die Anpassungen.
Ü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
Wechseln Sie zu Einstellungen>Anpassungen>System anpassen.
Wählen Sie Prozesse aus. Zu diesen Prozessen gehören Workflow, Geschäftsprozessflow und Geschäftsregel.
Eine Liste der verfügbaren Prozesse wird angezeigt.
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.
Wählen Sie die Prozesse aus, die aus den Lösungen stammen, die Ihnen gehören.
Hinweis
So zeigen Sie Ihre benutzerdefinierten Prozesse an:
- Wechseln Sie zu Einstellungen>Projektmappen, und öffnen Sie dann die Projektmappe.
- Wählen Sie Prozesse aus. Vergewissern Sie sich, dass die Werte wie folgt ausgewählt sind: Komponententyp für Prozesse und Alle anzeigen.
Wählen Sie Deaktivieren aus.
Veröffentlichen Sie die Anpassungen.
Ü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 IPluginExecutionContext
zugegriffen 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
}
}
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für