14.01.2020, 20:20 | #1 |
Участник
|
SSRS параметр не передается в DP класс
D365 10.0.5 pu29
Доброго времени суток. Знаю, вопрос древний как Аксапта. но я просто не вижу что не так: отчет должен запускаться из строки журнала платежей с TransId платежа. Правильное значение TransId видно в контроллере и контракте, а вот в дата провайдере, к сожалению, значения нет. Последний раз правильное значение видно в дебаггере в SRSReportRdpDataContractmemberInfo.setpropertyValue() при вызове из SysOperationDataContractInfo.unpackDataContractInfo(). Крайне подозреваю, что просто не вижу что-то очевидное. Посмотрите свежим глазом, пожалуйстка! X++: class TSTReceiptController_Ext extends SrsReportRunController { public void preRunModifyContract() { super(); TSTReceiptContract_Ext contract = this.parmReportContract().parmRdpContract() as TSTReceiptContract_Ext; TSTTrans TSTTrans = this.parmArgs().record() as TSTTrans; contract.parmTransId(TSTtrans.TransId); //вижу правильное значение тут } public static void main(Args _args) { TSTReceiptController_Ext controller_ = new TSTReceiptController_Ext(); TempStr reportName; TSTTrans TSTTrans; ; if (_args.record()) { TSTTrans = _args.record(); } controller_.parmArgs(_args); controller_.parmReportName(ssrsReportStr(TSTReceiptWithFee_Ext, ReportWithFee)); controller_.parmShowDialog(false); controller_.startOperation(); } } //---------------------------------------- [ DataContractAttribute, SysOperationGroupAttribute('PrintOptions', "@SYS24353", "2") ] class TSTReceiptContract_Ext { TSTTransId transId; [DataMemberAttribute("TSTTransactionId")] public TSTTransId parmTransId(TSTTransId _transId = transId) { transId =_transId; return transId; //вижу правильное значение тут тоже } } //---------------------------------------- SRSReportParameterAttribute(classstr(TSTReceiptContract_Ext))] class TSTReceiptDP_Ext extends SRSReportDataProviderBase { TSTReceiptTmp_Ext TSTReceiptTmp; TSTTransId transId; [SRSReportDataSetAttribute(tablestr('TSTReceiptTmp_Ext'))] public TSTReceiptTmp_Ext getCustReportRDPDemoTmp() { select * from TSTReceiptTmp; return TSTReceiptTmp; } public void processReport() { TSTTrans tstTrans; TSTReceiptContract_Ext dataContract = this.parmDataContract(); // а вот тут параметр в контракте пустой... transId = dataContract.parmTransId(); tstTrans = TSTTrans::find(transId); //some logic } } |
|