2016-07-14 134 views
0

我想通过角色中的用户在当前用户登录时在SOOrder屏幕上设置默认OrderType。所以我在屏幕订单类型:SO201000上创建新的字段,选择角色名称。例如:OrderType:用于userRole:001A的C1和用于userRole:001D的OrderType:C2。错误CS0426:“PX.Objects.SO.SOOrderType”类型中不存在类型名称'UsrUserRole'

在屏幕上的订单类型:SO201000和UsrUserRole(新领域)

[PXDBString(64)] 
[PXDefault()] 
[PXSelector(typeof(Search2<PX.SM.Roles.rolename>))] 
[PXUIField(DisplayName="User Role", Visibility = PXUIVisibility.SelectorVisible)] 

在屏幕上SOOrder:订单类型(自定义现有域)

[PXDefault(typeof(Search2<SOOrderType.orderType,InnerJoin<PX.SM.UsersInRoles, On<PX.SM.UsersInRoles.rolename, Equal<SOOrderType.UsrUserRole>>>,Where<PX.SM.UsersInRoles.username, Equal<Current<AccessInfo.userName>>>>), PersistingCheck = PXPersistingCheck.Nothing)] 

默认订单类型(自定义现有域)

[PXSelector(typeof(Search5<SOOrderType.orderType,InnerJoin<SOOrderTypeOperation, On<SOOrderTypeOperation.orderType, Equal<SOOrderType.orderType>, And<SOOrderTypeOperation.operation, Equal<SOOrderType.defaultOperation>>>,LeftJoin<SOSetupApproval, On<SOOrderType.orderType, Equal<SOSetupApproval.orderType>>>>,Aggregate<GroupBy<SOOrderType.orderType>>>),DescriptionField = typeof(SOOrderTypeT.descr))] [PXRestrictor(typeof(Where<SOOrderTypeOperation.iNDocType,NotEqual<INTranType.transfer>, Or<FeatureInstalled<FeaturesSet.warehouse>>>), ErrorMessages.ElementDoesntExist, typeof(SOOrderType.orderType))] 
[PXRestrictor(typeof(Where<SOOrderType.requireAllocation, NotEqual<True>, Or<AllocationAllowed>>), ErrorMessages.ElementDoesntExist, typeof(SOOrderType.orderType))] 
[PXRestrictor(typeof(Where<SOOrderType.active,Equal<True>>), null)] 
+0

它不够清楚吗? – YSP

回答

0

当你写一个搜索,你正在写它来获得你想要的领域。在这种情况下,您需要SOOrderType.orderType的值。

如果您确定PXDefault属性中的搜索是正确的,可能需要检查Acumatica屏幕的逻辑如何分配值。可能有一些逻辑会覆盖你的价值。

UsrUserRole是否为SOOrderType的扩展名?如果那么你应该使用它像YourExtension.UsrUserRole不是SOOrderType.UsrUserRole

+0

主要想法是,我想选择为订单类型屏幕中的角色设置的SOOrder类型。但现在不能选择它。 – YSP

+0

检查编辑的答案 – Hybridzz

+0

似乎在OrderType屏幕上,我刚刚创建了新字段,它保存到表中,但它没有在SOOrderType中定义,所以这就是为什么它出现错误:类型名称'UsrUserRole'不存在于类型'PX .Objects.SO.SOOrderType”。 – YSP

相关问题