Acumatica 抓取新插入线路的线路编号

Acumatica 抓取新插入线路的线路编号,acumatica,Acumatica,我正在尝试获取新插入的内部行的行号 以下是我正在使用的代码: INRegister issue = new INRegister(); //Code to populate INRegister... INIssueEntry graph = PXGraph.CreateInstance<INIssueEntry>(); graph.issue.Insert(issue); graph.Actions.PressSave(); //PXSelect to get new RefN

我正在尝试获取新插入的内部行的行号

以下是我正在使用的代码:

INRegister issue = new INRegister();
//Code to populate INRegister...

INIssueEntry graph = PXGraph.CreateInstance<INIssueEntry>();
graph.issue.Insert(issue);
graph.Actions.PressSave();

//PXSelect to get new RefNbr for INRegister object
issue = PXSelect<INRegister, Where<INRegister.refNbr, Equal<Current<INRegister.refNbr>>, 
    And<INRegister.docType, Equal<Current<INRegister.docType>>>>>.Select(graph);
graph.issue.Current = issue;

INTran issueRow = new INTran();
//Code to populate issueRow...

graph.transactions.Insert(issueRow);
graph.transactions.Current = issueRow;
graph.Actions.PressSave();
//Trying to get transaction line number
issueRow = PXSelect<INTran, Where<INTran.refNbr, Equal<Current<INTran.refNbr>>, 
    And<INTran.docType, Equal<Current<INTran.docType>>, 
    And<INTran.lineNbr, Equal<Current<INTran.lineNbr>>>>>>.Select(graph);

//At this point, issueRow is now null because LineNbr was null above
row.TranRefNbr = issueRow.RefNbr;
row.TranLineNbr = issueRow.LineNbr;
row.Released = true;
ItemReqs.Update(row);
//... ending code...
INRegister issue=newinregister();
//要在注册表中填充的代码。。。
INIssueEntry graph=PXGraph.CreateInstance();
图.问题.插入(问题);
graph.Actions.PressSave();
//PXSelect为INRegister对象获取新的引用NBR
issue=PXSelect.Select(图形);
graph.issue.Current=问题;
内部发行人OW=新的内部发行人();
//用于填充issueRow的代码。。。
图表.交易.插入(发行人);
graph.transactions.Current=issueRow;
graph.Actions.PressSave();
//正在尝试获取事务行号
issueRow=PXSelect.Select(图形);
//此时,issueRow现在为null,因为上面的LineNbr为null
row.TranRefNbr=issueRow.RefNbr;
row.TRANLINNBR=发行人OW.LineNbr;
row.Released=true;
项目需求更新(行);
//... 结束代码。。。

我检查了在设置为当前项之前是否尝试保存(设置为当前项是为了方便我写入PXSelect以获取LineNbr),但我发现LineNbr,即使在图形上,在整个执行过程中也保持为空。当图形保存新行时,我查看了数据库,它确实包含行号。我不确定为什么我的PXSelect没有抓取行号。

插入交易行时,返回的行应该是linenbr

var issueRow = graph.transactions.Insert(issueRow);
我猜您的问题是,在使用未返回的issueRow后,您将设置为当前,该issueRow将具有空linenbr

此外,由于linenbr仍将通过linenbr属性设置,因此在结束(或准备生成批次)之前,您确实不需要按Save。插入INRegister记录后引用保存

我认为电流也将设置后,你插入,所以我不认为有必要设置电流,这将消除你的PX选择的需要

以最简单的步骤获取LineNbr的示例:

INIssueEntry graph = PXGraph.CreateInstance<INIssueEntry>();
graph.issue.Insert(new INRegister());
INTran issueRow = graph.transactions.Insert(new INTran());
//issueRow will now have a LineNbr value...
PXTrace.WriteInformation($"My Line Nbr is {issueRow.LineNbr}");
//RefNbr will receive its value when perform the Persist (Actions.PressSave)
INIssueEntry graph=PXGraph.CreateInstance();
graph.issue.Insert(新的INRegister());
intranissueRow=graph.transactions.Insert(新的intrant());
//issueRow现在将具有LineNbr值。。。
PXTrace.WriteInformation($“我的行Nbr为{issueRow.LineNbr}”);
//RefNbr将在执行持久化操作时接收其值(操作。按Save)

谢谢你的建议。我假设这也适用于参考号?只有您坚持使用,事务参考号才会起作用。linenbr将在持久化之前工作。当您持续使用参考号编号序列时,将获得下一个编号。