it helps me to save a lot of time for to develop a complex parameter table stucture
Call the function below with something like this
evaluateFormularWithCommon(SalesTable::find("252"), "SalesTable::find(_common.(fieldnum(SalesTable, SalesId))).SalesName")you get the value of the field "Name" of the salesTable!
This looks like an stupid idea, but in some situation it could be very helpfully!
In our situation i have an common as table variable and an string which comes from an parameter table.
So the function returns the value of the formular-string in the Parameter-table. Very Nice!
static container evaluateFormularWithCommon(Common _common,
str _formular)
{
/*
franz aigner 20061127
returnvalue:
[Result (str), ReturnState (boolean)]
ReturnState: False --> Error, True --> OK
Instruction:
Sampleformula:
SalesTable::find(_common.(fieldnum(SalesTable, SalesId))).SalesName
in this sample, in the formula the reference of the source table must be the string '_common'
no semicolon at the end of the formular
the return value must be a string
*/
XPPCompiler comp = new XPPCompiler();
str formular;
str toStr(AnyType _value)
{
;
if(typeOf(_value)==Types::String || typeOf(_value)==Types::VarString)
{
return strFmt("%1", _value);
}
return strFmt("%1", _value);
}
;
formular = 'AnyType evaluateFormularWithCommon(Common _common){return '+_formular+";}";
if(comp.compile(formular))
return [tostr(runbuf(formular, _common)), True];
else
return ["", false];
}
Navison Axapta Help:
RunBuf
Anytype RunBuf(str job, ...)
Description
RunBuf executes the X++ job represented as text in job.
Job is a complete piece of X++ code and arguments can be specified by
appending them as arguments to RunBuf.
If the job returns a value, this value is the return value from RunBuf.
Otherwise RunBuf returns 0 (zero).
Example
str myjob = "int myfunc(int i){ return i+7;}";
print runbuf(myjob,5);
will print the number 12 when executed.
Info:
This idea comes from tabax X++calculator!!
5 comments:
there is also an evalBuf function
but i have studied somewhere that both of evalBuf() and runBuf() requires developer privileges.
is that so??
I do not know, but it could be! Because the string must be compiled at run-time. Try it?!
In principle, a good happen, support the views of the author
Post a Comment