Acumatica 如何关注引发异常的字段?

Acumatica 如何关注引发异常的字段?,acumatica,acumatica-kb,Acumatica,Acumatica Kb,我有一些用于输入字段(EmployeeID)的验证代码,当验证失败时,即取消即将发生的事件并引发异常: protected virtual void _(Events.FieldUpdating<EMPTimeEntries,EMPTimeEntries.employeeID> e) { DateTime timeNow = PX.Common.PXTimeZoneInfo.Now; timeNow = timeNow.AddMinu

我有一些用于输入字段(EmployeeID)的验证代码,当验证失败时,即取消即将发生的事件并引发异常:

    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);
        }
    }
protected virtual void(Events.fielde)
{
DateTime timeNow=PX.Common.PXTimeZoneInfo.Now;
timeNow=timeNow.AddMinutes(-5).AddHours(4);
EMPTimeEntries alreadyscanding=从中选择。
哪里
查看。选择(这个,例如NewValue,timeNow);
if((alreadyscanding==null))
{
}
其他的
{
e、 取消=真;
//Acuminator禁用一次PX1050硬编码stringInLocalization方法[对正]
抛出新的PXSetPropertyException(“员工已经在5分钟内扫描了!”,PXErrorLevel.Error);
}
}
问题是,用户输入会继续进行到下一个字段,我希望中断此行为,并将重点放在验证失败的字段上。

如上图所示,employeeID验证失败,引发异常和消息,但重点是员工姓名。如果击键很重要,我输入54并点击tab,我希望tab不会发生


非常感谢您的帮助。

我能想到的唯一方法是从JavaScript捕获显示的错误消息,并将焦点设置为消息的目标。这里真正的问题是,即使您将焦点设置回原处,错误图标和消息也将不可见,用户也不会理解焦点返回的原因。这是不可能的一个问题,因为屏幕应该是自主的。我在“hopes”中添加了一个异常,它将更容易保持对该控件的关注。通过使其他两个字段无法接收焦点并简单地删除行而不是抛出异常,我解决了我的问题。更多背景:这将是一个全自动屏幕,员工进来扫描一张卡片,屏幕记录他们的时间输入(进入/离开工作现场)。似乎Acumatica并不精通很多这样的自动操作?我能想到的唯一方法是从JavaScript捕获显示的错误消息,并将焦点设置为消息的目标。这里真正的问题是,即使您将焦点设置回原来的位置,错误图标和消息也不会显示,用户也不会理解错误的原因焦点又回来了。这不是问题,因为屏幕应该是自动的。我在“hopes”中添加了一个异常,它将更容易保持对该控件的关注。通过使其他两个字段无法接收焦点并简单地删除行而不是抛出异常,我解决了我的问题。更多背景:这将是一个全自动屏幕,员工进来扫描一张卡片,屏幕记录他们的时间输入(进入/离开工作现场)。好像Acumatica不精通很多这样的自动操作?