在Kingswaysoft Dynamics 365工具包中,如何用ownerid GUID匹配用户实体自定义列?
解决Kingswaysoft中用OwnerID(GUID)匹配自定义用户字段的问题
问题根源
报错systemuser With Id = xxx Does Not Exist是因为默认配置下,Text Lookup会把传入的GUID当作系统用户的原生ID去查找,而非匹配你自定义的new_legacyuserid字段,自然找不到对应记录。
解决方案
以下是三种可行的实现方式,按需选择:
1. 调整Text Lookup Editor配置(最直接)
- 打开Text Lookup Editor,目标实体选择
systemuser - 在Lookup Criteria区域,添加条件:
- 字段选
new_legacyuserid - 运算符选
Equals - 值输入
ToString(OwnerId)(将源GUID转为字符串,确保和new_legacyuserid的文本格式匹配)
- 字段选
- 切换到Advanced标签,设置Default Value为你的fallback用户的系统ID(比如
be33cd29-671b-e511-80ce-005056ae320c),这样当没有匹配到(其他记录new_legacyuserid为空)时,自动返回该默认用户。
2. 使用Expression Lookup实现灵活匹配
如果Text Lookup的配置不够灵活,改用Expression Lookup:
- 在表达式中直接构建查询逻辑,同时处理无匹配的情况:
IIF( IsNullOrEmpty(FindRecord("systemuser", "new_legacyuserid eq '" + ToString(OwnerId) + "'", "systemuserid")), '你的fallback用户GUID', FindRecord("systemuser", "new_legacyuserid eq '" + ToString(OwnerId) + "'", "systemuserid") ) - 这个表达式会先查找
new_legacyuserid等于源OwnerID字符串的用户,找不到就返回预设的fallback用户ID。
3. 预处理GUID格式(避免格式不匹配)
如果new_legacyuserid中的GUID格式和源OwnerID的字符串格式不一致(比如有无花括号、大小写差异),先做格式统一:
- 用字符串函数清理源OwnerID:
Replace(Replace(ToString(OwnerId), "{", ""), "}", "") - 把清理后的字符串作为匹配值传入Text Lookup或Expression Lookup,确保和
new_legacyuserid的格式完全一致。
内容的提问来源于stack exchange,提问作者Khadim Ali
相关产品推荐
相关产品推荐

