Походу, не только это.
Важно чтобы параметры методы были контейнером, и возвращаемое значение тоже.
Надеюсь, кому-то мой пример поможет.
X++:
RunAsPermission perm = new RunAsPermission(dataContract.userId());
perm.assert();
[returnValue] = runAs(dataContract.userId(),
classNum(GatewayTrans),
staticMethodStr(GatewayTrans,processAs),
[dataContract.Id(),
dataContract.CustAccount(),
dataContract.transDate(),
dataContract.revRecContractStartDate(),
dataContract.userId(),
dataContract.allCompanies(),
dataContract.process()]
);
CodeAccessPermission::revertAssert();
X++:
class GatewayTrans
{
public static /*server*/ Container processAs(container args)
{
CustomId _Id;
CustAccount _CustAccount;
TransDate _transDate;
TransDate _revRecContractStartDate;
UserId _userId;
boolean _allCompanies;
boolean _process;
[_Id,_CustAccount, _transDate,_revRecContractStartDate,_userId,_allCompanies,_process] = args;