Benutzerdefinierte Seite – Dialoglogik schließen

Im letzten Beitrag haben wir einen neuen Schließen-Dialog erstellt, aber wir haben den Schaltflächen keine Logik hinzugefügt.

Logik – Felder und Schaltflächen

Der wichtigste Parameter, den wir letztes Mal per JavaScript gesendet haben, war die GUID des Datensatzes, mit dem wir arbeiten werden.

Als erstes fügen wir der App einen Onload hinzu und führen als allerersten Schritt eine Suche durch. Dadurch erhalten wir alle Daten für diese gegebene Gelegenheit, die wir innerhalb der Power App verwenden können. Wir speichern den gesamten Datensatz in einer Variablen “varOpportunity”.

Ein kleiner cleverer Schritt ist hier eigentlich das „First(Opportunities)“. Zu Testzwecken wird die erste Opportunity in der DB geöffnet, wenn Sie die App ohne die GUID von Dynamics öffnen, und von hier aus können Sie die App make.powerapps.com studio testen, ohne einen Parameter an die benutzerdefinierte Seite übergeben zu müssen

LADEN

Set(VarOppportunity,
If(IsBlank(Param("recordId")),
First(Opportunities),
LookUp(Opportunities, Opportunity = GUID(Param("recordId"))))
)

Felder

Felder können nun über die „varOpportunity“ hinzugefügt werden, die alle Daten zur ersten Opportunity im System enthält.

TASTEN

Die Abbrechen-Schaltfläche hat nur “back()” als Funktion zum Schließen des Dialogs, aber die “Gewinn bestätigen”-Schaltfläche hat eine Patch-Anweisung für Opportunity.

//Patch the Oppty fields
Patch(
    Opportunities,
    LookUp(
        Opportunities,
        Opportunity = GUID(VarOppportunity.opportunityid)
    ),
    {
        'Actual Close Date': EstClosingDate.Value,
        'Actual Revenue': Int(EstimatedRevenue.Value)
    }
);
//Hide input boxes and show confirmation
Set(
    varConfirmdetails,
    false
);
Set(
    varCongratulations,
    true
);

VERSTECKEN ANZEIGEN

Aufgrund einiger Herausforderungen, denen ich mit mehreren Bildschirmen begegnet bin, musste ich einen einzelnen Bildschirm mit Versteck-/Anzeigelogik verwenden. Daher habe ich alle Felder zu Gruppen hinzugefügt und die Anzeige basierend auf Gruppen ausgeblendet.

Die Glückwunschgruppe sieht so aus.

Abschluss der Opportunity-Challenge

Wenn dies eine benutzerdefinierte Entität wäre, könnten wir die Opportunity schließen, indem wir die Werte für Status und Statusgrund festlegen. Leider verfügt die Opportunity über eine Funktion zum Schließen der Opportunity, die einen Dialog zum Schließen des Falls erstellt. Damit dies funktioniert, müssen wir einen Zolldienst anrufen, um den Fall abzuschließen. Das wird etwas knifflig.

Wir müssen jetzt eine Aktion von Power Automate aufrufen, um die Opportunity als GEWONNEN zu schließen. Zum Zeitpunkt des Schreibens des Blogs funktionierte der Prozess zum Aufrufen der Microsoft-Aktion in Power Automate nicht, also habe ich meine eigene Aktion erstellt. Ich werde Ihnen zeigen, wie, und ehrlich gesagt vielleicht sogar empfehlen, es vorerst so zu machen. Es funktioniert die ganze Zeit und nutzt die Technologie, die seit CRM 4.0 funktioniert.

Benutzerdefinierte Aktion

Aktionen funktionieren nach der gleichen Logik wie ein Workflow, können aber jederzeit und überall ausgelöst werden. Sie können Inputs empfangen und Outputs generieren. Ein Workflow wird nur von CRUD-Ereignissen ausgelöst und arbeitet im Kontext des Datensatzes, der den tatsächlichen Workflow auslöst. Sie sind in vielerlei Hinsicht eine unterschätzte Funktion in Dynamics / Dataverse.

Es ist ein ziemlich einfacher Schritt, den Status der Opportunity auf „gewonnen“ zu aktualisieren, und auf diese Weise führt das System automatisch die richtigen Aufrufe in der API für Opportunity Close durch.

Das ist alles, was Sie für die Aktion benötigen. Nach der Aktivierung können wir zur benutzerdefinierten Seite zurückkehren und einen sofortigen Flow erstellen (Power Automate).

In der benutzerdefinierten Seite fügen wir jetzt eine Zeile zu unserem “Gewinn bestätigen”-Button hinzu. (Ja, ich weiß, wir sollten wahrscheinlich eine Logik für Erfolg/Fehler hinzufügen, aber das wird ein Teil der endgültigen Lösung auf Github sein).

//Patch the Oppty fields
Patch(
    Opportunities,
    LookUp(
        Opportunities,
        Opportunity = GUID(VarOppportunity.opportunityid)
    ),
    {
        'Actual Close Date': EstClosingDate.Value,
        'Actual Revenue': Int(EstimatedRevenue.Value)
    }
);
//Hide input boxes and show confirmation
Set(
    varConfirmdetails,
    false
);
Set(
    varCongratulations,
    true
);
//Update Opportunity Close entity
CloseOpptyPostTeams.Run(VarOppportunity.Opportunity);

GEWINNER GEWINNER

Sie sollten die Opportunity jetzt über eine benutzerdefinierte Seite als gewonnen schließen können. Denken Sie nur daran, die benutzerdefinierte Seite zu veröffentlichen UND Veröffentlichen Sie die App erneut. Wenn nicht, wird es jetzt angezeigt. Denken Sie daran, ihm einen Moment Zeit zu geben, bevor Sie ihn nach einer Änderung aktualisieren.

.

Author: admin

Leave a Reply

Your email address will not be published.