【发布时间】:2019-08-15 22:50:36
【问题描述】:
在销售订单上,当我复制订单操作时。我的代码错误,因为检索“this._Graph.Caches[BqlCommand.GetItemType(selectorInventoryID)];”的行是 = 0。 该程序运行良好,除了前面提到的操作。
private Type selectorOrderNbr;
private Type selectorInventoryID;
public ItemDiscountClassAttribute() : base(typeof(ARDiscount.discountID))
{}
protected virtual IEnumerable GetRecords()
{
this.selectorOrderNbr = typeof(SOOrder.orderNbr);
var cache1 = this._Graph.Caches[BqlCommand.GetItemType(selectorOrderNbr)];
var order = (SOOrder)cache1.Current;
this.selectorInventoryID = typeof(SOLine.inventoryID);
var cache2 = this._Graph.Caches[BqlCommand.GetItemType(selectorInventoryID)];
var line = (SOLine)cache2.Current;
应该是:cache2 = "{PXCache(1)}"
但输出是:cache2 = "{PXCache(0)}"
Highlighted section where var cache2 is 0 and var line is null
【问题讨论】:
-
你能具体说明你从哪里复制这段代码的图表和方法吗?
-
Samvel,该图是 SOOrderEntry 的扩展。代码是自定义的,我只是添加了一张完整代码的图片。
-
我在这段代码中看到的问题是它缺少几乎所有的空值检查。如果我正确理解 Acumatica 与选择器的关系,那么即使在您向销售订单插入一行之前,也会调用此代码。
标签: acumatica