在Acumatica中如何在新屏幕上的多个用户中使用自动编号?

时间:2019-08-01 20:02:42

标签: acumatica autonumber

我在Acumatica中有一个带有自动编号的自定义屏幕,但是只有一个用户可以同时使用。如何获得屏幕多用户?

在销售订单/付款和应用程序中,我有一个选项卡('COMPLEMENTOS'),在此选项卡中,您可以在其他屏幕中添加新的补码。该屏幕上有一个字段“否。 Complemento'是自动编号,自动编号正确生成,但是如果两个人同时在同一屏幕上,则其中一个正确保存,但另一个尝试使用已使用的相同编号保存并发送错误消息“另一个进程已更新CPSetup记录。您的更改将丢失”。如何同时处理两个或多个屏幕。

if (cache.GetStatus(row) == PXEntryStatus.Inserted)
{
   AutoNumberAttribute.SetLastNumberField<COPago.cOPagoCD>(cache, row, 
   typeof(CPSetup.returnLastDocRefNbr));
   if (row.RefNbrPago != null)
   {
      AutoNumberAttribute.SetPrefix<COPago.cOPagoCD>(cache, row, "REP");
   }
}

实际错误是“另一个进程已更新CPSetup记录。您的更改将丢失” 我想知道如何在两个或多个用户同时在同一屏幕上正确生成自动编号。

1 个答案:

答案 0 :(得分:0)

生成下一个数字时,可能会将其存储在“编号序列”上的字段中。我们称它为LastNumber。

在编号序列上更新LastNumber字段(带有下一个数字)时,您需要使用SQL事务

using (PXTransactionScope ts = new 
PXTransactionScope())
{
    //Update LastNumber with next number
    // persist cache
    ts.Complete();
 }