29.03.2016, 13:14 | #1 |
Участник
|
AIF vendTable.validateField() бага или фича ?
Привет.
Обнаружил в \Data Dictionary\Tables\VendTable\Methods\validateField странный код X++: boolean validateField(fieldId p1) { ... boolean ret; ; //AIFFault Mesgs switch (p1) { case fieldnum(VendTable, InvoiceAccount): if (this.InvoiceAccount && !VendTable::find(this.InvoiceAccount)) { ret = AifFault::checkFailedLogFault(strfmt("@SYS120870", fieldid2name(tablenum(VendTable), p1), this.InvoiceAccount), #InvalidInvoiceAccount); } break; ... } //AIF Fault Mesgs end here ... ret = super(p1); if (ret) { switch (p1) { ... case fieldnum(VendTable, CreditMax) : if (this.CreditMax < 0) { ret = checkFailed("@SYS69970"); } ... } } return ret; 1. ret в начале метода никак не инциализируется, т.е. имеет значение false 2. Затем идет куча проверок для AIF с присвоением в ret значения false в случае ошибки. 3. Затем идет вызов super() c перетиранием значения ret (!) т.е. игнорируются найденные на шаге 2 некорректности в заполнении полей (хотя какие они найденные, когда ret инициализровался как false). 4. Затем обычные проверки значений полей. Вопрос, что это такое ? Это досадная опечатка в коде, приведшая к тому что не работает целый кусок по валидации значений (только пишет сообщения в инфолог и в AIF) или так и было задумано (валидация в принципе на super() должна была отработать, но она только в инфолог сообщения шлет, а в AIF - нет. т.е. возможно этот код просто досылал интересующие автора сообщения в AIF) ? Последний раз редактировалось Logger; 29.03.2016 в 13:31. |
|
|
За это сообщение автора поблагодарили: S.Kuskov (2). |
Теги |
aif, validatefield, vendtable |
|
|