|
|
#1 |
|
Участник
|
Привет.
Обнаружил в \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). | |
|
|
#2 |
|
Британский учённый
|
Судя по коду, значение ret перед super неважно. Т.е. в принципе присваивание ret до super можно убрать, что бы не вводить в заблуждение. Может копипаст такой.
__________________
Людям физического труда для восстановления своих сил нужен 7-8 часовой ночной сон. Людям умственного труда нужно спать часов 9-10. Ну а программистов будить нельзя вообще. |
|
|
|
| За это сообщение автора поблагодарили: Logger (1). | |
|
|
#3 |
|
Участник
|
Думаю, затея разработчиков AIF была примерно такая:
|
|
|
| Теги |
| aif, validatefield, vendtable |
|
|
| Опции темы | Поиск в этой теме |
| Опции просмотра | |
|