如何在自定义实体索引中包含自定义字段?

时间:2018-02-13 05:55:02

标签: acumatica acumatica-kb

客户希望使用通用搜索框来搜索自定义字段中的值。如何才能做到这一点?

在这种情况下,我为InventoryItem创建了一个简单的自定义文本字段。目前,它在用户界面中不可见。

1 个答案:

答案 0 :(得分:1)

让我们参考在this example中创建的自定义UsrAlternateIDs字段,并将其包含在Acumatica的全文实体索引中。

将UsrAlternateIDs字段包含在全文实体索引中所需的唯一修改是替换 InventoryItem中 NoteID 字段上使用的 PXSearchableAttribute 的原始声明 DAC。如下面的代码段所示, UsrAlternateIDs 现已包含在 字段 类型数组中,作为第3个参数传递给新的 PXSearchableAttribute < / strong>构造函数:

[PXNonInstantiatedExtension]
public class InventoryItemExt : PXCacheExtension<PX.Objects.IN.InventoryItem>
{
    [PXMergeAttributes(Method = MergeMethod.Append)]
    [PXRemoveBaseAttribute(typeof(PXSearchableAttribute))]
    [PXSearchable(SM.SearchCategory.IN, "{0}: {1}", 
        new Type[] {
            typeof(InventoryItem.itemType),
            typeof(InventoryItem.inventoryCD) },
        new Type[] {
            typeof(InventoryItem.descr),
            typeof(InventoryItemExt.usrAlternateIDs) },
        NumberFields = new Type[] {
            typeof(InventoryItem.inventoryCD),
            typeof(InventoryItemExt.usrAlternateIDs) },
        Line1Format = "{0}{1}{2}", 
        Line1Fields = new Type[] {
            typeof(INItemClass.itemClassCD),
            typeof(INItemClass.descr),
            typeof(InventoryItem.baseUnit) },
        Line2Format = "{0}", 
        Line2Fields = new Type[] {
            typeof(InventoryItem.descr) },
        WhereConstraint = typeof(Where<Current<InventoryItem.itemStatus>, 
            NotEqual<InventoryItemStatus.unknown>>)
     )]
     public Guid? NoteID { get; set; }
}

在上面的示例之后实施 InventoryItem 扩展并在Acumatica ERP实例上重建全文实体索引之后,应该可以根据其备用ID搜索库存项目。