Aller au contenu

Sélectionner l'événement de ligne

Les Portails d'Affaires peuvent déclencher un événement lorsqu'une ligne est sélectionnée sur le frontend. Cette sélection est envoyée à Business Central, où elle peut être traitée par une codeunit personnalisée pour effectuer des actions telles que le recalcul des valeurs ou la mise à jour des données associées.

Cette section fournit un exemple de la façon d'implémenter une codeunit personnalisée qui est déclenchée lorsqu'une ligne est 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 sélection d'une ligne déclenche un événement qui peut, par exemple, mettre à jour des champs associés ou effectuer des validations.

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

AL
'SELECTLINE':
    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', 'Puisque ceci est un champ de sélection multiple, veuillez entrer une valeur.');
        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;