Acumatica 对非绑定用户字段进行筛选将返回零结果
我对“银行存款”屏幕上使用的“将付款添加到存款”弹出屏幕进行了自定义。我需要回过头来获取日记账凭证记录的BatNbr,以便可以在该字段上过滤要添加的付款。RowSelected事件工作正常,并返回BatNbr-但只要您对该字段进行筛选,我总是得到零结果。按此字段以任何方式进行筛选始终返回零结果 我已经使用了我认为正确的使用PXConnectionScope的技术,但这似乎也没有任何区别。我以前有一个支持案例,它解决了问题,但在这里没有帮助。我还尝试使用如图所示的PXScalar属性,但这也不起作用 这是我的密码: 用户字段的DAC扩展:Acumatica 对非绑定用户字段进行筛选将返回零结果,acumatica,Acumatica,我对“银行存款”屏幕上使用的“将付款添加到存款”弹出屏幕进行了自定义。我需要回过头来获取日记账凭证记录的BatNbr,以便可以在该字段上过滤要添加的付款。RowSelected事件工作正常,并返回BatNbr-但只要您对该字段进行筛选,我总是得到零结果。按此字段以任何方式进行筛选始终返回零结果 我已经使用了我认为正确的使用PXConnectionScope的技术,但这似乎也没有任何区别。我以前有一个支持案例,它解决了问题,但在这里没有帮助。我还尝试使用如图所示的PXScalar属性,但这也不起作
public class PaymentInfoExt : PXCacheExtension<PaymentInfo>
{
#region UsrBatchNbr
public abstract class usrBatchNbr : IBqlField { }
[PXString(15, IsUnicode = true)]
[PXUIField(DisplayName = "JV Batch Nbr*")]
//[PXDBScalar(typeof(Search<GLTranDoc.batchNbr,
// Where<GLTranDoc.refNbr, Equal<PaymentInfo.refNbr>,
// And<GLTranDoc.tranModule, Equal<Constants.aR>>>>>))]
public virtual string UsrBatchNbr { get; set; }
#endregion
}
在图形扩展中:
*注意-如果尝试使用RowSelecting事件,则不会得到任何结果。只有RowSelected事件返回结果
public virtual void PaymentInfo_RowSelected(PXCache sender, PXRowSelectedEventArgs e)
{
var pi = e.Row as PaymentInfo;
if (pi != null)
{
//select Refnbr from GLTranDoc where CompanyID = '' and BatchNBR = '' and TranModule = 'AR'
using (new PXConnectionScope())
{
var gltd = (GLTranDoc)PXSelect<GLTranDoc,
Where<GLTranDoc.refNbr, Equal<Required<GLTranDoc.refNbr>>,
And<GLTranDoc.tranModule, Equal<Constants.aR>>>>.Select(Base, pi.RefNbr);
if (gltd != null)
{
var piext = PXCache<PaymentInfo>.GetExtension<PaymentInfoExt>(pi);
if (piext != null)
{
piext.UsrBatchNbr = gltd.BatchNbr;
}
}
}
}
}
我没有看到使用过滤器值的实际代码,因此可能存在错误。还要确保调试使用它的值。您可以使用跟踪或其他机制,但您应该在使用该筛选值时对其进行调试,以确保其在该上下文中不为null。代码中也有许多条件,因此,除非您正确调试,否则该字段很可能未按您认为的那样初始化。具有仅返回常数的FieldSelecting事件,如e.ReturnValue=Test;将消除条件阻止初始化的可能性。谢谢Hugues-我确实从Acumatica支持部门得到了答案。我会把它贴在这里。