Seleccionar Evento de Línea
Los Portales de Negocios pueden activar un evento cuando se selecciona una línea en el frontend. Esta selección se envía a Business Central, donde puede ser procesada por un codeunit personalizado para realizar acciones como recalcular valores o actualizar datos relacionados.
Esta sección proporciona un ejemplo de cómo implementar un codeunit personalizado que se activa cuando un usuario selecciona una línea.
Ejemplo de Código
En este ejemplo, utilizaremos la tabla de Líneas de Pedido de Venta en un escenario donde la selección de una línea activa un evento que puede, por ejemplo, actualizar campos relacionados o realizar validaciones.
La selección de la línea envía datos a Business Central, donde se procesa en un 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', 'Todas las líneas con la misma cantidad serán seleccionadas.');
LocalRootXmlElement.SetAttribute('EVENTMESSAGETYPE', 'default');
LocalRootXmlElement.SetAttribute('EVENTMESSAGEMOBILE', 'Dado que este es un campo de selección múltiple, por favor ingrese un valor.');
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;