Zum Inhalt

Auswahlzeilenereignis

Business Portals kann ein Ereignis auslösen, wenn eine Zeile im Frontend ausgewählt wird. Diese Auswahl wird an Business Central gesendet, wo sie von einer benutzerdefinierten Codeunit verarbeitet werden kann, um Aktionen wie das Neuberechnen von Werten oder das Aktualisieren verwandter Daten durchzuführen.

Dieser Abschnitt bietet ein Beispiel dafür, wie man eine benutzerdefinierte Codeunit implementiert, die ausgelöst wird, wenn eine Zeile vom Benutzer ausgewählt wird.

Codebeispiel

In diesem Beispiel verwenden wir die Tabelle Verkaufsauftragszeilen in einem Szenario, in dem die Auswahl einer Zeile ein Ereignis auslöst, das beispielsweise verwandte Felder aktualisieren oder Validierungen durchführen kann.

Die Zeilenauswahl sendet Daten an Business Central, wo sie in einer Business Central-Codeunit verarbeitet werden.

AL
'SELECTLINE':
    begin
        LocalEventXmlElement := XmlElement.Create('EVENT');
        LocalRootXmlElement.Add(LocalEventXmlElement);
        LocalRootXmlElement.SetAttribute('EVENTTYPE', ParamRecordSIMDPSOL."Sub Function Event");
        LocalRootXmlElement.SetAttribute('EVENTVALUE', LocalEventValueText);
        LocalRootXmlElement.SetAttribute('EVENTMESSAGE', 'Alle Zeilen mit der gleichen Menge werden ausgewählt.');
        LocalRootXmlElement.SetAttribute('EVENTMESSAGETYPE', 'default');
        LocalRootXmlElement.SetAttribute('EVENTMESSAGEMOBILE', 'Da dies ein Mehrfachauswahlfeld ist, geben Sie bitte einen Wert ein.');
        LocalRootXmlElement.SetAttribute('EVENTMESSAGEMOBILETYPE', 'default');

        if Evaluate(LocalRecordId, LocalEventValueText, 9) then
            if LocalRecordRef.Get(LocalRecordId) then begin
                LocalRecordRef.SetTable(LocalRecordSalesLine);
                Local2RecordSalesLine.SetRange("Document Type", LocalRecordSalesLine."Document Type");
                Local2RecordSalesLine.SetRange("Document No.", LocalRecordSalesLine."Document No.");
                Local2RecordSalesLine.SetRange(Quantity, LocalRecordSalesLine.Quantity);
                if Local2RecordSalesLine.FindSet() then
                    repeat
                        LocalInfoXmlElement := XmlElement.Create('INFO');
                        LocalEventXmlElement.Add(LocalInfoXmlElement);
                        LocalInfoXmlElement.SetAttribute('VALUE', Format(Local2RecordSalesLine.RecordId, 0, 9));
                    until Local2RecordSalesLine.Next() = 0;
            end;
    end;