AXForum  
Вернуться   AXForum > Прочие обсуждения > Курилка
NAV
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 23.01.2012, 12:44   #1  
TasmanianDevil is offline
TasmanianDevil
Мрачный тип
Аватар для TasmanianDevil
Злыдни
 
885 / 389 (14) ++++++
Регистрация: 24.01.2005
Адрес: Томск
Bug ! Жирный bug ! Кому свежую тушку жирного bug'а ?
DAX2009, ядро 5.0.1000.52

Объявляем EDT на основе int64 с любым ArraySize, бОльшим 1, и именем MyType.
Создаем элементарный класс
X++:
class TestClass
{
    MyType x;
}
делаем в нем классический parm-метод
X++:
MyType parmX(MyType _x = x)
{
    if(x != _x) x = _x;

    return x;
}
пытаемся скомпилировать и получаем ошибку "Операнд несовместим с типом функции." на операторе возврата.
__________________
Мы летаем, кружимся, нагоняем ужасы ...
За это сообщение автора поблагодарили: Logger (3), lev (5), S.Kuskov (5).
Старый 13.06.2012, 12:18   #2  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Цитата:
Сообщение от TasmanianDevil Посмотреть сообщение
DAX2009, ядро 5.0.1000.52

Объявляем EDT на основе int64 с любым ArraySize, бОльшим 1, и именем MyType.
Создаем элементарный класс
X++:
class TestClass
{
    MyType x;
}
делаем в нем классический parm-метод
X++:
MyType parmX(MyType _x = x)
{
    if(x != _x) x = _x;

    return x;
}
пытаемся скомпилировать и получаем ошибку "Операнд несовместим с типом функции." на операторе возврата.

Попробовал на последней версии, у меня компилируется без проблем.
Мой EDT называется правда Type1, но я не думаю, что есть разница.
Старый 13.06.2012, 17:44   #3  
Napalm is offline
Napalm
Участник
 
80 / 88 (3) ++++
Регистрация: 23.05.2012
Верхнюю половину метода написал один человек; нижнюю - другой, не глядя на верхнюю, и - внимание - ловко "оптимизировал" код использовав список полей. BestPractice ошибок нет - все отлично. Это из стандартного кода AX 2012.

CustWriteOff\checkForDuplicateVouchers

X++:
protected boolean checkForDuplicateVouchers(Voucher _voucher, TransDate _transDate, recId _existingCustTransRecId)
{
    boolean found;
    VendTrans vendTrans;

    // check for duplicate customer transaction
    found = (select firstonly RecId from custTrans
                where custTrans.Voucher == _voucher
                   && custTrans.TransDate == _transDate
                   && custTrans.RecId != _existingCustTransRecId).RecId != 0;

    if (found == true)
    {
        return true;
    }

    // check for duplicate vendor transactions
    select count(RecId) from vendTrans
        where vendTrans.Voucher == _voucher
           && vendTrans.TransDate == _transDate;

    found = vendTrans.ReasonRefRecId == 0 ? false : true;

    return found;
}
За это сообщение автора поблагодарили: kashperuk (5).
Старый 14.06.2012, 16:43   #4  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Цитата:
Сообщение от Napalm Посмотреть сообщение
CustWriteOff\checkForDuplicateVouchers
Napalm, а расскажите подробнее про эту находку.
Где и как столкнулись? Я посмотрел, и этот код там существовал в таком виде с декабря 2008 года.

Раз до этого не заметили (а я проверил - не заметили), то скорее всего никто из кастомеров с этим не сталкивался
Старый 14.06.2012, 19:04   #5  
Napalm is offline
Napalm
Участник
 
80 / 88 (3) ++++
Регистрация: 23.05.2012
Цитата:
Сообщение от kashperuk Посмотреть сообщение
Napalm, а расскажите подробнее про эту находку.
Где и как столкнулись? Я посмотрел, и этот код там существовал в таком виде с декабря 2008 года.

Раз до этого не заметили (а я проверил - не заметили), то скорее всего никто из кастомеров с этим не сталкивался
Копировал бизнес логику для списания НДС. Не думаю, что у кого-то будут проблемы из-за этого.

Скорее всего проблемы будут если этот код "починить". Какой смысл искать дубликаты в VendTrans по полю Voucher, используя значение Voucher из CustTrans?

Возможно будут ложные срабатывания - зависит от настройки номерных серий.
Старый 08.02.2013, 02:23   #6  
DTD is offline
DTD
Участник
 
183 / 18 (1) ++
Регистрация: 09.08.2005
AX2012
\Classes\CustAutoCreate\setCustTable
X++:
protected void setCustTable()
{
    NumberSeq       num;
    ;

    custTable.clear();
    custTable.initValue();
    custTable.data(CustTable::find(templateCustAccount));

    if (custAccount)
    {
        custTable.AccountNum = custAccount;
    }
    else
    {
        custTable.AccountNum = NumberSeq::newGetNum(CustParameters::numRefCustAccount()).num();
    }

    if (CustTable::exist(custTable.AccountNum))
    {
        if (num)
        {
            num.abort();
            checkFailed("@SYS59641");
        }
        checkFailed("@SYS59639", custTable.AccountNum);
        throw error("@SYS23020");
    }

    if (num)
    {
        num.used();
    }
}
__________________
_databaseTransDelete ... bl@$ !
За это сообщение автора поблагодарили: macklakov (1).
Теги
axapta, cil, d365fo, guid, rasset, uuid, uuidv7, баг

 


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 14:15.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.