Acumatica 克隆DAC以插入新的DAC

Acumatica 克隆DAC以插入新的DAC,acumatica,Acumatica,如何在Acumatica框架中创建DAC副本(即克隆它)。当然,我可以创建一个新实例并单独设置所有值,但是有没有一种方法可以为您做到这一点 我找到了下面的方法 PXCache<...>.CreateCopy(sourceRule); PXCache.CreateCopy(sourceRule); 但是,这似乎复制了所有内容,包括ID、CreatedBy等。 我需要一个新的DAC,并复制所有相关字段。 如何执行此操作?您可以使用PXCacheCreateCopy执行您提到的复制,然

如何在Acumatica框架中创建DAC副本(即克隆它)。当然,我可以创建一个新实例并单独设置所有值,但是有没有一种方法可以为您做到这一点

我找到了下面的方法

PXCache<...>.CreateCopy(sourceRule);
PXCache.CreateCopy(sourceRule);
但是,这似乎复制了所有内容,包括ID、CreatedBy等。 我需要一个新的DAC,并复制所有相关字段。
如何执行此操作?

您可以使用
PXCache
CreateCopy
执行您提到的复制,然后在将新副本插入缓存之前,将键设置为null/更改键

下面是一个将销售订单扩展上的销售行复制为新行的示例:

var soLine = PXCache<SOLine>.CreateCopy(Base.Transactions.Current);
// Null the keys of SOLine
soLine.OrderType = null;
soLine.OrderNbr = null;
soLine.LineNbr = null;
Base.Transactions.Insert(soLine);
var soLine=PXCache.CreateCopy(Base.Transactions.Current);
//将SOLine的键设为Null
soLine.OrderType=null;
soLine.OrderNbr=null;
soLine.LineNbr=null;
Base.Transactions.Insert(索林);

在研究了PXCache类之后,我可以说Acumatica的PXCache.CreateCopy和PXCache.RestoreCopy正在复制DAC拥有的所有字段。因此,您可能必须自己编写复制函数。我想我通过使用CreateCopy,然后将ID设置为null,成功地使其工作