首页 > 解决方案 > 如何将字段 (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;
            
          }

}

标签: acumatica

解决方案


RowSelected事件不是初始化事件。它在每次回调到服务器时运行。

该事件应使用参数参数的属性FieldDefaulting分配默认值。NewValuePXFieldDefaultingEventArgs

使用字段默认值会导致索引超出范围错误

这不应该发生在您的 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);
        }
    }
}

在此处输入图像描述


推荐阅读