Acumatica自定义Collection Options页面多Tab保存按钮异常排查咨询
我有一个名为Collection Options的自定义页面,包含3个Tab:
- 第一个为主Tab,关联
CollectionOptionsDAC与Graph; - 另外两个Tab分别使用
ProofOfDeliveryPreferences和PODUsers两个不同DAC。
遇到的问题:在Preferences和Access Rights Users Tab点击Save按钮保存值或修改时按钮无效,但在Collection Options Tab操作时,另外两个Tab的修改却能被保存。
截图1:页面Tab布局

截图2:Collection Options Tab属性

截图3:Preferences Tab属性

截图4:Access Rights Users Tab属性

Collection Option Graph视图代码
public class CollectionOptionsGraph : PXGraph<CollectionOptionsGraph> { public PXSelect<CollectionOptions> View; public PXSave<CollectionOptions> Save; public PXCancel<CollectionOptions> Cancel; public PXSelect<ProofOfDeliveryPreferences> ViewPreference; public PXSave<ProofOfDeliveryPreferences> SavePreference; public PXCancel<ProofOfDeliveryPreferences> CancelPreference; public PXSave<PODUsers> SavePODUsers; public PXCancel<PODUsers> CancelPODUsers; public PXSelect<PODUsers> PODUsers; }
结合Acumatica的页面与Graph工作机制,导致该问题的核心原因是子Tab的Save按钮未正确关联对应DAC的Save操作,或Tab的PrimaryView配置错误,具体可从以下几点排查:
Tab的PrimaryView未指向对应DAC的视图
检查Preferences和Access Rights Users Tab的PrimaryView属性:- Preferences Tab的PrimaryView应设置为
ViewPreference(关联ProofOfDeliveryPreferencesDAC的视图) - Access Rights Users Tab的PrimaryView应设置为
PODUsers(关联PODUsersDAC的视图)
如果PrimaryView仍指向主Tab的View,则Save按钮无法识别当前Tab的数据源,导致点击无效。
- Preferences Tab的PrimaryView应设置为
Save按钮的Action未绑定到Graph中对应的Save操作
每个Tab的Save按钮需要绑定到Graph中为对应DAC定义的Save操作:- Preferences Tab的Save按钮应关联
SavePreference操作 - Access Rights Users Tab的Save按钮应关联
SavePODUsers操作
若按钮仍绑定主Tab的Save操作,点击时只会触发CollectionOptionsDAC的保存逻辑,不会处理当前Tab的DAC数据;但主Tab保存时会提交Graph中所有缓存的修改,因此其他Tab的变更会被同步保存。
- Preferences Tab的Save按钮应关联
Graph中Save操作的命名与Tab的Action映射不匹配
Acumatica中Tab的Action名称需与Graph内的Save操作名称完全对应。如果子Tab的Save按钮ActionName仍设为Save而非SavePreference/SavePODUsers,系统会默认调用主Save操作,无法触发对应DAC的保存逻辑。DAC主键或缓存标记问题
若ProofOfDeliveryPreferences或PODUsers未正确设置主键,或修改后缓存未被标记为Dirty(IsDirty为false),单独点击子Tab的Save按钮时,系统会认为无数据变更而不执行保存;但主Tab保存时会强制提交所有缓存数据,因此这些变更会被保存。
内容的提问来源于stack exchange,提问作者Miss. Developer

