acumatica - 如何将字段 (A) 默认为字段 (B) 的值,并且仍然能够编辑字段和回溯日期?
问题描述
申请日期至默认文件日期:
protected void ARPayment_RowSelected(PXCache cache, PXRowSelectedEventArgs e, PXRowSelected InvokeBaseHandler)
{
if(InvokeBaseHandler != null)
InvokeBaseHandler(cache, e);
var row = (ARPayment)e.Row;
if (row != null)
{
row.AdjDate = row.DocDate;
row.AdjFinPeriodID = row.FinPeriodID;
}
}
代码根据需要默认字段,但无法编辑申请日期,因此无法进行回溯
protected void ARPayment_AdjFinPeriodID_FieldDefaulting(PXCache cache, PXFieldDefaultingEventArgs e)
{
var row = (ARPayment)e.Row;
row.AdjFinPeriodID = row.FinPeriodID;
}
protected void ARPayment_AdjDate_FieldDefaulting(PXCache cache, PXFieldDefaultingEventArgs e)
{
var row = (ARPayment)e.Row;
row.AdjDate = row.DocDate;
}
使用字段默认值会导致索引超出范围错误
通过添加一个条件来检查它所占用的文档的工作状态
protected void ARPayment_RowSelected(PXCache cache, PXRowSelectedEventArgs e, PXRowSelected InvokeBaseHandler)
{
if(InvokeBaseHandler != null)
InvokeBaseHandler(cache, e);
var row = (ARPayment)e.Row;
if (row != null && row.Status == "Open")
{
row.AdjDate = row.DocDate;
row.AdjFinPeriodID = row.FinPeriodID;
}
}
解决方案
该RowSelected
事件不是初始化事件。它在每次回调到服务器时运行。
该事件应使用参数参数的属性FieldDefaulting
分配默认值。NewValue
PXFieldDefaultingEventArgs
使用字段默认值会导致索引超出范围错误
这不应该发生在您的 FieldDefaulting 处理程序中,因为没有索引访问操作。我无法重现此问题。删除所有其他自定义代码,仅保留 FieldDefaulting 事件,此错误应该会消失。
不过还有另一个问题。当我调试 FieldDefaulting 事件时,该DocDate
值始终为 null。当我传递一个有效的 Date 值进行初始化时,它在新付款上会按预期工作。例子:
using PX.Data;
using System;
namespace PX.Objects.AR
{
public class ARPaymentEntry_Extension : PXGraphExtension<ARPaymentEntry>
{
public void ARPayment_AdjDate_FieldDefaulting(PXCache cache, PXFieldDefaultingEventArgs e)
{
ARPayment row = e.Row as ARPayment;
if (row != null)
e.NewValue = new DateTime(2077, 01, 01);
}
}
}
推荐阅读
- firebase - 在使用 Firebase 和 Flutter 进行身份验证时遇到问题
- go - goroutine中的死锁
- css - 锚点不会延伸到侧边栏的整个宽度
- java - 如何实现二叉搜索树(在我的问题的参数范围内)?
- ios - 将 CIFilter 保存为 RAW 图像
- intellij-idea - IntelliJ Community Edition 19.2.4 是否在 Kotlin 1.3.60 处理使用反引号的多平台测试名称时引入了一个错误?
- mysql - @EmbeddedId 字段是否已索引 Spring-data-jpa 实体?
- javascript - 如何以可以将返回值传递给另一个函数的方式从我的 HTML 表单返回用户输入?
- android - 摆脱android默认按钮带来的额外空间
- php - 如何将循环单选按钮值插入数据库