Bodo's Dynamics NAV und Business Central Blog
Bodo ist ein Dynamics NAV Urgestein. Er programmiert Navision seit DOS Zeiten und hat auch keine Scheu vor .NET und schon gar nicht vor Dynamics 365 oder Azure. Viele Neueinsteiger wurden von ihm in den letzten Jahren zu Entwicklern ausgebildet. In diesem Blog veröffentlichen Bodo und andere Superhelden Interessantes aus der Welt von Dynamics 365 Business Central / Dynamics NAV und Microsoft Azure.Dynamics NAV 2018 – Die Wirkung von Filtergruppen
Tags: filter, 2018Auf der Page 1007 »Projektplanzeilen« gibt es eine versteckte Funktion »An Kalender senden«. Die Funktion wird erst angezeigt, wenn Sie die »SMTP-Einrichtung« vorgenommen haben. Mit Hilfe dieser Funktion können Sie an die Ressource einer Projektplanzeile eine E-Mail mit einem Kalendereintrag als Anhang im *.ics-Format (https://de.wikipedia.org/wiki/ICalendar) senden.
Cooles Feature. Aber Vorsicht. Die Funktion sendet E-Mails an die Ressourcen aller Projektplanzeilen in allen Projekten. Der Tooltip warnt zwar, „Kalendertermin für die Ressource in jeder Projektplanungszeile erstellen“, aber ob das wirklich so gedacht ist? Als Anwender erwarte ich, dass diese Funktion auf die Planzeilen wirkt, die ich aktuell in der Ansicht habe, und auf keine anderen. Für mich also mehr Bug als Feature.
Das führt uns nun zum eigentlichen Thema.
Die Action «SendToCalendar« ruft die Codeunit 1034 »Job Planning Line - Calendar« und übergibt den aktuellen Datensatz an den OnRun-Trigger.
Die Codeunit nimmt den Datensatz entgegen und kopiert mit Hilfe von »GETVIEW« und »SETVIEW« die aktuellen Filter- und Sortiereinstellungen auf eine lokale Variable um.
Das ist gut gedacht aber schlecht gemacht.
Für eine Record-Variable ist zu jederzeit eine Filtergruppe (»FILTERGROUP«) aktiv. So lange Sie nicht anfangen mit den Filtergruppen rumzuspielen, ist das die Gruppe »0«. Anwender sehen grundsätzlich die Filter der aktiven Gruppe und können auch nur Filter in der aktiven Gruppe setzen.
Die Methode »GETVIEW« (so wie auch »COPYFILTERS«) wirkt ebenfalls nur auf die Filter der gerade aktiven Gruppe. Die Filter, die in anderen Gruppen gesetzten wurden, werden nicht ausgelesen. Damit geht der Filter auf das Projekt verloren.
Warum? Der Programmierer hat den Filter auf die Projektnr. explizit in Filtergruppe »2« gesetzt. Hier der Quellcode der Page 88 »Projektkarte«, Aufruf der Projektplanzeilen
Warum macht der Programmierer solche Sachen? Den Filter in Gruppe »2« zu setzen und danach wieder die Gruppe »0« einzustellen, sorgt dafür, dass der Anwender diesen Filter nicht entfernen kann, da er wie oben beschrieben nur die Filter der aktiven Gruppe sieht.
Mehr Informationen über Filtergruppen und welche Filter in welche Gruppen gesetzten werden, können Sie hier nachlesen: https://docs.microsoft.com/en-us/dynamics-nav/filtergroup-function--record-