Acumatica设置选择器默认值:将仓库DTC设为默认仓库求助
问题解决:设置默认仓库"DTC"
代码中的核心问题
- 逻辑判断反向:原代码
if(row != null)return;会导致数据行存在时直接退出方法,完全跳过设置仓库的逻辑,应改为判断行不存在时退出。 - 类型不匹配:
SiteID在Acumatica中是整数类型(对应仓库主键ID),不能直接赋值字符串"DTC",需先查询该仓库对应的ID值再赋值。
修正后的代码
protected void AMProdItem_InventoryID_FieldUpdated(PXCache cache, PXFieldUpdatedEventArgs e) { AMProdItem row = (AMProdItem)e.Row; if (row == null) return; // 行不存在时终止执行 // 查询仓库"DTC"对应的SiteID Site site = PXSelect<Site, Where<Site.siteCD, Equal<Required<Site.siteCD>>>>.Select(Base, "DTC"); if (site != null) { row.SiteID = site.SiteID; } }
额外说明
- 需确保系统中已存在代码为"DTC"的仓库,否则查询会返回null,无法设置SiteID。
- 若需要在
InventoryID为空时也设置默认仓库,可将逻辑迁移至RowSelected事件,或调整触发时机。
内容的提问来源于stack exchange,提问作者DevFuture
相关产品推荐
相关产品推荐

