Dynamics crm Dynamics365CE工作流:检查值是否已存在并更新记录

Dynamics crm Dynamics365CE工作流:检查值是否已存在并更新记录,dynamics-crm,crm,Dynamics Crm,Crm,当用户打开一个新案例时,我需要检查新案例的序列号是否已经存在,以便更改案例的优先级。我使用Kaskela的解决方案来实现这一点,我认为最好的方法是使用查询来获得单个值(我实际上想要得到的是真布尔值或假布尔值) 这是我使用的fetchXML <fetch mapping='logical'> <entity name='case'> <attribute name='title'/> <filter type='and'>

当用户打开一个新案例时,我需要检查新案例的序列号是否已经存在,以便更改案例的优先级。我使用Kaskela的解决方案来实现这一点,我认为最好的方法是使用查询来获得单个值(我实际上想要得到的是真布尔值或假布尔值)

这是我使用的fetchXML

<fetch mapping='logical'>
  <entity name='case'>
   <attribute name='title'/>
     <filter type='and'>
        <condition attribute='abc_serialnumber' operator='eq' value='DYN_serialnumber' />
     </filter>       
  </entity>    
</fetch> 

我得到了错误

尝试将输入值“SN00105GH”转换为属性“case.abc\u serialnumber”时引发异常System.FormatException。属性值的预期类型:System.Guid。引发异常:Guid应包含32位数字和4个破折号(xxxxxxxx-xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx-xxxxxxxxxxxx)

我知道它需要序列号的GUID,我不能使用它,因为它在另一个实体中

我有两个问题: 查询获取单个值是实现我想要的结果的正确方法吗?
为什么它需要GUID?

据我所知,
abc\u serialnumber
是案例记录中的一个查找,因此它将始终是一个GUID-32位带4个破折号(xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxxxxx-xxxxxxxxxxxxxxxx)。作为
DYN_serialnumber
传递的值是
SN00105GH
,但系统无法使用字符串进行此比较-GUID。因此出现了错误

如果您始终知道该值(即
SN00105GH
),则必须基于该值从
abc_serialnumber
实体执行另一次提取,然后将检索到的序列号记录GUID传递到上述查询中。这将为您提供与指定序列号wrt传递值关联的案例

或者,您必须在fetchxml中执行链接实体,以便在单个查询中使用按值过滤的序列号连接案例

<fetch version="1.0" output-format="xml-platform" mapping="logical" distinct="false" >
  <entity name="case" >
    <attribute name="title" />
    <link-entity name="abc_serialnumber" from="abc_serialnumber" to="abc_serialnumberid" link-type="inner" alias="ac" >
      <filter type="and" >
        <condition attribute="abc_name" operator="like" value="SN00105GH" />
      </filter>
    </link-entity>
  </entity>
</fetch>


如果查询的查询结果计数大于零,则结果为真。否则为假。

谢谢您的回答。我尝试了带有链接实体的fetchXML,但出现错误“Case”实体不包含名称为“abc\U serialnumberid”且名称映射为“Logical”的属性,这是真的,因为“abc\U serialnumberid”属于“abc\U serialnumber”实体。任何进一步的帮助都将是巨大的appreciated@Morgana,可能应该是
abc\u serialnumber
而不是
abc\u serialnumerid