Acumatica 22.207:InventoryItemCurySettings自定义字段无法更新求助
问题:InventoryItemCurySettings自定义字段无法通过ItemClassID更新
版本:22.207
我为InventoryItemCurySettings表添加了一个自定义字段,希望根据所选的Item Class对其进行更新。为此,我在InventoryItemMaint图扩展中添加了FieldUpdated事件重写,但自定义字段始终无法更新。已确认settings变量存在记录,尝试了Update()方法以及SetValue()、SetValueExt()方法,均未成功。
代码实现
public class MyInventoryItemMaintExt : PXGraphExtension<InventoryItemMaint> { public void _(Events.FieldUpdated<InventoryItem, InventoryItem.itemClassID> e, PXFieldUpdated baseMethod) { baseMethod(e.Cache, e.Args); if (e.Row == null) return; InventoryItemCurySettings settings = Base.ItemCurySettings.Current; Base.ItemCurySettings.Cache.SetValue<InventoryItemCurySettingsExt.usrCustom>(settings, "Test"); //InventoryItemCurySettingsExt settingsExt = settings.GetExtension<InventoryItemCurySettingsExt>(); //settingsExt.UsrCustom = "Test"; //Base.ItemCurySettings.Update(settings); } }
解决思路
- 检查缓存状态:调用
Base.ItemCurySettings.Cache.IsDirty查看记录是否标记为脏数据,若未标记,可手动调用Cache.SetStatus(settings, PXEntryStatus.Updated)将记录状态设为已更新。 - 强制持久化与刷新:修改字段后,先执行
Base.ItemCurySettings.Update(settings),再调用Base.ItemCurySettings.Cache.Persist(PXDBOperation.Update)强制保存,或者用Base.ItemCurySettings.View.RequestRefresh()刷新视图。 - 验证字段扩展定义:确认
InventoryItemCurySettingsExt中usrCustom字段的属性配置,比如是否误设了ReadOnly = true,或者字段数据类型是否与赋值内容匹配。 - 确认操作时机:基类的
baseMethod可能会重置ItemCurySettings的缓存,可尝试将自定义字段更新逻辑放在baseMethod调用前,或者通过PXCache的FieldUpdated事件单独绑定,避免被基类逻辑覆盖。 - 检查权限设置:在Acumatica系统中确认当前用户对
usrCustom字段拥有编辑权限,避免权限限制导致字段无法修改。
内容的提问来源于stack exchange,提问作者MikeNIke
相关产品推荐
相关产品推荐

