0

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

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

所以,我想通过 Scriptlet 最好检查一下,如果参数让它命名为RecordCreated已经在 USD 内部创建,那么让动作调用停止。

像这样的东西if (RecordCreated Exists) then stop else run

4

2 回答 2

0

我相信每次页面或 iframe 完成加载时都会触发 BrowserDocumentComplete 。相反,请使用通常只触发一次的事件,例如 DataReady 或 PageReady。这假定 DataReady 和 PageReady 在您的 USD 版本中可用。

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

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

现在,即使多次尝试操作调用,它也应该只触发一次并且随后被阻止触发。后续尝试应在 Debugger 中显示为黄色,表示“ConditionFailed”。

于 2019-06-24T19:13:24.017 回答
0

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

谈到您的问题,如果浏览器文档完成在您的情况下没有按预期工作,另一种选择是在第二次运行操作调用之前检查是否创建了记录。为此,您可以做的是,每当执行操作调用时,您都会在 USD 数据参数中获得一个对象 $Result。查找对象并获取正在创建的 CRM 记录的 guid。你应该能够访问这样的东西,

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

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

希望有帮助。

于 2019-06-23T10:35:38.217 回答