Ereignisse
Power BI DataViz Weltmeisterschaften
14. Feb., 16 Uhr - 31. März, 16 Uhr
Mit 4 Chancen, ein Konferenzpaket zu gewinnen und es zum LIVE Grand Finale in Las Vegas zu machen
Weitere InformationenDieser Browser wird nicht mehr unterstützt.
Führen Sie ein Upgrade auf Microsoft Edge aus, um die neuesten Funktionen, Sicherheitsupdates und technischen Support zu nutzen.
Dieser Artikel enthält Informationen, die Ihnen sollen, einige der häufigsten Probleme zu beheben, die bei der Arbeit mit modellgesteuerten App-Formularen auftreten können.
Wichtig
Wenn Sie Probleme mit Formularen beheben, müssen Sie die URL-Parameter verwenden, um Komponenten zu deaktivieren, während Sie daran arbeiten, die spezifische Komponente zu isolieren, die das Problem verursacht hat. Wir empfehlen, dass Sie die Flags einzeln verwenden, um die Ursache des Problems einzugrenzen. Sie können die folgenden URL-Parameter verwenden:
DisableFormCommandbar
Deaktiviert die Befehlsleiste im Formular. Es deaktiviert nur die Befehlsleiste auf Formularseiten und unterstützt keine Liste (Raster), Dashboard usw.
https://myorg.crm.dynamics.crm/main.aspx?appid=00000000-0000-0000-0000-000000000000&pagetype=entityrecord&id=00000000-0000-0000-0000-000000000000**&flags=DisableFormCommandbar=true
DisableFormHandlers
Deaktiviert alle Formularhandler. Wenn Sie das Flag DisableFormHandlers=true verwenden, werden folgende Ereignishandler deaktiviert: OnLoad, OnSave, Geschäftsregel OnChange und TabStateChange.
Weitere Informationen zum Abrufen von Ereignis- oder Bibliotheksindizes für granulare Steuerelemente finden Sie unter Registrierte Formularereignishandler und Bibliotheken im Monitor anzeigen.
https://myorg.crm.dynamics.crm/main.aspx?appid=00000000-0000-0000-0000-000000000000&pagetype=entityrecord&id=00000000-0000-0000-0000-000000000000**&flags=DisableFormHandlers=true
&flags=DisableFormHandlers=eventName
Deaktiviert den Formularhandler durch Angabe des Ereignisnamens, beispielsweise **DisableFormHandlers=onload.
https://myorg.crm.dynamics.crm/main.aspx?appid=00000000-0000-0000-0000-000000000000&pagetype=entityrecord&id=00000000-0000-0000-0000-000000000000**&flags=DisableFormHandlers=true
&flags=DisableFormHandlers=eventName_index
Deaktiviert den Ereignishandler am angegebenen Index für alle unterstützten Ereignisnamen. Zum Beispiel deaktiviert DisableFormHandlers=true_0
alle Ereignishandler bei Index 0.
DisableFormHandlers=onload_2
deaktiviert den OnLoad-Ereignishandler bei Index 2.
&flags=DisableFormHandlers=eventName_startIndex_endIndex
Deaktiviert alle Ereignishandler innerhalb des angegebenen Bereichs durch Angabe der Werte startIndex
und endIndex
(beide sind enthalten). Zum Beispiel deaktiviert DisableFormHandlers=true_0_2
alle Ereignishandler von Index 0, 1 und 2.
DisableFormHandlers=onload_2_5
deaktiviert den OnLoad-Ereignishandler von Index 2, 3, 4 und 5. Wenn Sie über mehr Ereignishandler verfügen, können Sie mit diesem Ansatz problematische Handler schnell eingrenzen.
Hinweis
Geschäftsregeln werden im Geschäftsregel-Designer erstellt, in das clientseitige Skript kompiliert und in mehreren Formularereignissen registriert, wie z. B. OnLoad
, OnSave
, und OnChange
. Die Vorgehensweise zum Deaktivieren von Geschäftsregeln ist anderen Formularereignissen sehr ähnlich. Es gibt mehrere entscheidende Unterschiede:
DisableFormHandlers=true
, businessrule
, businessrule_*index*
, oder businessrule_*startIndex_endIndex*
verwenden, deaktivieren Sie die Geschäftsregeln in allen Formularereignissen, für die sie registriert sind.DisableFormLibraries
Deaktiviert Formularbibliotheken und verhindert das Laden der Bibliotheken. Weitere Informationen zum Abrufen von Ereignis- oder Bibliotheksindizes für granulare Steuerelemente finden Sie unter Registrierte Formularereignishandler und Bibliotheken im Monitor anzeigen . Die Verwendung ist ähnlich wie DisableFormHandlers
, außer dass als Wert kein Ereignisname verwendet wird.
DisableWebResourceControls
Deaktiviert alle Webressourcensteuerelemente im Formular.
https://myorg.crm.dynamics.crm/main.aspx?appid=00000000-0000-0000-0000-000000000000&pagetype=entityrecord&id=00000000-0000-0000-0000-000000000000**&flags=DisableWebResourceControls=true
DisableFormControl
Deaktiviert ein Formularsteuerelement. Geben Sie den Namen des Steuerelements an, um das Steuerelement zu deaktivieren. Wenn Sie sehen, dass das Problem mit &flags=DisableWebResourceControls=true verschwindet, und das Formular mehr als ein Webressourcensteuerelement enthält, können Sie diese Flag verwenden, um das Steuerelement weiter zu identifizieren, das das Problem verursacht.
https://myorg.crm.dynamics.crm/main.aspx?appid=00000000-0000-0000-0000-000000000000&pagetype=entityrecord&id=00000000-0000-0000-0000-000000000000**&flags=DisableFormControl=controlname
DisableBusinessProcessFlow
Deaktiviert alle Geschäftsprozessflüsse auf dem Formular.
https://myorg.crm.dynamics.crm/main.aspx?appid=00000000-0000-0000-0000-000000000000&pagetype=entityrecord&id=00000000-0000-0000-0000-000000000000**&flags=DisableBusinessProcessFlow=true
navbar Dies ist kein flag-Parameter; verwenden Sie stattdessen navbar=off in der URL.
Sie können auch mehrere durch Komma (,) getrennte URL-Parameter hinzufügen.
https://myorg.crm.dynamics.crm/main.aspx?appid=00000000-0000-0000-0000-000000000000&pagetype=entityrecord&id=00000000-0000-0000-0000-000000000000**&flags=DisableFormHandlers=true,DisableWebResourceControls=true,DisableFormCommandbar=true,DisableBusinessProcessFlow=true&navbar=off
Hinweis
Die Unterschiede zwischen DisableFormHandler und DisableFormLibraries sind:
new_myscript.js
wie folgt geschrieben ist (nicht empfohlene Praxis):myOnloadHandler
ist registriert als ein OnLoad
-Ereignishandler. Die Flag DisableFormHandlers=true
verhindert nur die zweite Warnung, während die Flag DisableFormLibraries=true
beide Warnungen verhindert.Um registrierte Formularereignis-Handler und -bibliotheken anzuzeigen, können Sie die Operation FormEvents
in Monitor anzeigen.
Sie benötigen die Parameterwerte eventIndex
und libraryIndex
bei Verwendung der URL-Flags DisableFormHandlers oder DisableFormLibraries. Nachdem ein Ereignis oder eine Bibliothek deaktiviert wurde, wird der Status „Ereignis aktiviert“ in beiden FormularEvents-Vorgängen angezeigt (eine Gesamtansicht aller registrierten Ereignishandler aller Ereignisse) und im Vorgang FormEvents.eventName (Details werden protokolliert, wenn ein bestimmtes Ereignis eintritt).
Einige häufige Probleme, die beim Laden eines modellgesteuerten App-Formulars zu unerwartetem Verhalten führen können, sind:
Es gibt mehrere Gründe, warum beim Öffnen eines Formulars unerwartetes Verhalten auftreten kann. Eine der häufigsten sind die OnLoad Skripte, die synchron oder asynchron ausgeführt werden, um das Spalten- oder Steuerungsverhalten zu ändern. Um festzustellen, ob Ihr Skript das Problem verursacht, können Sie die Formularhandler deaktivieren, indem Sie &flags=DisableFormHandlers=true an das Ende der App-URL anfügen.
Wenn das unerwartete Verhalten nach dem Deaktivieren des Formularhandlers nicht mehr auftritt, ist dies ein starker Hinweis darauf, dass der bestimmte Formularhandler dieses Verhalten verursacht. Wenn Sie das Skript identifizieren, das dieses Verhalten verursacht, unternehmen Sie eine Nachverfolgung bei dem Skriptbesitzer, um dieses Problem weiter zu beheben.
Wenn Sie ein Formular speichern, sehen Sie manchmal eine Wird gespeichert ...-Fehlermeldung.
Dieser Fehler tritt auf, wenn das Formularereignis OnSave ausgelöst wird, ehe das vorherige OnSave-Ereignis abgeschlossen wird. Dieses Verhalten wird nicht unterstützt, und der Fehler ist Design-bedingt, da der Aufruf des OnSave
-Ereignisses vor dem Abschluss des vorherigen OnSave
-Ereignisses rekursive Speicherschleifen mit unbeabsichtigten Folgen verursacht.
Eine typische Ursache für diesen Fehler ist das Skript, das die save()
-Methode im OnSave-Ereignishandler aufruft. Eine andere mögliche Ursache können gleichzeitige save()
-Aufrufe in der setTimeout()
-Methode sein, die dazu führen, dass der Fehler zeitweise angezeigt wird, je nachdem, ob der vorherige save()
-Aufruf abgeschlossen ist, ehe ein weiterer save()
-Aufruf getätigt wird.
In Monitor bietet der FormEvents.onsave
-Vorgang alle Details, die den Fehler verursachen (diese Aufrufliste wird zu Demonstrationszwecken geändert). Die Aufrufliste gibt an, welche genaue Webressource, Funktion, Zeile und Zeilennummer diesen Fehler verursacht. Die Formularüberprüfung kann den Fehler nicht erkennen, wenn das Problem nicht reproduziert werden kann.
Nachverfolgung mit dem Skriptbesitzer, um das Problem weiter zu beheben.
Die häufigste Ursache für intermittierende oder zufällige Formularfehler ist die Verwendung nicht unterstützter Client-API-Methoden. Diese Fehler weisen folgende Merkmale auf:
Es gibt viele Möglichkeiten, nicht unterstützte Client-API-Methoden zu schreiben, und alle haben ein gemeinsames Muster: Sie verursachen eine Race-Bedingung in der Formularladungs-Pipeline. Da sie eine Race-Bedingung einführen, tritt das Problem nur auf, wenn das benutzerdefinierte Skript ausgeführt wird, bevor das Formular vollständig für den Zugriff über die Client-API bereit ist. Viele Faktoren können eine Race-Bedingung verursachen:
In der JavaScript-Webressource wird Code in einem globalen Bereich platziert, der sofort ausgeführt wird, wenn die Webressourcendatei geladen wird, ohne darauf zu warten, dass das Formular zugriffsbereit ist. Stellen Sie sicher, dass der Code in einem gültigen Formularhandler ausgeführt wird, beispielsweise in einem OnLoad-Handler.
In der Komponentenskriptdatei des Power Apps Component Framework wird auf Client API-Methoden innerhalb der init- oder updateView-Funktion zugegriffen. Die Funktionen init()
und updateView()
werden sofort ausgeführt, wenn die Komponente geladen wird, ohne darauf zu warten, ob ohne Weiteres auf das Formular zugegriffen werden kann. Sie können keine nicht unterstützten Client-API-Methoden in Komponenten des Power Apps Component Framework verwenden.
Auf die Client-API wird innerhalb von einer window.setTimeout()
-Funktion in der Webressourcendatei zugegriffen. Der Seitenstatus ist unvorhersehbar, wenn die setTimeout()
-Methode die umschlossene Funktion ausführt. Aufgrund der Natur der Zeitgeberfunktion befindet sich die Seite bei der Ausführung möglicherweise in einem Übergangszustand (während des Ladens oder Speicherns der Seite), auf den die Client-API nicht ohne weiteres zugreifen kann.
Mit Monitor können Sie auf Informationen zugreifen, mit denen Sie feststellen können, wann der nicht unterstützte Clientzugriff stattgefunden hat und wann der Zugriff aufgrund einer Race-Bedingung zur falschen Zeit erfolgte. Die Formularüberprüfung meldet einen solchen nicht unterstützten Clientzugriff jedoch nicht, wenn der nicht unterstützte Code zum richtigen Zeitpunkt ausgeführt wird, der kein Problem verursacht.
Hinweis
Der Aufrufstapel wurde zu Illustrationszwecken geändert. Die Aufrufliste zeigt Details wie Webressource, Funktion und die den Fehler verursachende Zeile an.
Nachverfolgung mit dem Skriptbesitzer, um das Problem weiter zu beheben.
Eine häufige Ursache ist ein OnSave-Ereignishandler, der die executionContext.getEventArgs().preventDefault()-Methode aufruft, um den Speichervorgang abzubrechen.
In Monitor liefert der FormEvents.onsave
-Vorgang alle Details dazu, warum das Sicherungsereignis abgebrochen wird, Details, die über die Formular-UI selbst verfügbar sind.
Nachverfolgung mit dem Skriptbesitzer, um das Problem weiter zu beheben.
Es gibt viele mögliche Gründe dafür, dass ein Formular einfriert, langsam geladen wird oder einen Skriptfehler vom Typ „Webressourcenmethode existiert nicht“ oder einen Fehler auslöst, der kein häufiger Skriptfehler ist. Zu den möglichen Gründen zählen:
OnLoad
-Skripte.Stellen Sie fest, ob das Problem ohne Einbeziehung von Formularen reproduziert wird. Wenn dies der Fall ist, gibt es ein umfassenderes Problem, das außerhalb des Kontexts des Formulars untersucht werden sollte. Die tatsächliche Verantwortung für das Problem hängt von den jeweiligen Details von Fall zu Fall ab.
DisableFormControl
-Flag verwenden, um jeden einzeln zu deaktivieren, bis das Problem länger reproduziert wird. Das Letzte deaktivierte Steuerelement, das das Problem nicht reproduziert, ist dasjenige, das das Problem verursacht. Nachverfolgung mit dem Besitzer der Steuerelements, um das Problem weiter zu beheben.Dieses Problem tritt auf, wenn eine Geschäftsregel oder ein benutzerdefiniertes Skript, das früher im Legacy-Webclient funktioniert hat, in Einheitliche Oberfläche nicht mehr funktioniert. Einer der Hauptgründe für das Auftreten dieses Fehlers ist, dass eine Geschäftsregel oder ein Skript in der einheitlichen Oberfläche auf ein Steuerelement verweist, das in der einheitlichen Oberfläche nicht verfügbar ist.
Einer der Gründe dafür, dass die Geschäftsregel oder das Skript in Einheitliche Oberfläche nicht funktioniert, besteht darin, dass die zugehörigen Steuerelemente in Einheitliche Oberfläche nicht vorhanden sind.
Zusammengesetzte Steuerelemente sind im Webclient vorhanden, aber in Einheitliche Oberfläche sind zusammengesetzte Steuerelemente in Teile zerlegt und anders gespeichert. Wenn beispielsweise die Spalte fullname
Teil der Geschäftsregel oder des benutzerdefinierten Skripts ist, sollte Spalten firstname
, middlename
, oder lastname
stattdessen verwendet werden.
Sobald Sie die Formularüberprüfung starten, können Sie weitere Details in dem CompositeControl
-Vorgang einschließlich des zusammengesetzten Steuerelements sehen, das das Problem verursacht, der Spalten, die stattdessen in der Geschäftsregel oder dem benutzerdefinierten Skript verwendet werden können, und einer vollständigen Aufrufliste (die Aufrufliste wird zu Demonstrationszwecken geändert).
Nachverfolgung mit dem entsprechenden Besitzer der Geschäftsregel oder des benutzerdefinierten Skripts, um das vom Formularprüfer vorgeschlagene Steuerelement zu ändern.
Die meisten Formulare verfügen über eine Registerkarte Verknüpft. Es öffnet das Verknüpfte Menü mit Verknüpften Menüelementen.
Ein Verknüpftes Menüelement wird möglicherweise nicht wie erwartet angezeigt.
Ein verknüpftes Menüelement wird möglicherweise nicht angezeigt, weil:
Zwischen der Haupttabelle und der zugehörigen Tabelle sollte eine Eins-zu-viele- oder Viele-zu-viele-Beziehung bestehen. Ein Formular zeigt eine Zeile aus der Haupttabelle. Die verknüpfte Tabelle ist diejenige, die im Menü Verknüpft des Formulars erscheinen sollte. Wenn diese Beziehungen nicht vorhanden sind, wird der verknüpfte Menüpunkt nicht angezeigt.
Gehen Sie zum Verifizieren zum Power Apps-Portal, wählen Sie Tabellen und wählen Sie die Tabelle aus, die die Beziehung enthält, die Sie anzeigen möchten.
Das Menü Verknüpft zeigt keine verknüpften Tabellen von bestimmten Beziehungen an, die von Dataverse erstellt wurden. Diese Beziehungen sind als nicht anpassbar markiert.
Die AssociatedMenuConfiguration.IsCustomizable-Eigenschaft gibt an, ob die Beziehung angepasst werden kann. Die einfachste Möglichkeit zur Überprüfung besteht darin, die Beziehung mithilfe der Web-API abzufragen, um die Daten des AssociatedMenuConfiguration-Komplextyps anzuzeigen.
Angenommen, Sie möchten überprüfen, ob die Beziehung zwischen den Tabellen Geschäftseinheit und Ziel anpassbar ist. Der SchemaName
dieser Beziehung ist business_unit_goal. Geben Sie diese URL in Ihrem Browser ein:
GET [Organization URI]/api/data/v9.2/RelationshipDefinitions(SchemaName='business_unit_goal')/Microsoft.Dynamics.CRM.OneToManyRelationshipMetadata?$select=AssociatedMenuConfiguration
Sie können dieselben Daten auch erhalten, indem Sie die Tabellendefinition abfragen:
GET [Organization URI]/api/data/v9.2/EntityDefinitions(LogicalName='businessunit')/OneToManyRelationships(SchemaName='business_unit_goal')/AssociatedMenuConfiguration
Die Antwort für beide Anfragen könnte wie folgt aussehen:
{
"@odata.context": "[Organization URI]/api/data/v9.2/$metadata#RelationshipDefinitions/Microsoft.Dynamics.CRM.OneToManyRelationshipMetadata(AssociatedMenuConfiguration)/$entity",
"MetadataId": "2124b4bd-f013-df11-a16e-00155d7aa40d",
"AssociatedMenuConfiguration": {
"Behavior": "UseCollectionName",
"Group": "Details",
"Order": null,
"IsCustomizable": false,
"Icon": null,
"ViewId": "00000000-0000-0000-0000-000000000000",
"AvailableOffline": true,
"MenuId": null,
"QueryApi": null,
"Label": {
"LocalizedLabels": [],
"UserLocalizedLabel": null
}
}
}
Beachten Sie, dass IsCustomizable
gleich false
ist. Daher ist die Beziehung nicht anpassbar und das Ziel erscheint nicht im Menü Verknüpft.
Wenn die Tabelle im Web Client erstellt wurde (veraltet seit 2019), wird sie möglicherweise nicht angezeigt, da sie für Unified Client deaktiviert ist.
Gehen Sie zur Überprüfung zum Lösungs-Explorer und wählen Sie die Tabelle (Entität) aus. Stellen Sie sicher, dass Für Unified Client aktivieren aktiviert ist.
Bei Tabellen, die mit dem modernen Designer erstellt wurden, tritt dieses Problem nicht auf. Sie sind immer für Unified Client aktiviert.
Hinweis
Bestimmte Systemtabellen können nicht für Unified Client aktiviert werden. Beispielsweise kann Prozesssitzung nicht in modellgesteuerten Apps verwendet werden.
Überwachungsverlauf befindet sich nicht im Menü „Verknüpft“.
Der Überwachungsverlauf wird in den folgenden Fällen nicht unterstützt:
Ein Verknüpftes Menüelement erscheint vielleicht, obwohl es nicht erscheinen sollte.
Ein verknüpftes Menüelement wird möglicherweise angezeigt, weil:
Das System ignoriert Formular-XML-Anpassungen für auf sich selbst verweisende n:n-Beziehungen. Das System ignoriert diese Anpassungen, da nicht angegeben werden kann, ob die Anpassungen für die primäre Tabelle oder die zugehörige Tabelle gelten, bei denen es sich in diesem Fall um dieselbe Tabelle handelt. Daher ignoriert das System diese Anpassungen.
Wenn Sie die Formular-XML ändern, um das zugehörige Menüelement auszublenden, wird es trotzdem angezeigt. Alle Formular-XML-Anpassungen zu auf sich selbst verweisenden Beziehungen, wie etwa das Ändern der Reihenfolge oder der Bezeichnung des zugehörigen Elements, werden ignoriert.
Benutzerdefinierte Tabellen zeigen zum Beispiel immer das verknüpfte Menüelement Aktivitäten an. Es ist nicht möglich, es mit dem Formulardesigner oder durch Ändern der Formular-XML auszublenden.
Der Text für verknüpfte Menüelemente erscheint nicht in der erwarteten Sprache.
Wenn einige verknüpfte Menüelemente in einer anderen Sprache als der der Benutzenden angezeigt werden, prüfen Sie, ob in der Formular-XML übersetzte Beschriftungen fehlen.
Überprüfen Sie in der Formular-XML, ob für jede Sprache Beschriftungen festgelegt sind. Dieses Formular-XML zeigt beispielsweise, dass das navContacts
-Element nur die Bezeichnung in amerikanischem Englisch (1033) hat: Contacts
.
<NavBarByRelationshipItem Id="navContacts" Area="Sales" Sequence="10064" RelationshipName="contact_customer_accounts" Show="true">
<Titles>
<Title LCID="1033" Title="Contacts" />
</Titles>
</NavBarByRelationshipItem>
Um dieses Problem zu beheben, fügen Sie die übersetzten Beschriftungen der Formular-XML hinzu. Diese Formular-XML zeigt beispielsweise, dass das navContacts
-Element Beschriftungen in amerikanischem Englisch (1033) und Deutsch (1031) hat.
<NavBarByRelationshipItem Id="navContacts" Area="Sales" Sequence="10064" RelationshipName="contact_customer_accounts" Show="true">
<Titles>
<Title LCID="1033" Title="Contacts" />
<Title LCID="1031" Title="Kontakte" />
</Titles>
</NavBarByRelationshipItem>
Wenn kein Text für die Sprache des Benutzenden festgelegt ist, verwendet das System die Ausgangssprache der Organisation. Ist auch dieser nicht vorhanden, verwendet das System den Text in amerikanischem Englisch.
Die Formularauswahl ist ein Dropdown-Menü, mit dem Benutzer zwischen verschiedenen Formularen für eine bestimmte Tabelle wechseln können.
Sie müssen die Bedingungen verstehen, die steuern, ob das Formular angezeigt wird.
Wenn alle folgenden Bedingungen erfüllt sind, ist in der Auswahl ein Formular verfügbar:
Wenn ein Formular nicht in der Formularauswahl angezeigt wird,
Wenn für eine Tabelle mehrere Formulare vorhanden sind, wird das gewünschte nicht als Standard verwendet.
Die folgenden Kriterien bestimmen, welches Formular dem Benutzer zuerst angezeigt wird:
Wenn das Formular für den Benutzer nicht verfügbar ist, sucht das System weiterhin nach einem geeigneten Formular zur Anzeige.
Ein Formular steht dem Benutzer zur Verfügung, wenn:
Wenn Benutzenden keine Formulare zur Verfügung stehen, wird das Ausweichformular verwendet.
Es gibt viele mögliche Gründe, warum ein Steuerelement beim Laden des Formulars deaktiviert oder ausgeblendet ist.
Sie können Monitor verwendenl, um die FormControls
-Operation zu sehen, die alle Details zum anfänglichen Steuerelementstatus beim Laden des Formulars enthält.
Ein weiterer Ort zum Überprüfen ist der Vorgang ControlStateChange.visible
oder ControlStateChange.disabled
, der erklärt, warum der Steuerelement-Deaktivierungs- oder Sichtbarkeitsstatus jederzeit auf dem Formular geändert wird. Dieser Vorgang erklärt den Steuerungszustand vor der Änderung, die beabsichtigte Zustandsänderung, die erfolgreich sein kann, und den Zustand nach der Änderung. Nicht alle Versuche zur Änderung des Steuerzustands sind erfolgreich. Für ein durch Formular-XML deaktiviertes Steuerelement können Sie es über die Client-API in einem OnLoad
-Ereignishandler. Wenn die Steuerung jedoch aus Sicherheitsgründen deaktiviert ist, ist es sehr unwahrscheinlich, dass ein Versuch, sie über die Client-API zu aktivieren, den Status erfolgreich ändern würde.
Ein Steuerelement kann deaktiviert werden, indem Sie die folgende Regelliste verwenden. Wenn eine Regel erfüllt ist, werden die folgenden Regeln ignoriert. Wenn Sie ändern möchten, ob ein Steuerelement deaktiviert ist, müssen Sie die Eingabe in die für das Ergebnis verwendete Regel oder in eine Regel weiter oben in der Liste ändern.
DisableWebResourceControls=true
oder DisableFormControl=<control name>
übergeben werden und Auswirkungen auf das Steuerelement haben, wird das Steuerelement deaktiviert.IsValidforCreate
auf false gesetzt hat, ist das Steuerelement deaktiviert.IsValidforUpdate
auf false gesetzt hat, ist das Steuerelement deaktiviert.Assign to
Rechte hat, ist die Besitzerspalte deaktiviert.Append To
Rechte für die Tabelle des Suchsteuerelements oder Append
Rechte für die Tabelle des aktuellen Datensatzes hat, ist das Suchsteuerelement deaktiviertWenn das Steuerelement alle oben genannten Prüfungen besteht, bestimmt der Datensatzstatus schließlich, ob das Steuerelement deaktiviert ist. Das Steuerelement ist standardmäßig für aktive Datensätze aktiviert und für inaktive Datensätze deaktiviert.
Hinweis
Der Unterschied zwischen FormControls
und ControlStateChange
ist, dass die FormControls
-Operation den anfänglichen Steuerstatus widerspiegelt, wenn das Formular geladen wird, während die ControlStateChange
-Operation die Zustandsänderung jederzeit im Formular widerspiegelt, sei es während des Ladens des Formulars, in OnChange- oder OnSave-Ereignissen nach dem Laden des Formulars.
Wichtig
Der deaktivierte und ausgeblendete Status eines Steuerelements kann sich beim ersten Laden eines Formulars mehrmals ändern. Um den Grund zu erfahren, warum ein Steuerelement ausgeblendet oder deaktiviert ist, überprüfen Sie den letzten im Monitor protokollierten Vorgang. Wenn zum Beispiel keine ControlStateChange.visible/ControlStateChange.hidden
-Operationen für die zu untersuchende Kontrolle vorhanden ist, befinden sich der Wert und die Begründung in der FormControls
-Operation. Andernfalls sind es der Wert und Grund im letztenControlStateChange.visible/ControlStateChange.hidden
-Vorgang. Sie können Protokolle nach Zeitstempel sortieren, um nach dem letzten Vorgang zu suchen.
Ein Steuerelement kann einen bestimmten Wert beim Laden des Formulars nicht haben, wie vom Benutzer erwartet.
Es gibt viele mögliche Gründe, warum das Steuerelement beim Laden eines Formulars einen Wert haben kann. Die ControlDefaultValue
-Operation in Monitor erklärt die Quelle der Standardwerte.
Wenn der Wert eines Steuerelements mehrfach aktualisiert wird, zeigt Update Sequence
den Endwert an. Hier ist beispielsweise ein Steuerelement mit einem Standardwert, das dann mit einem Wert überschrieben wird, der mit einem Client-API-Skript übergeben wird. Es ist ein Aufrufstapel vorhanden.
Es gibt Szenarien, in denen Spalten auf der Basis einer Beziehungsspalten-Zuordnung aufgefüllt werden; in diesem Fall zeigt das Ereignis das an.
Überprüfen Sie, woher der Wert kommt, und ergreifen Sie anhand der folgenden Tabelle Maßnahmen:
Ausgangssprache | Vorgehensweise zur Behebung |
---|---|
Client-API-Skript | Kontaktieren Sie den Besitzer des Skripts. |
Standardwert | Überprüfen Sie die Konfiguration des Steuerelements. |
Beziehungsspalten-Zuordnung | Überprüfen Sie die Beziehungskonfiguration und aktualisieren Sie die Zuordnung der Spalte. |
Von Seiteneingabedaten übergebener Wert wird über URL übergeben | Prüfen Sie, ob die API, die das betreffende Formular öffnet, den Wert weitergibt. |
Es gibt viele mögliche Gründe dafür, warum eine Registerkarte oder ein Abschnitt ausgeblendet oder sichtbar ist.
Die Operationen TabStateChange
oder SectionStateChange
in Monitor erklären die sichtbare Statusänderung, wie im folgenden Bild gezeigt. Wenn dies durch ein Skript verursacht wird, zeigt die Aufrufliste die Webressourcendatei, die Zeilennummer und den Funktionsnamen an, die dieses Verhalten verursacht haben.
Nachverfolgung gemäß dem Vorschlag im Zustandsgrund oder dem Eigentümer der Webressource/Geschäftsregeln, um das Verhalten zu ändern oder zu beheben.
Es gibt viele mögliche Gründe, warum ein Dialogfeld angezeigt wird oder die Navigation unerwartet erfolgt. Eine der häufigsten Ursachen ist die Xrm.Navigation-API-Methoden werden aufgerufen, um einen Datensatz oder ein Formular von einem benutzerdefinierten Skript zu öffnen. Wenn Sie beispielsweise ein Formular öffnen, wird eine Benachrichtigung angezeigt, wie in der folgenden Abbildung dargestellt.
Die XrmNavigation
-Operation in Monitor enthält eine Aufrufliste, die Ihnen hilft, das Skript zu identifizieren, das unerwartetes Verhalten verursacht.
Nachverfolgung mit dem Eigentümer der Webressource, um das Verhalten zu ändern oder zu beheben.
Beim Öffnen eines Schnellerfassungsformulars aus einer Suche oder einem Raster wird möglicherweise ein anderes Formular (Bearbeitungs- oder Hauptformular) anstelle eines Schnellerfassungsformulars geöffnet. Es gibt einige Gründe, warum dieses Problem auftreten kann:
Sie können Monitor verwenden, um den FormType
-Vorgang zu sehen, der alle Gründe enthält, warum ein Schnellerfassungsformular nicht geöffnet wird.
Sie müssen mit dem Tabellenbesitzer Nachverfolgung sprechen, der die Schnellerfassung durch Tabellendefinitionen (Metadaten) deaktiviert hat.
Wenn Sie das globale Schnellstart-Menü-Flyout öffnen, sind nicht alle Tabellen verfügbar. Es gibt einige Gründe, warum die Tabellen in dieser Liste gefiltert sind:
Sie können Monitor verwenden, um den QuickCreateMenu
-Vorgang zu sehen, der alle Tabellen und Gründe für deren Filterung aus dem Flyout des Schnellerfassungsmenüs enthält.
Sehen Sie sich die folgenden Beispiele an, um die Gründe für die Filterung zu verstehen. Wenden Sie sich anhand der Erklärungen an die verantwortliche Stelle oder nehmen Sie entsprechende Änderungen vor.
Bei der Bearbeitung von Formularen erhalten Sie eine Meldung zu nicht gespeicherten Änderungen in der Formularfußzeile, wenn Sie das aktuelle Formular verlassen oder das Formular ohne Änderungen speichern.
Die Fehlermeldung nicht gespeicherte Änderungen tritt auf, wenn Sie das Formular ändern und die Änderungen nicht gespeichert werden. Wenn Sie keine Änderungen manuell vorgenommen haben, stammen diese möglicherweise von einem JavaScript, einem Plug-In oder einer Geschäftsregel. Sie können Überwachen verwenden, um den Vorgang UnsavedChanges
anzuzeigen, das bei der Suche nach der Quelle der Änderungen hilft. Sie können nach OperationType UnsavedChanges
filtern.
Der Abschnitt all attributes modified
enthält eine kurze Zusammenfassung der Spalten, die den Fehler aufgrund nicht gespeicherter Änderungen und ihren Werten verursachen. Der Abschnitt unsaved changes
zeigt, was mit den Spalten im Detail passiert ist. Für jede Spalte können Sie eine Liste von Steuerelementen sehen, die eine Änderung verursachen könnten. Die Wertänderung wird ebenfalls angezeigt (previousValue, newValue) sowie eine Aufrufliste.
Der folgende Screenshot zeigt die Ursache des Problems. Sie können sehen, dass die Änderung vom OnLoad
-Skript herrührte.
Hinweis
Wenn der Benutzer die Änderungen am Formular manuell vorgenommen hat, wird keine Aufrufliste bereitgestellt.
Überprüfen Sie, woher die Änderung kommt und ob das Verhalten erwartet wird oder nicht. Wenn ein Skript die Änderung verursacht, kann die ursprüngliche Webressource in der Aufrufliste zurückverfolgt werden. In den meisten Fällen handelt es sich um ein Skript. Treffen Sie eine Entscheidung basierend auf der Webressource selbst.
Geschäftsrelevante Spalten blockieren standardmäßig den Vorgang zum Speichern des Formulars, wenn der Wert leer ist. In vielen entwurfsbedingten Szenarien kann es jedoch sein, dass eine geschäftserforderliche Spalte den Speichervorgang nicht blockiert, wenn der Wert leer ist, oder die Speicherung blockiert, wenn Sie der Meinung sind, dass dies nicht der Fall sein sollte.
Der RequiredFieldValidation
-Vorgang wird protokolliert, wenn ein Speicherversuch unternommen wird, unabhängig davon, ob der Speichervorgang erfolgreich war oder nicht. Dieser Vorgang erklärt, warum jede geschäftserforderliche Spalte den Speichervorgang blockiert oder nicht blockiert.
Das folgende Bild ist ein Beispiel für diesen Vorgang. Die Nachricht erklärt, wie die detaillierten Berichte jeder erforderlichen Spalte gelesen werden. In diesem Beispiel ist die Spalte fax
an ein Steuerelement gebunden, und das Steuerelement mit demselben Namen ist schreibgeschützt. Daher wird die erforderliche Spaltenvalidierung nicht ausgelöst.
Das folgende Bild ist ein weiteres Beispiel, in dem jobtitle
eine geschäftlich erforderliche Spalte im Geschäftsprozessfluss ist, aber nicht im Formular, und die Spalte wird nicht geändert. Dadurch wird der Speichervorgang auch dann nicht blockiert, wenn es leer ist.
In den meisten Fällen ist das Verhalten beabsichtigt, und die RequiredFieldValidation
-Operation erklärt, warum sich diese Spalte beim Speichern von Formularen auf eine bestimmte Weise verhält. Wenn die erforderliche Spaltenvalidierung für eine Spalte übersprungen wird, weil das Steuerelement deaktiviert oder ausgeblendet ist, wie im ersten Beispiel veranschaulicht, lesen Sie die Vorschläge zur Formularprüfung zur weiteren Analyse.
Dies kann zu einem anderen Problembehandlungsszenario führen, wie z. B. Warum ein Steuerelement deaktiviert/aktiviert oder sichtbar/ausgeblendet ist.
Der Zusammenführungsdialog verwendet die Standardhauptformulardefinition für die Tabelle und rendert selektiv die meisten, aber nicht alle Spalten im Dialogfeld. Dieser Vorgang der Formularüberprüfung erklärt, warum einige der Spalten im Zusammenführungsdialog nicht angezeigt werden, obwohl sie möglicherweise im Hauptformular angezeigt werden.
Der folgende MergeDialog.load
-Vorgang erklärt den Grund, warum einige Spalten nicht angezeigt werden.
In diesem Beispiel wird die Spalte parentcustomerid
im Kontaktformular im Zusammenführungsdialog nicht unterstützt. Die Visitenkartenspalte wird nicht angezeigt, da der enthaltende Abschnitt in der XML-Definition des Hauptformulars ausgeblendet ist. Obwohl es möglich ist, den besitzenden Abschnitt im Hauptformular über die Client-API anzuzeigen, berücksichtigt der Zusammenführungsdialog die Formular-XML-Konfiguration, da Ereignishandler im Zusammenführungsdialog nicht unterstützt werden.
Ereignisse
Power BI DataViz Weltmeisterschaften
14. Feb., 16 Uhr - 31. März, 16 Uhr
Mit 4 Chancen, ein Konferenzpaket zu gewinnen und es zum LIVE Grand Finale in Las Vegas zu machen
Weitere InformationenSchulung
Lernpfad
Use advance techniques in canvas apps to perform custom updates and optimization - Training
Use advance techniques in canvas apps to perform custom updates and optimization