Zum Inhalt

Unselect Line Event

Business Portals kann ein Ereignis auslösen, wenn eine Zeile im Frontend abgewählt wird. Diese Aktion wird an Business Central gesendet, wo sie von einer benutzerdefinierten Codeunit verarbeitet werden kann, um Aktualisierungen rückgängig zu machen, Werte zurückzusetzen oder andere Logik auszuführen.

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

Codebeispiel

In diesem Beispiel verwenden wir die Verkaufsauftragszeilentabelle in einem Szenario, in dem das Abwählen einer Zeile ein Ereignis auslöst, das beispielsweise zuvor aktualisierte Felder zurücksetzen oder Berechnungen rückgängig machen kann.

Das Abwählen der Zeile sendet Daten an Business Central, wo sie in einer Business Central Codeunit verarbeitet werden.

AL
'UNSELECTLINE':
    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', '');
        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;