¿Existe alguna función que evalue una formula?

Viendo 3 entradas - de la 1 a la 3 (de un total de 3)
  • Autor
    Entradas
  • #1028335
    Antonio Bertomeu
    Participante

    Saludos,

    En mi empresa estamos iniciando la adaptaciones para un cliente, y se nos plantea la necesidad de evaluar dinámicamente formulas escritas en un campo de texto que contienen referencias a campos de la base de datos. ¿Existe alguna función/procedure en AL/B.C para dicho proposito?. Un ejemplo podria ser:

    “Sales Line”.”Unit Cost” * “Sales Line”.Quantity

    Gracias.

    Antonio

    #1028336
    bartolome.sastre
    Participante

    Hola Antonio,
    Recientemente he tenido que hacer algo similar.

    Prueba con esta procedure, la unica forma que conozco para evaluar expresiones matematicas es con una funcion que emplea el esquema de cuentas en la codeunit AccSchedManagement. Revisa la codeunit por si hay funciones que te puedan ser de utilidad como CheckFormula, si no recuerdo mal.

    Esta funcion de calculo tiene las limitaciones de que solo podras operar con los siguientes operadores. +, -, *, / y potencia (elevado a…). Ademas no te permitira poner dos operadores consecutivos como 2/-1, tendras que rodearlo con parentesis 2/(-1)

    Un saludo.

    Tolo Sastre

    procedure CalcMathExpression(formula: Text; var result: Decimal): Boolean
    var
    AccScheduleLine: record “Acc. Schedule Line”;
    ColumnLayout: record “Column Layout”;

    AccSchedManagement: codeunit AccSchedManagement;
    excesiveLengthLbl: label ‘Error: the formula can”t exceed the 250 characters!’;

    begin
    Clear(AccSchedManagement);

    AccScheduleLine.Init();
    ColumnLayout.Init();

    formula := DelChr(formula, ‘=’, ‘ ‘); //remove spaces…

    //Max 250 length
    if StrLen(formula) < 250 then begin

    result := AccSchedManagement.EvaluateExpression(true, CopyStr(formula, 1, 250), AccScheduleLine, ColumnLayout, true);
    exit(true);
    end;
    end
    else
    Error(excesiveLengthLbl);

    exit(false);
    end;

    #1028337
    oscarmingte
    Participante

    Buenos Días Antonio , te escribí por linkedin creo que te encontré ¿hablamos por ahi? y te cuento la solución.

     

    Un saludo óscar.

Viendo 3 entradas - de la 1 a la 3 (de un total de 3)
  • Debes estar registrado para responder a este debate.

10 cursos gratis, sin tarjeta

Accede a los cursos Gratis de Business Central

Instalación, ventas, fabricación y Power BI.

Acceso inmediato, sin límite de tiempo.