Dynamics NAV 2018 – Die Wirkung von Filtergruppe
Auf 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-

Like
Report
*This post is locked for comments