Hallo Leute, im Beitrag Dynamics NAV – Verwendung von Queries habe ich über einen nützlichen Anwendungsfall von Queries (Abfragen) gesprochen. In diesem Beitrag möchte ich über eine weitere Einsatzmöglichkeit von Queries, den generischen Diagrammen, berichten. Wer sich zuerst einlesen möchte, der kann sich den Beitrag im MSDN ansehen ( How to: Create Generic Charts ). Des Weiteren gib es hier auch eine Einleitung auf deutsch, wie generische Diagramme eingerichtet werden können ( Microsoft Dynamics NAV 2013 – neue Auswertungsmöglichkeiten ). In den generischen Diagrammen kann ich grundsätzlich zwischen zwei Datenquellen wählen: Tabellen und deren Felder Abfragen (Queries) und deren Spalten & Filter Generische Diagramme bieten sich für eine schnelle Auswertung bestimmter Daten an. In meinem Beispiel befassen wir uns daher mit Kunden- und Lieferanten-Stammdaten. Wir wollen beispielsweise wissen, welche Kunden oder Lieferanten ein Saldo von höher als 1.000 bzw. 10.000 € aufweisen. Wir schauen uns daher die Debitoren mit einem Saldo von mehr als 10.000 € an. Diese Information steht uns im Microsoft Standard über das Feld Saldo in der Kundentabelle (Tabelle 18 Customer) und in der Lieferantentabelle (Tabelle 23 Vendor) bereits mit dem Flowfield „Balance“ (Saldo) zur Verfügung. Wenn wir nun versuchen unsere Anforderung mit einem generischen Diagramm umzusetzen, dann könnte das so aussehen: ID = T18_50000 (Tabelle 18 / 50000 erstes individuelles generisches Diagramm) Name = Debitor (Saldo MW > 10000) Herkunftsart = Tabelle Herkunfts-ID = 18 Erforderliche Kennzahl (Balance LCY) -> Saldo (MW) y-Achse – Titel = Saldo (MW) x-Achse – Feld = Name x-Achse – Titel = Name Beschreibung = Zeigt alle Debitoren mit einem Saldo (MW) > 10.000 € Filter auf das Feld Balance (LCY) = „>10000“ Nun integrieren wir das Diagramm in unserer Rollencenter. Dafür führe ich folgende Schritte durch: Öffnen des Rollencenters (Ich nutze für mein Beispiel das Rollencenter 9007 -> Profil Einkäufer) Anpassen der Rollencenterseite Diagrammabschnitt hinzufügen und somit ein „Leeres Diagramm“ im Layout des Rollencenters erzeugen. Im Rollencenter das „Leere Diagramm“ auswählen und dort auf Anpassen klicken: Das individuelle Diagramm auswählen „T18_50000“ und mit „OK“ bestätigen. Nun können wir uns das Ergebnis ansehen: Je nach Anzahl der detaillierten Debitorenposten kann die Performance hier stark schwanken. Ich habe per Stapelverarbeitung 500.000 detaillierte Debitorenposten in einem Cronus Mandanten erzeugt. Trotz meiner sehr leistungsstarken Testumgebung benötigt das generische Diagramm nun ca. 30 Sekunden zum Anzeigen der Daten. Es kann also festhalten werden: Umso mehr detaillierte Debitorenposten vorhanden sind umso länger braucht das Diagramm. Das liegt einfach daran, dass die folgenden Kriterien ungünstig sind: Berechnung eines Flowfields pro Debitor Filterung auf ein FlowField So sieht das dann für den Anwender aus und das jedes Mal, wenn die Rollencenterseite geöffnet wird. Das ist dann nicht mehr so schön. Die Alternative dazu stellt eine Query da, die wesentlich schneller ist. Ich orientiere mich am Flowfield, da ich das exakt gleiche Ergebnis haben möchte. So sieht dann meine Query aus: No. – aus der Debitorentabelle Name – aus der Debitorentabelle Amount / Amount (LCY) aus der Detaillierten Debitorenpostentabelle und die Verknüpfung über das Feld Debitorennr. Die Einrichtung des generischen Diagramms ist fast identisch mit der Einrichtung der Debitorentabelle (siehe oben). Folgende Änderungen sind vorhanden: Herkunftart = Abfrage Herkunfts-ID: 50001 Erforderliche Kennzahl -> Aggragation „Summe“ Ansonsten sind nur die Feldnamen etwas anders. Nun können wir das Diagramm im Rollencenter austauschen und müssen dann den Client einmal neustarten: Nach dem Neustart ist das generische Diagramm sofort geladen. Keine Wartezeit! Hier ist die Query wesentlich schneller als die Flowfield Variante. Auch wenn ich viel Kritik über Query gelesen habe und es auch berechtigte Kritik gibt, weil es beispielsweise keine Standardintegration von Queries in Seiten oder Berichten als SourceTable gibt, so darf man nicht vergessen, dass Queries in manchen Bereichen sehr große Vorteile aufweisen können. Das Query Objekt (Debitorensalden) könnt ihr hier herunterladen: 161030_CustomerBalanceQuery.zip
↧