问题描述
我最近在StockItem中添加了一些用户定义的字段,在一些记录中添加了值,然后尝试按值搜索它们。不幸的是,搜索引擎不知道我的UDF值。
解决方法
是的,正如Brian指出的,我们需要为该特定DAC的NoteID字段添加一个PXSearchable属性。以下来自SOOrder DAC文件的代码,它可以帮助您满足要求。
#region NoteID
public abstract class noteID : PX.Data.BQL.BqlGuid.Field<noteID> { }
protected Guid? _NoteID;
[**PXSearchable**(SM.SearchCategory.SO,"{0}: {1} - {3}",new Type[] { typeof(SOOrder.orderType),typeof(SOOrder.orderNbr),typeof(SOOrder.customerID),typeof(Customer.acctName) },new Type[] { typeof(SOOrder.customerRefNbr),typeof(SOOrder.customerOrderNbr),typeof(SOOrder.orderDesc) },NumberFields = new Type[] { typeof(SOOrder.orderNbr) },Line1Format = "{0:d}{1}{2}{3}",Line1Fields = new Type[] { typeof(SOOrder.orderDate),typeof(SOOrder.status),typeof(SOOrder.customerRefNbr),typeof(SOOrder.customerOrderNbr) },Line2Format = "{0}",Line2Fields = new Type[] { typeof(SOOrder.orderDesc) },MatchWithJoin = typeof(InnerJoin<Customer,On<Customer.bAccountID,Equal<SOOrder.customerID>>>),SelectForFastIndexing = typeof(Select2<SOOrder,InnerJoin<Customer,On<SOOrder.customerID,Equal<Customer.bAccountID>>>>)
)]
[PXNote(new Type[0],ShowInReferenceSelector = true,Selector = typeof(
Search2<
SOOrder.orderNbr,LeftJoinSingleTable<Customer,Equal<Customer.bAccountID>,And<Where<Match<Customer,Current<AccessInfo.userName>>>>>>,Where<
Customer.bAccountID,IsNotNull,Or<Exists<
Select<
SOOrderType,Where<
SOOrderType.orderType,Equal<SOOrder.orderType>,And<SOOrderType.aRDocType,Equal<ARDocType.noUpdate>>>>>>>,OrderBy<
Desc<SOOrder.orderNbr>>>))]
public virtual Guid? NoteID
{
get
{
return this._NoteID;
}
set
{
this._NoteID = value;
}
}
#endregion