新增CRCase状态后Acumatica操作与查询菜单项被禁用问题
解决CRCase页面新增状态后操作组禁用的问题
针对你在CR306000页面新增案例状态后,操作与查询组操作被禁用的问题,我整理了几个关键排查和解决步骤,都是Acumatica开发中遇到这类问题的常见解法:
1. 优先检查操作的自动化步骤绑定
Acumatica里大部分页面操作会和状态字段做自动化绑定,默认只允许在指定状态下执行。你新增的状态没有被包含到这些操作的允许列表里,这是最可能的原因:
- 打开CR306000的布局编辑器,找到操作组里的目标操作(比如Edit、Delete、Find等)
- 查看每个操作的「Automation Steps」设置,把你新增的状态添加到允许的状态集合中
- 保存布局后刷新页面,测试操作是否恢复可用
2. 确保RowSelected事件逻辑正确执行
如果自动化步骤配置后还是有问题,再检查你的RowSelected事件代码是否存在细节疏漏:
- 要确保正确获取到CRCaseMaint图实例,并且操作控件的名称和页面上的ID一致(可以通过布局编辑器查看操作的ID)
- 示例修正后的代码参考:
public class CRCaseExt : PXCacheExtension<CRCase> { public static bool IsActive() => true; protected void _(Events.RowSelected<CRCase> e) { if (e.Row == null) return; CRCase currentCase = e.Row; var caseMaintGraph = e.Cache.Graph as CRCaseMaint; if (caseMaintGraph == null) return; // 替换成你的新状态键值 if (currentCase.Status == "NEW") { // 启用操作组核心操作 caseMaintGraph.Edit.SetEnabled(true); caseMaintGraph.Delete.SetEnabled(true); caseMaintGraph.Save.SetEnabled(true); // 启用查询组操作 caseMaintGraph.Find.SetEnabled(true); caseMaintGraph.ViewHistory.SetEnabled(true); } } }
3. 验证DAC状态字段的StringList配置
确认你在DAC扩展中正确覆盖了Status字段的状态列表,确保新状态的键值对没有错误:
[PXString(1, IsFixed = true)] [PXUIField(DisplayName = "Status")] [PXStringList( new string[] { CRCaseStatus.Open, CRCaseStatus.Closed, "NEW" }, new string[] { "Open", "Closed", "你的新状态名称" })] public virtual string Status { get; set; } public abstract class status : PX.Data.BQL.BqlString.Field<status> { }
4. 检查状态流转规则
如果你的案例模块启用了自动化流转,还需要在CRCaseMaint图的自动化步骤配置中,添加新状态的流转规则——允许从新状态触发相关操作的执行权限。
内容的提问来源于stack exchange,提问作者Jean Claude Abela
相关产品推荐
相关产品推荐

