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