Acumatica 基于客户选择的联系人查找

Acumatica 基于客户选择的联系人查找,acumatica,Acumatica,我需要在SO屏幕(SO301000)中创建联系人查找。我已经创建了用户定义的自定义字段,如下所示。我列出了所有联系人,但没有根据何时选择客户进行刷新。我是否必须为CustomerID编写任何事件来刷新这些联系人查找?有人知道吗 [PXDBInt] [PXUIField(DisplayName=“Contact”)] [PX选择器(类型)(搜索2), DescriptionField=typeof(Contact.displayName),Filterable=true,DirtyRead=tr

我需要在SO屏幕(SO301000)中创建联系人查找。我已经创建了用户定义的自定义字段,如下所示。我列出了所有联系人,但没有根据何时选择客户进行刷新。我是否必须为CustomerID编写任何事件来刷新这些联系人查找?有人知道吗

[PXDBInt]
[PXUIField(DisplayName=“Contact”)]
[PX选择器(类型)(搜索2),
DescriptionField=typeof(Contact.displayName),Filterable=true,DirtyRead=true)]
[PXRestrictor(typeof(其中),PX.Objects.CR.Messages.ContactInactive,typeof(Contact.displayName))]
[PXDBChildIdentity(typeof(Contact.contactID))]
公共虚拟整数?UsrCustContactID{get;set;}

公共抽象类usrCustContactID:IBqlField{}
我发现选择器中没有基于给定客户的where条件。尝试更新选择器以匹配以下内容

[PXSelector(typeof(Search2<Contact.contactID,
    LeftJoin<BAccount, On<BAccount.bAccountID, Equal<Contact.bAccountID>>>,
    Where<BAccount.bAccountID, Equal<Current<SOOrder.customerID>>>>),
DescriptionField = typeof(Contact.displayName), Filterable = true, DirtyRead = true)]
[PXSelector(typeof(Search2),
DescriptionField=typeof(Contact.displayName),Filterable=true,DirtyRead=true)]
在页面中,还要确保选择器具有AutoRefresh=“true”

例如:

<px:PXSelector ID="edWeightUOM" runat="server" 
    DataField="WeightUOM" Size="S" AutoRefresh="true" />

您缺少Where子句,需要使用
BAccount2
而不是
BAccount
SOOrderEntry
图形具有使用
Vendor
DAC定义的数据视图,该DAC首先在
BAccount
之前初始化,框架将用
Vendor
DAC替换它。为了防止这种情况,您需要在BQL中使用
BAccount2
DAC

使用系统;
使用PX数据;
使用PX.Objects.SO;
使用PX.Objects.CR;
命名空间DemoPkg
{
公共类SOOrderPXExt:PXCacheExtension
{
#区域UsrContactID
公共抽象类usrContactID:IBqlField{}
[PXDBInt()]
[PXUIField(DisplayName=“Contact”,Visibility=PXUIVisibility.Visible)]
[PX选择器(类型)(搜索2),
DescriptionField=typeof(Contact.displayName),Filterable=true,DirtyRead=true)]
[PXDefault(PersistingCheck=PXPersistingCheck.Nothing)]
[PXFormula(typeof(默认))]
[PXRestrictor(typeof(Where),PX.Objects.CR.Messages.ContactBAccountDiff)]
[PX限流器(类型)(其中),PX.Objects.CR.Messages.ContactInactive,
typeof(Contact.displayName))]
公共虚拟Int32?UsrContactID{get;set;}
#端区
}
}

并确保在aspx中为该字段的PXSelector控件将
AutoRefresh
设置为
true

以下是我已经为selector设置的内容
您需要选择器具有where语句。。让我看一个示例Added selector示例(未测试),但如果您希望选择器基于另一个字段,则需要在where语句中使用它,并使用Current指向将包含当前缓存中的值的给定字段。BAccount2就是这样做的,联系人查找现在正在根据所选客户进行刷新。然而,若我试图修改现有订单并删除客户或更改,那个么应用程序就会挂起。我必须刷新我的浏览器。我看不到这样的问题。请删除此网站上的所有其他自定义项,并尝试仅使用此自定义项。谢谢Dhiren。这似乎是因为另一个定制。与此帖子相关,当我从Opportunity创建SO时,这些联系人查找不会从Opportunity中填充。但是,我有一组不同的联系人查找代码,如果我使用该代码,那么它会从Opportunity中填充联系人,但不会根据SO中的客户选择进行刷新。有什么想法或建议吗?