У меня есть некоторый код проверки для ввода поля (EmployeeID), и когда он не проходит проверку, я e.Отменить предстоящие события и выдать исключение:
protected virtual void _(Events.FieldUpdating<EMPTimeEntries,EMPTimeEntries.employeeID> e)
{
DateTime timeNow = PX.Common.PXTimeZoneInfo.Now;
timeNow = timeNow.AddMinutes(-5).AddHours(4);
EMPTimeEntries alreadyScanned = SelectFrom<EMPTimeEntries>.
Where<EMPTimeEntries.employeeID.IsEqual<@P.AsString>.
And<EMPTimeEntries.clockTime.IsGreater<@P.AsDateTime>>>.
View.Select(this, e.NewValue, timeNow);
if ((alreadyScanned == null))
{
}
else
{
e.Cancel = true;
// Acuminator disable once PX1050 HardcodedStringInLocalizationMethod [Justification]
throw new PXSetPropertyException<EMPTimeEntries.employeeID>("The Employee has scanned within 5 minutes already!", PXErrorLevel.Error);
}
}
Проблема заключается в том, что пользовательский ввод Переходя к следующему полю, я буду прерывать это поведение и продолжать фокусироваться на поле, которое не прошло проверку. 
Как вы видите на картинке выше, employeeID не прошел проверку исключения, и выдается сообщение, но основное внимание уделяется имени сотрудника. ЕСЛИ нажатия клавиш имеют значение 54, и я нажимаю клавишу Tab, я sh, чтобы вкладка не появлялась.
Любая помощь очень ценится.