我有一个自定义按钮,用于更新选定行上的自定义布尔字段。该字段正在更新,但是更改未提交到数据库。下面的错误被抛出在最后一行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);
}
}
}
}
答案 0 :(得分:0)
您可以在按钮中尝试类似此代码的内容。这将更新而不会触发其他事件。
PXDatabase.Update<GLTran>(
new PXDataFieldAssign<GLTranExtension.UsrRecon >(bool_var),
new PXDataFieldRestrict<GLTran.batchnbr>(tran.batchnbr),
new PXDataFieldRestrict<GLTran.lineNbr>(tran.LineNbr)
);