17.09.2020, 18:04 | #1 |
Участник
|
D365: runAs "Error executing code: object does not have method"
D365 10.0.12
Имеется пользовательский веб сервис который выполняет некий функционал в Д365. Этот сервис вызывается из веб магазина и очень важно чтобы он работал от имени пользователя который его вызывает, т.к. необходимо проверять права на выполнение этого функционала в Д365. Для этого клиент попросил добавить в сервис дополнительный параметр с именем пользователя и выполнять функционал от имени этого пользователя. Использую классический RunAs, и все вроде хорошо, только при попытке выполнить получаю сообщение "Error executing code: GatewayTrans object does not have method processAs", несмотря на то, что класс и метод есть, компиляция успешна, и даже ДБ синхронизация была выполнена и виртуальная машинка перезагружена. Кроме рекомендации перестроить CIL для 2012 (что звучит странно для Д365) нагуглить ничего не получается. Прошу помощь клуба в решении! Вызов: X++: returnValue = GatewayTransService::runAsUser(dataContract.userId(), classNum(GatewayTrans), "processAs", [dataContract.Id(), dataContract.CustAccount(), dataContract.transDate(), dataContract.revRecContractStartDate(), dataContract.userId(), dataContract.allCompanies(), dataContract.process()] ); X++: static public CreditCardStr runAsUser(UserId _userId, int _classNum, str _methodName, container _params) { RunAsPermission perm; Str returnValue; perm = new RunAsPermission(_userId); perm.assert(); [returnValue] = runAs(_userId, _classNum, _methodName, _params); CodeAccessPermission::revertAssert(); return returnValue; } X++: class GatewayTrans { public static /*server*/ Str processAs( CustomId _Id, CustAccount _CustAccount, TransDate _transDate, TransDate _revRecContractStartDate, UserId _userId, boolean _allCompanies, boolean _process = true ) { |
|
Теги |
runas |
|
|