Проверьте, был ли параметр создан внутри параметров данных USD - PullRequest
0 голосов
/ 21 июня 2019

Я пытаюсь построить логику, в которой я выполняю вызов действия с помощью действия uii CreateEntity . Вызов действия создает запись в пользовательском объекте CRM. Теперь вызов действия запускается несколько раз, и это потому, что он присоединен к событию BrowserDocumentComplete, которое запускается несколько раз.

Теперь, поскольку этот вызов действия запускается несколько раз, в CRM создается несколько записей. Я хочу остановить его после того, как он создаст первую запись, и что произойдет, если он создаст первую запись, параметр будет создан внутри USD DataParameters.

Итак, я хочу проверить через Scriptlet, что если параметр позволяет назвать его RecordCreated был создан внутри USD, тогда вызов действия прекратится.

как то так if (RecordCreated Exists) then stop else run

Ответы [ 2 ]

0 голосов
/ 24 июня 2019

Я считаю, что BrowserDocumentComplete срабатывает каждый раз, когда завершается загрузка страницы или фрейма. Вместо этого используйте событие, которое обычно запускается только один раз, например DataReady или PageReady. Это предполагает, что DataReady и PageReady доступны в вашей версии USD.

DataReady и PageReady могут по-прежнему срабатывать несколько раз во время сценариев перезагрузки / обновления, поэтому у вас все еще может быть та же проблема. Чтобы смягчить это, проверьте наличие параметра данных, который создается при создании записи. В проверке условий разрешите замену параметра замены пустой строкой, когда он не существует, с помощью модификатора «+». Если ваш Action Action называется «Create Custom Entity Record», то выражение вашего условия будет выглядеть примерно так:

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

Теперь, даже если действие вызывается несколько раз, оно должно срабатывать только один раз и впоследствии не запускаться. Последующие попытки должны быть затенены желтым в отладчике, указывая «ConditionFailed».

0 голосов
/ 23 июня 2019

В идеале событие BrowserDocumentComplete не будет вызываться несколько раз в долларах США.Является ли это событие PageLoadComplete обычно запускается дважды.Это то, что вам нужно проверить один раз, прежде чем подумать о другом решении.

В связи с вашей проблемой, если завершенный документ браузера не работает должным образом, в вашем случае, другой вариант - проверить, является ли записьсоздается перед выполнением вызова действия во второй раз.Для этого то, что вы можете сделать, это то, что всякий раз, когда выполняется действие, вы получите объект $ Result в параметрах данных USD.Найдите объект и получите указатель создаваемой записи CRM.Вы должны быть в состоянии получить доступ к чему-то вроде этого:

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

В том же самом вызове действия проверьте, выводится ли приведенный выше код, и посмотрите, является ли он пустым из GUID.Если он не пустой, это означает, что ваш вызов действия был выполнен ранее, в противном случае выполните вызов действия для создания записи.

Надеюсь, что это поможет.

...