Показать сообщение отдельно
Старый 29.03.2016, 13:14   #1  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,972 / 3268 (116) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
? 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;
код процитирован для ax2009, но в 2012-й аналогично.

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).