无法将数据保存到“帐户详细信息”网格上的自定义字段

时间:2018-07-19 15:06:07

标签: c# acumatica

我有一个自定义按钮,用于更新选定行上的自定义布尔字段。该字段正在更新,但是更改未提交到数据库。下面的错误被抛出在最后一行gltran.Persist()

f, ax = plt.subplots()
data1.plot.line(x='date', y='GDP', ax = ax)
ax.scatter(X_test['date'], predictions)
plt.show()

错误:

  

{“错误:'AmtReleasedClearedDr'不能为空。”}

堆栈:

  

”位于PX.Data.PXDefaultAttribute.RowPersisting(PXCache发送器,PXRowPersistingEventArgs e)\ r \ n(位于PX.Data.PXCache.OnRowPersisting(对象项,PXDBOperation操作)\ r \ n位于PX.Data.PXCache {{ 1}}} 1.Persist(PXDBOperation操作)\ r \ n在PX.Data.PXRowPersisting.Invoke(PXCache发送器,PXRowPersistingEventArgs e)\ r \ n在PX.Data.PXCache.OnRowPersisting(对象项,PXDBOperation操作)\ r \ n在PX.Data.PXCache pointer-events: none;​ 1.PersistUpdated(对象行)\ r \ n在PX.Data.PXCache`1.Persist(PXDBOperation操作)\ r \ n在PX.Objects.GL.AccountByPeriodEnq_Extension c:\ Program Files(x86)\ Acumatica ERP \ AcumaticaERP \ App_Code \ Caches \ AccountByPeriodEnq.cs:第43行中的.recon():

--------------------------------------------------- ------------------------

工作代码(谢谢Patrick):

public class AccountByPeriodEnq_Extension : PXGraphExtension<AccountByPeriodEnq>
{
    public PXAction<AccountByPeriodFilter> Recon;

    [PXButton(CommitChanges = true)]
    [PXUIField(DisplayName = "Reconcile")]
    protected void recon()
    {
        PXCache gltran = Base.Caches[typeof(GLTran)];
        foreach (GLTran tran in gltran.Updated)
        {
            if (tran.Selected == true)
            {
                GLTranExt gltranEx = tran.GetExtension<GLTranExt>();
                if (gltranEx.UsrRecon == true) gltranEx.UsrRecon = false;
                else gltranEx.UsrRecon = true;
                gltran.Update(tran);
                gltran.Persist(PXDBOperation.Update);
            }
        }
    }
}

1 个答案:

答案 0 :(得分:0)

您可以在按钮中尝试类似此代码的内容。这将更新而不会触发其他事件。

PXDatabase.Update<GLTran>(
   new PXDataFieldAssign<GLTranExtension.UsrRecon >(bool_var),
   new PXDataFieldRestrict<GLTran.batchnbr>(tran.batchnbr),
   new PXDataFieldRestrict<GLTran.lineNbr>(tran.LineNbr)
);