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
}
}