How it works...
When the package is built, the QueryRangeFunction attribute directs the compiler to make them available for use in query dialogs. The syntax in the brackets is not X++, it is interpreted at runtime and just looks similar. The round bracket instructs the compiler to expect a field or function name, and any function not in the base SysQueryRangeUtil class requires the (<class name>::<function name>()) format.
The error checking is limited and the errors aren't helpful. For example, if we forget one of the colons, we will get an error suggesting that a right parenthesis is wrong. There is also no help to the user as to how to use them from within the user interface; so, we must provide documentation with these functions.
Apart ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access