Skip to Content
Former Member
Mar 28, 2007 at 04:38 PM

Item Validation Event Fires Twice (sometimes)


We've been experiencing some odd behavior with a few of our add-ons. Basically, for documents (Sales orders, quotes, purchase orders) the et_VALIDATE event is firing twice (once for inner event true and once for false) on the "Item" column in a matrix in some cases. The BeforeAction is being taken into account, so that's not the issue. Regardless of whether B1 should be doing that or not, I could handle it ok if it were consistent. It appears that in sales orders for example, the et_VALIDATE fires twice when the UDF form for the sales order is NOT open. When the UDF form is showing, the event fires only once (inner event = false). Additionally, if we use the choosefrom list to populate the item column, the validate event doesn't even occur at all. Quotes work in a similar way on some systems and purchasing seems to be ok for the most part.

Has anyone seen this before? I've validated this behavior on several machines, several databases and even used a sample add-on with nothing more than message boxes for the et_VALIDATE events. Here's the sample code:

Case "139"
                    Select Case pVal.BeforeAction
                        Case False
                            Select Case pVal.EventType
                                Case SAPbouiCOM.BoEventTypes.et_FORM_LOAD
                                    oOrderForm = SBO_Application.Forms.GetFormByTypeAndCount(pVal.FormTypeEx, pVal.FormTypeCount)
                                Case SAPbouiCOM.BoEventTypes.et_VALIDATE
                                    Select Case pVal.ItemUID
                                        Case "38"
                                            Select Case pVal.ColUID
                                                Case "1"
                                                    objMatrix = oOrderForm.Items.Item("38").Specific
                                                    ItemID = objMatrix.Columns.Item("1").Cells.Item(pVal.Row).Specific

                                                    If pVal.ColUID = "1" Then
                                                        SBO_Application.MessageBox("Sales: Inner = " & pVal.InnerEvent & " : " & ItemID.Value)
                                                    End If
                                            End Select
                                    End Select
                            End Select
                        Case True
                    End Select