检查参数是否已在USD数据参数中创建

时间:2019-06-21 04:54:09

标签: javascript c# crm unified-service-desk

我正在尝试建立一个逻辑,以便在其中使用uii操作 CreateEntity 运行操作调用。该操作调用在CRM自定义实体中创建一条记录。现在,该动作调用被多次触发,这是因为该动作调用已附加在被多次触发的BrowserDocumentComplete事件中。

现在,由于该操作调用被多次触发,因此在CRM内创建了多个记录。我想让它在创建第一条记录后停止,然后发生的情况是,如果创建第一条记录,则会在USD DataParameters内​​部创建一个参数。

因此,我想最好通过Scriptlet进行检查,如果参数命名为 RecordCreated 是在USD内创建的,则停止操作调用。

类似if (RecordCreated Exists) then stop else run

2 个答案:

答案 0 :(得分:0)

理想情况下,BrowserDocumentComplete事件不会以美元多次触发。是PageLoadComplete事件通常被触发两次。在考虑其他解决方案之前,您需要检查一次。

关于您的问题,如果您的情况下浏览器文档完成工作无法按预期进行,则另一个选择是在第二次运行操作调用之前检查是否已创建记录。为此,您可以做的是,每执行一次操作调用,您都会在USD数据参数中获得一个对象$ Result。查找对象并获取要创建的CRM记录的向导。您应该可以访问类似这样的内容,

$Result.<<Name of your action call goes here>>

在您的同一动作调用中,检查以上代码的输出是否正确,并查看GUID是否为空。如果它不为空,则表示您的操作调用先前已执行,否则执行该操作调用以创建记录。

希望有帮助。

答案 1 :(得分:0)

我相信,每次页面或iframe加载完成时都会触发BrowserDocumentComplete。而是使用通常仅触发一次的事件,例如DataReady或PageReady。前提是您的美元版本中提供了DataReady和PageReady。

在重新加载/刷新方案期间,DataReady和PageReady仍可以多次触发,因此您仍然可能遇到相同的问题。为了减轻这种情况,请检查是否存在创建记录时创建的数据参数。在条件检查中,使用'+'修饰符,允许将替换参数替换为不存在的空字符串。如果您的操作调用被命名为“创建自定义实体记录”,那么您的条件表达式可能看起来像这样:

[[$Result.Create Custom Entity Record]+]===""

现在,即使多次尝试执行操作调用,也应仅触发一次,并防止随后触发。随后的尝试应在Debugger中以黄色阴影显示,指示“ ConditionFailed”。