有没有一种方法可以使用户定义的字段进入选择器?

时间:2019-08-21 18:22:30

标签: acumatica

我有一个利用“用户定义的”字段的客户。我发现这些值位于数据库的KvExt表中,但是我没有找到直接通过DAC或DAC扩展访问这些值的方法。有什么方法可以访问该字段并将其添加到Acumatica基本页面中?

我的具体目标是ARPayments页面中的ARTran.RefNbr选择器。

1 个答案:

答案 0 :(得分:1)

您可能已经知道,用户定义字段实际上是在使用系统中定义的属性。用户定义字段和实际记录(例如ARInvoice)受记录{NoteID的{​​{1}}和用户定义字段的ARInvoice的约束。用户定义字段的RecordID正在存储单词'Attribute'+ FieldName

下面的SQL查询显示引用:

AttributeID

结果集:

enter image description here

了解了上面显示的参考之后,我们可以为SELECT CompanyID, RefNbr, DocType, DocDesc FROM ARRegister WHERE RefNbr='AR007092'; SELECT CompanyID, RecordID, FieldName, ValueNumeric, ValueDate, ValueString, ValueText FROM ARRegisterKvExt where RecordID='78A9D6DE-52C4-E911-B2FD-FC017C8C8936'; SELECT CompanyID, AttributeID, Description, ControlType, EntryMask, RegExp, List, IsInternal, ContainsPersonalData FROM CSAttribute WHERE'AttributeBURDEN' LIKE '%'+AttributeID; 表创建一个DAC,如下所示:

ARRegisterKvExt

然后像下面这样写一个[PXCacheName("AR Register Attributes")] [Serializable] public class ARRegisterKvExt : IBqlTable { public abstract class recordID : BqlGuid.Field<recordID> { } [PXDBGuid(IsKey = true)] public Guid? RecordID { get; set; } public abstract class fieldName : BqlString.Field<fieldName> { } [PXDBString(50,IsKey = true)] [PXUIField(DisplayName ="Name")] public string FieldName { get; set; } public abstract class valueNumeric : BqlDecimal.Field<valueNumeric> { } [PXDBDecimal(8)] [PXUIField(DisplayName = "Value Numeric")] public decimal? ValueNumeric { get; set; } public abstract class valueDate : BqlDateTime.Field<valueDate> { } [PXDBDate] [PXUIField(DisplayName = "Value Date")] public DateTime? ValueDate { get; set; } public abstract class valueString : BqlString.Field<valueString> { } [PXDBString(256)] [PXUIField(DisplayName = "Value String")] public string ValueString { get; set; } public abstract class valueText : BqlString.Field<valueText> { } [PXDBString] [PXUIField(DisplayName = "Value Text")] public string ValueText { get; set; } } 并带有左联接到我们的DAC和PXSelector

CSAttribute

结果,您将看到如下查询:

enter image description here

您会看到没有用户定义字段值的AR发票也没有该字段的名称。这是由Acumatica处理用户定义字段的方式引起的。仅当您设置一个值时,用户定义字段的记录才被写入数据库。如果清除该值,则删除该记录。

在查找中使用“用户定义的字段”的不利方面是,如果您有2个AR发票的用户定义的字段,则同一发票将显示两次,但前提是同时设置了两个“用户定义的字段”的值。 enter image description here