Попробуйте добавить поле контроля валидации.Итак, добавьте поле с именем «runValidation».Он рассчитывается для отображения, так как он требуется только для обработки событий формы пользовательского интерфейса.Его формула проста:
@ ThisValue или runValidation
В событии QueryRecalc или всякий раз, когда вы хотите установить значение для ItemProductFamilyType, установите его в «1».
Sub Queryrecalc(Source As Notesuidocument, Continue As Variant)
On Error Goto errHandle
Dim doc As notesDocument
Set doc = source.Document
' go populate your fields like ItemProductFamilyType
doc.runValidation = "1"
Exit Sub
errHandle:
Messagebox Lsi_info(2) + " : " + Str(Err) + " - " + Error(Err) + ", at line " + Str(Erl)
Exit Sub
End Sub
Та же идея работает в формуле перевода ItemProductFamilyType
Field runValidation := "1";
@thisValue;
В формулу проверки для ItemNumber включите поле «runValidation», чтобы управлять, когда поле должно проверяться.
@if(runValidation="1";@if(@trim(@ThisValue)="";@Failure("Enter value");@Success);@Success)
Вытеперь можно безопасно вызывать метод Source.Refresh
без непреднамеренного запуска правил проверки, пока данные не будут готовы.