SI.XQUERY
Created by Grigorii Kosianenko, Modified on Tue, 29 Apr at 12:22 AM by Damien Zwillinger
Applies to
Velixo NX 2025.4 or higher
Sage Intacct
TABLE OF CONTENTS
Introduction
The SI.XQUERY function provides you with the ability to query the Sage Intacct REST API objects, in a similar way to the SI.QUERY function. The SI.QUERY function, however, queries the older XML API under the hood.
Sage has exposed more objects through their new REST API, for instance: WIP periods and WIP projects, tax entries, and information for local asset management are only accessible through the new REST API, via SI.XQUERY.
You may use either SI.QUERY or SI.XQUERY, but bear in mind these two APIs and functions are configured and may behave differently, and only SI.XQUERY would expose new objects developed by Sage.
The SI.XQUERY may be used in conjunction with the following functions:
- SI.XEXPANDOBJECTRANGE allows you to explore objects available for querying
- SI.XOBJECTDEFINITION provides you with all possible details about the object you are working with, and finally
Syntax
=SI.XQUERY(ConnectionName, Object, Filter, Select, IncludeHeader, Settings, OutputColumn1, OutputColumn2, ... OutputColumnN)
Parameters
Parameter | Required/Optional | Description |
---|---|---|
ConnectionName | Required | The name of the connection, as specified in the Connection Manager |
Object | Required | Sage Intacct REST object name. For instance, accounts-payable/adjustment Please use SI.XEXPANDOBJECTRANGE to explore available objects. |
Filter | Optional | SQL-like query based on the fields of the object. The following operators are supported: <, >, >=, <=, =, in, contains, startswith, endswith, not, and, or. The not operator cannot be used as a negation for expressions (e.g., not (A and B) is not supported), but you can combine it with predicates from the above (e.g., not contains, not startswith are valid expressions). Use backslashes before characters other than letters, numbers, and whitespace. For example, Jane\'s Deli Joins are not supported. Use the SI.XOBJECTDEFINITION function to get the list of the object fields. |
Select | Optional | Comma-separated list of columns to be included in the resulting dataset. Use the SI.XOBJECTDEFINITION function to get the list of the object fields. If you omit this parameter, all the columns from the object will be returned. |
IncludeHeader | Optional | If TRUE, the column headers will be included in the result set. |
Settings | Optional | The list of settings (key-value pairs) to specify advanced query settings. You can pass one or more keys with their values. Each key controls a different setting:
Example:
|
OutputColumn1 | Optional | The address of the header of the first column (top left corner of the Excel table) of the result set. If the parameter is omitted, the result is returned as an array. |
OutputColumn2 | Optional | The address of the header of the second column of the result set. It must be on the same row as OutputColumn1. |
... | ||
OutputColumnN | Optional | The address of the header of the Nth column of the result set. It must be on the same row as OutputColumn1. |
Output
The function returns a spill range (if OutputColumns are omitted) or an Excel table (if OutputColumns are specified) with the columns specified in the Select parameter or all columns if the Select parameter is omitted.
Please read about table mirroring to leverage Excel tables produced by query functions more efficiently.
Example
Say you want to get all posted WIP periods ending in 2025 Q1.
First of all, you need to find the object name.
Use the SI.XEXPANDOBJECTRANGE function to find the name of the WIP period object. It is construction-forecasting/wip-period.
If, for some reason, you have doubts regarding what object to use, please refer to the Sage Intacct documentation.
Then, you might want to look at the object definition to decide what columns you want to see in the query result. Use the SI.XOBJECTDEFINITION function to get all the information.
This is the SI.XOBJECTDEFINITION output for construction-forecasting/wip-period
fiscalYear, id, and isHistoricalImport are the values you can use in the Select, Filter, and Sort parameters, as well as other values in the ID column.
You may select key, periodName, isHistoricalImport, notes, state, and periodEndDate.
The last two will also be used for filtering. The filter will be the following:
periodEndDate >= '2025-01-01' and periodEndDate <= '2025-03-31' and state = 'posted'
Now, the entire query will look this way:
=SI.XQUERY("Sage","construction-forecasting/wip-period","periodEndDate >= '2025-01-01' and periodEndDate <= '2025-03-31' and state = 'posted'", "key, periodName, isHistoricalImport, notes, state, periodEndDate")
Finally, you can sort your query to make it prettier:
HSTACK({"Sort";"Limit"}, {"periodEndDate:DESC";3})
=SI.XQUERY("Sage","construction-forecasting/wip-period","periodEndDate >= '2025-01-01' and periodEndDate <= '2025-03-31' and state = 'posted'", "key, periodName, isHistoricalImport, notes, state, periodEndDate",,HSTACK({"Sort";"Limit"}, {"periodEndDate:DESC";3}))
Was this article helpful?
That’s Great!
Thank you for your feedback
Sorry! We couldn't be helpful
Thank you for your feedback
Feedback sent
We appreciate your effort and will try to fix the article