如何在Acumatica中向Universal Search添加新业务对象

时间:2018-08-17 19:44:10

标签: acumatica

我已经能够在Acumatica的通用搜索中向现有实体添加其他搜索字段。但是,在自定义表上为NoteID添加类似的定义不会将该对象添加到“重建全文本实体索引”屏幕,也不会使自定义数据可搜索。

我在“库存项目”屏幕上添加了一对多的可选属性列表,这些值需要包含在通用搜索中。 NoteID字段上的语法看起来与其他源代码相同,并且代码可以干净地编译。

似乎要包含的实体是由PXSearchableAttribute.GetAllSearchableEntities()返回的,但似乎没有出现在源代码中以了解其工作原理。实体是否固定,还是可以添加自己的实体以进行通用搜索?

如何从自定义表中获取数据以进行搜索?

1 个答案:

答案 0 :(得分:1)

全文本实体索引要求该实体具有一个NoteID字段,并用通常的PXNote属性和PXSearchable装饰。以下是来自APInvoice DAC的示例:

    [PXSearchable(SM.SearchCategory.AP, "AP {0}: {1} - {3}", new Type[] { typeof(APInvoice.docType), typeof(APInvoice.refNbr), typeof(APInvoice.vendorID), typeof(Vendor.acctName) },
        new Type[] { typeof(APInvoice.invoiceNbr), typeof(APInvoice.docDesc)},
        NumberFields = new Type[] { typeof(APInvoice.refNbr) },
        Line1Format = "{0:d}{1}{2}", Line1Fields = new Type[] { typeof(APInvoice.docDate), typeof(APInvoice.status), typeof(APInvoice.invoiceNbr) },
        Line2Format = "{0}", Line2Fields = new Type[] { typeof(APInvoice.docDesc) },
        MatchWithJoin = typeof(InnerJoin<Vendor, On<Vendor.bAccountID, Equal<APInvoice.vendorID>>>),
        SelectForFastIndexing = typeof(Select2<APInvoice, InnerJoin<Vendor, On<APInvoice.vendorID, Equal<Vendor.bAccountID>>>>)
    )]
    [PXNote(ShowInReferenceSelector = true)]
    public override Guid? NoteID

GetAllSearchableEntities函数所做的不过是使用ServiceManager.TableList遍历每个表,并查找装饰有预期属性的注释字段。表列表是在应用程序启动时缓存的,因此,取决于发布更改的方式,重新加载可能尚未完成。如果您已经按照上述说明配置了字段,则可以尝试从命令行执行iisreset来查看它是否可以解决您的问题。