I have a customer that gets a error every time the EventJobCUD-batch (Change Based Events) runs. They got the following error:
After some reseach I found out that when 2 fields are changed at the same time, you go several times through the listChangedFieldsEnumerator (location ClassesEventProcessorCUDprocessUpdate)
1 2 3 4 5 6 7 8 9 | while (listChangedFieldsEnumerator.moveNext()) { // In this simple case we use the new and the original changed field value as // recorded at event detection time: [thisFieldId, changedFieldValue, origChangedFieldValue] = listChangedFieldsEnumerator.current(); if (rule.AlertFieldId == thisFieldId) break; } |
The code underneed simulates the same situation in a small job:
1 2 3 4 5 6 7 8 9 | static void Job5(Args _args) { anytype any; ; any = ABC::A; // next line will throw a error any = BatchStatus::Canceled; } |
And here we get the basic same error “Error executing code: Wrong argument types in variable assignment.”
I modified the code so the anytype is assigned only when the field is correct:
1 2 3 4 5 6 7 8 9 10 11 12 | while (listChangedFieldsEnumerator.moveNext()) { // In this simple case we use the new and the original changed field value as // recorded at event detection time: thisFieldId = conpeek(listChangedFieldsEnumerator.current(), 1); if (rule.AlertFieldId == thisFieldId) { [thisFieldId, changedFieldValue, origChangedFieldValue] = listChangedFieldsEnumerator.current(); break; } } |