Показать сообщение отдельно
Старый 02.12.2015, 09:27   #1  
axm2013
Гость
 
n/a
Ошибка в CustVendReversePosting
Dynamics Ax 2012 R3
Наткнулся на ошибку в CustVendReversePosting. Так как сообщать в MS не умею + лень то поделюсь информацией тут, вдруг кто столкнется тоже:

в классе есть чудо переменные
X++:
RTax25DebtDebitReverse          debitReverse;
RTax25DebtDebitReverse          creditReverse;
инициализируются переменные в методе updateNow
X++:
// <GEERU><GEECZ>
    if (countryRegion_RUCZ)
    {
        debitReverse   = RTax25DebtAmortisation::constructReverse(RTax25DebtType::Debit);
        creditReverse  = RTax25DebtAmortisation::constructReverse(RTax25DebtType::Credit);
    }
    // </GEECZ></GEERU>
и если копнуть конструктор то получим
X++:
public static RTax25DebtAmortisation constructReverse(RTax25DebtType _debtType)
{
    switch(_debtType)
    {
        case RTax25DebtType::Debit  :
            return new RTax25DebtDebitReverse();
        case RTax25DebtType::Credit :
            return new RTax25DebtCreditReverse();
        default :
            throw error(Error::wrongUseOfFunction(funcName()));
    }
    return null;
}
Компиляции проходят по понятным причинам замечательно, и самое интересное что в не CIL режиме работает даже. А вот CIL режим заставляет систему содрогнутцо и выдать ошибку присвоения (creditReverse присвоили RTax25DebtCreditReverse а она RTax25DebtDebitReverse).

Вопрос нафига козе баян использовать переменные с явным объявлением наследника когда можно было бы объявить RTax25DebtAmortisation и жить спокойно оставлю на обсуждение общественности.

Последний раз редактировалось axm2013; 02.12.2015 в 09:29.