Microsoft Dynamics CRM 2013 | Filtered Lookups inside BPF

BPF_Lookup_Handling

Immer wieder finde ich in den Foren die Fragestellung nach gefilterten Suchfeldern innerhalb des Business Process Flow. Und auch im Rahmen meines heutigen Beitrages auf der eXtremeCRM 2014 in Barcelona bin ich auf dieses Thema eingegangen.

Mit Hilfe der im SDK vorgestellten .addCustomFilter Methode können wir Lookups auf der Form beeinflussen.

Xrm.Page.getControl(arg).addCustomFilter(filter, entityLogicaName)

So kennen die meisten von Euch mit Sicherheit folgende Codezeilen:

_preFilterLookupRespContact: function() {
        if (Xrm.Page.getAttribute(„exc_respcontact“)) {
            Xrm.Page.getAttribute(„exc_respcontact“).controls.forEach(function (c, i) {
                c.addPreSearch(function () {
                    var customer = Xrm.Page.getAttribute(„exc_accountid“).getValue();
                    if (customer != null) {
                        fetchXml = „<filter type=’and‘><condition attribute=’parentcustomerid‘ operator=’eq‘ value='“ + customer[0].id + „‚ /></filter>“;
                    c.addCustomFilter(fetchXml);
                    }
                });
            });
        }

Im OnLoad-Ereignis wird diese Funktion dann aufgerufen und sofern die Felder auf der Form hinzugefügt wurden, funktioniert die Filterung auch wie gewünscht. Im Feld Verantw. Kontakt werden nur diejenigen Kontakte angezeigt, die zugehörig zur zuvor ausgewählten Firma sind.

Und da hier mit der .controls.forEach() Funktion gearbeitet wurde, können die Attribute auch mehrfach auf der Form hinzugefügt worden sein. Was liegt also näher, als die Vermutung, dass der Code sich auch auswirken müsste, wenn man die beiden Felder innerhalb seines Business Process Flows hinzugefügt hat. Doch in der Praxis bleibt die Liste ungefiltert.

BPF_FilteredLookup

Schön wäre es jedoch, wenn die Liste wie links dargestellt ebenso gefiltert wäre. Hierzu bedarf es einem kleinen Trick, um die Felder innerhalb des Business Process Flow anzusprechen.

Die Erweiterung “header_process_” innerhalb getAttribute(Bezeichner).

Wenn Ihr diesen kleinen Zusatz ergänzt, dann wird fortan auch das Kontakt-Suchfeld innerhalb des Business Process Flows gefiltert. Da dieser Zusatz nicht im SDK aufgeführt ist, gilt eine solche Anpassung als “unsupported” und kann damit jederzeit durch Updates außer Kraft gesetzt werden.

Wer jedoch nicht auf diese Funktion verzichten mag, der hat nunmehr eine simple Methode die Felder innerhalb des Business Process Flows ansprechen zu können.

Technorati Tags:

2 Gedanken zu “Microsoft Dynamics CRM 2013 | Filtered Lookups inside BPF

  1. Pingback: Rückblick 2014 | Happy New Year - Microsoft Dynamics CRM Community
  2. Pingback: Rückblick 2014 | Happy New Year | Microsoft Dynamics CRM & Co

Schreibe einen Kommentar

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s