Aller au contenu

Événement de Désélection de Ligne

Les Portails d'Affaires peuvent déclencher un événement lorsqu'une ligne est désélectionnée sur le frontend. Cette action est envoyée à Business Central, où elle peut être gérée par un codeunit personnalisé pour inverser des mises à jour, réinitialiser des valeurs ou effectuer d'autres logiques.

Cette section fournit un exemple de la façon d'implémenter un codeunit personnalisé qui est déclenché lorsqu'une ligne est désélectionnée par l'utilisateur.

Exemple de Code

Dans cet exemple, nous utiliserons la table des Lignes de Commande de Vente dans un scénario où la désélection d'une ligne déclenche un événement qui peut, par exemple, réinitialiser des champs précédemment mis à jour ou revenir sur des calculs.

La désélection de la ligne envoie des données à Business Central, où elles sont traitées dans un codeunit de Business Central.

AL
'UNSELECTLINE':
    begin
        LocalEventXmlElement := XmlElement.Create('EVENT');
        LocalRootXmlElement.Add(LocalEventXmlElement);
        LocalRootXmlElement.SetAttribute('EVENTTYPE', ParamRecordSIMDPSOL."Sub Function Event");
        LocalRootXmlElement.SetAttribute('EVENTVALUE', LocalEventValueText);
        LocalRootXmlElement.SetAttribute('EVENTMESSAGE', 'Toutes les lignes avec la même quantité seront sélectionnées.');
        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;