Codeunit de asignación dinámica de ejemplo
La codeunit 5138174 "SIM_DPS Sample Dyn. Mapping CU" muestra cómo la lógica AL personalizada puede proporcionar un valor a una asignación de datos de Simova CORE utilizada por Business Portals.
Utiliza SIM_CORE Temp Table como tabla de origen. El motor pasa el contexto por este registro temporal, ejecuta la función seleccionada y consume Dyn Mapping Return Value.
Cuándo utilizar una codeunit de asignación
Una línea normal obtiene un valor de un campo, constante, filtro o función predefinida. Utilice CODEUNIT cuando se necesite lógica AL para combinar registros, calcular o formatear valores, resolver valores no expresables mediante líneas estándar o devolver estados específicos del portal.
Consulte Crear asignaciones de datos.
Descubrimiento y distribución
Durante el lookup del parámetro, Rec.Param está vacío. OnRun utiliza GETFUNCTIONS y devuelve Execute en Rec."Function List".
Durante la ejecución, CORE copia Execute Codeunit Param en Rec.Param. El ejemplo distribuye Execute al procedimiento público Execute. Las funciones adicionales deben añadirse a Function List y a case.
Contexto de ejecución
| Campo | Finalidad |
|---|---|
RecID |
Identifica el registro de origen. |
Company |
Identifica la empresa de Business Central. |
Param |
Contiene el nombre de función, como Execute. |
Function List |
Devuelve las funciones disponibles durante la configuración. |
Dyn Mapping Return Value |
Devuelve el resultado como texto. |
El campo de retorno es Text[250]; convierta otros tipos a una representación de texto adecuada.
Comportamiento del ejemplo
El ejemplo devuelve THIS RETURN WILL BE SHOWN ON PAGE, lo que únicamente confirma la llamada y la ruta de retorno.
LocalRecordId nunca se asigna antes de LocalRecordRef.Get(LocalRecordId), por lo que no se carga el registro del contexto. Una implementación real debe utilizar ParamRecordSIMCORETempTable.RecID, opcionalmente ParamRecordSIMCORETempTable.Company, validar la tabla y calcular el valor.
Configuración
- Abra CORE Data Mapping y cree o abra la asignación utilizada por Business Portals.
- Añada una línea y establezca Type en
CODEUNIT. - Establezca Execute Codeunit en
5138174o en la copia personalizada. - Abra Execute Codeunit Param y seleccione
Execute. - Asigne el código al campo, field mapping, marcador u otra configuración correspondiente.
- Pruebe registros y empresas representativos.
La codeunit debe estar incluida en los conjuntos de permisos del usuario o cuenta de servicio. El ejemplo estándar ya está incluido en los permisos de Business Portals.
Consideraciones de implementación
- Mantenga
TableNo = "SIM_CORE Temp Table". - CORE transmite el contexto de asignación mediante
Rec. - Lea el identificador de
Rec.RecID, no de unaRecordIdlocal sin inicializar. - Respete
Rec.Companyy utiliceRecordRef.Opencon la empresa necesaria. - Compruebe
RecID.TableNo, los registros ausentes y el límite de 250 caracteres. - Formatee los valores de manera uniforme.
- Evite llamadas a interfaz, confirmaciones y páginas.
- Conceda solo los permisos de lectura necesarios.
Código de ejemplo completo
codeunit 5138174 "SIM_DPS Sample Dyn. Mapping CU"
{
TableNo = "SIM_CORE Temp Table";
trigger OnRun()
var
LocalParamText: Text;
begin
LocalParamText := 'GETFUNCTIONS';
if (Rec.Param <> '') then
LocalParamText := Rec.Param;
case LocalParamText of
'Execute':
Execute(Rec);
'GETFUNCTIONS':
Rec."Function List" := 'Execute';
end;
end;
procedure Execute(var ParamRecordSIMCORETempTable: Record "SIM_CORE Temp Table")
var
LocalRecordRef: RecordRef;
LocalRecordId: RecordId;
begin
if LocalRecordRef.Get(LocalRecordId) then;
ParamRecordSIMCORETempTable."Dyn Mapping Return Value" := 'THIS RETURN WILL BE SHOWN ON PAGE';
end;
}