Acumatica 将两个不同图形的时间戳与PXGraph进行比较。SelectTimestamp()

Acumatica 将两个不同图形的时间戳与PXGraph进行比较。SelectTimestamp(),acumatica,Acumatica,我正在尝试获取PXGraph.Timestamp的值,以便在RowUpdate事件上比较SoShipping图和我的自定义图。到目前为止,使用Document.Search获取我的图形并获取时间戳将返回与“this.SelectTimestamp()”相同的时间戳。如何获取第一个SOShipping图的实际时间戳,以便它返回正确的值 在下面,ts和ts2每次都是相同的值。我猜是因为我之前正在创建图形,但是我不确定如何以另一种方式加载图形,如果可能的话 protected

我正在尝试获取PXGraph.Timestamp的值,以便在RowUpdate事件上比较SoShipping图和我的自定义图。到目前为止,使用Document.Search获取我的图形并获取时间戳将返回与“this.SelectTimestamp()”相同的时间戳。如何获取第一个SOShipping图的实际时间戳,以便它返回正确的值

在下面,ts和ts2每次都是相同的值。我猜是因为我之前正在创建图形,但是我不确定如何以另一种方式加载图形,如果可能的话

            protected virtual void SOShipLine_RowUpdating(PXCache sender, PXRowUpdatingEventArgs e)
    {

            SOShipmentEntry shipmentGraph = PXGraph.CreateInstance<SOShipmentEntry>();
            shipmentGraph.Document.Current = shipmentGraph.Document.Search<SOShipment.shipmentNbr>(row.ShipmentNbr);                                
            shipmentGraph.SelectTimeStamp();
            var ts = shipmentGraph.TimeStamp;
            this.SelectTimeStamp();
            var ts2 = TimeStamp;


    }
protectedvirtualvoidsoshipline\u行更新(PXCache发送方,pxrowupdateingeventargs e)
{
soshipmentry shipmentGraph=PXGraph.CreateInstance();
shipmentGraph.Document.Current=shipmentGraph.Document.Search(row.ShipmentNbr);
shipmentGraph.SelectTimeStamp();
var ts=shipmentGraph.TimeStamp;
选择timestamp();
var ts2=时间戳;
}

我认为图形时间戳(全局时间戳)在用户代码中没有合法的用途。图形没有持久化,因此它们的时间戳只针对服务器回调的范围进行计算。您是否看到其他方法来比较两个屏幕之间相同DAC(SOShipLine)的两个缓存?这是为了防止发生“另一条记录已更新”错误。您可以查看Base.Caches[typeof(DAC)]。Inserted和Base.Caches[typeof(DAC)]。已更新的集合。如果两个图中的记录相同,则必须放弃其中一个,以防止持久化操作发生冲突。如果使用DataView,则可以检查其IsDirty属性。在这种情况下,我认为必须通过检查数据库来完成同步。也许您可以使用PXDatabase.GetSlot/PXDatabase.SetSlot来存储同步对象,但它不会绕过并发访问保护。如果在一个选项卡中有DAC的脏对象,则必须在另一个选项卡中保存并重新加载该对象,才能在两个选项卡中保持。