PowerApp获取SharePoint自定义ID字段值时ID被重置为0的问题
问题根因及修复方案
1. SharePoint字段类型不匹配
确认ID Config列表的Deviation_ID字段为数字类型,若误设为单行文本类型,当字段为空、存在非数字字符时,Value()函数转换失败会返回0,加1格式化后就会得到00001。
2. Power Apps本地缓存未刷新
当前代码直接调用First('ID Config')可能读取本地缓存的旧值,甚至是未加载完成的空数据,空值经Value()转换后返回0。需在读取前调用Refresh()强制拉取服务端最新数据,修改后代码如下:
If(Connection.Connected, // 强制刷新数据源,避免读取本地缓存 Refresh('ID Config'); UpdateContext({DeviationID:Text(Value(First('ID Config').Deviation_ID+1),"00000")}); Patch( 'ID Config', First('ID Config'), {Deviation_ID:DeviationID} ), Select(Button2) );
3. 并发读写冲突
多用户同时打开偏差页面时,会读取到同一个旧ID值,各自加1后Patch回列表会导致ID覆盖,极端情况会触发空值读取返回0。建议调整ID生成时机:将自增逻辑从页面OnVisible迁移到用户点击提交按钮、确认创建条目前执行,降低并发概率;也可以改用Power Automate流实现ID的原子性自增,彻底避免客户端并发冲突。
4. 列表权限配置错误
确认所有应用用户都有ID Config列表的至少编辑权限,若用户无读取权限,First('ID Config')会返回空记录,字段取值为空转换后即为0。
5. ID Config列表数据丢失
确认ID Config列表始终保留1条有效数据,若数据被误删,First('ID Config')返回空记录,字段取值为空转换后会得到0。
内容的提问来源于stack exchange,提问作者Casper Jacobsen
相关产品推荐
相关产品推荐

