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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 14.05.2014, 20:43   #1  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5788 (200) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Приложение AX 2012 R2 CU7 (6.2.1000.4051), интересно, при каком параде планет здесь должен будет отработать бразильский функционал?..
\Data Dictionary\Tables\InventTransferTable\Methods\Update
X++:
// <GEERU>
public void update()
{
    #ISOCountryRegionCodes
    if (SysCountryRegionCode::isLegalEntityInCountryRegion([#isoRU]))
    {
        ttsbegin;
        this.setInventProfileId_RU();
        this.setInventProfileIdTo_RU();
        this.updateLinesInventProfile_RU();
        super();
        // <GBR>
        if (BrazilParameters::isEnabled())
        {
            this.SysExtensionSerializerMap::postUpdate();
        }
        // </GBR>
        ttscommit;
    }
    else
    {
        super();
    }
}
// </GEERU>
\Data Dictionary\Tables\BrazilParameters\Methods\isEnabled
X++:
public static boolean isEnabled()
{
    #ISOCountryRegionCodes
    return SysCountryRegionCode::isLegalEntityInCountryRegion([#isoBR]);
}
За это сообщение автора поблагодарили: kashperuk (5).
Старый 16.05.2014, 18:01   #2  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Цитата:
Сообщение от gl00mie Посмотреть сообщение
Приложение AX 2012 R2 CU7 (6.2.1000.4051), интересно, при каком параде планет здесь должен будет отработать бразильский функционал?..
\Data Dictionary\Tables\InventTransferTable\Methods\Update
X++:
// <GEERU>
public void update()
{
    #ISOCountryRegionCodes
    if (SysCountryRegionCode::isLegalEntityInCountryRegion([#isoRU]))
    {
        ttsbegin;
        this.setInventProfileId_RU();
        this.setInventProfileIdTo_RU();
        this.updateLinesInventProfile_RU();
        super();
        // <GBR>
        if (BrazilParameters::isEnabled())
        {
            this.SysExtensionSerializerMap::postUpdate();
        }
        // </GBR>
        ttscommit;
    }
    else
    {
        super();
    }
}
// </GEERU>
\Data Dictionary\Tables\BrazilParameters\Methods\isEnabled
X++:
public static boolean isEnabled()
{
    #ISOCountryRegionCodes
    return SysCountryRegionCode::isLegalEntityInCountryRegion([#isoBR]);
}

В Бразилию сообщил, и уже сегодня пофиксили.
Старый 10.06.2014, 00:29   #3  
Cardagant is offline
Cardagant
Участник
 
317 / 54 (2) ++++
Регистрация: 11.10.2011
Доброго времени суток!

Наткнулся на мелкий баг, решил выложить, кто хочет, исправьте

Заглянул в DAX 2009, Axapta 3.0, код аналогичен. В 2012й похоже уже всё красиво.

Форма ProdParameters, метод numberSeqPostInit()

X++:
NumberSeqReference      numberSeqReferenceProd;
NumberSeqReference      numberSeqReferenceRoute;
;
numberSeqReferenceProd  = ProdParameters::numberSeqReference();
numberSeqReferenceRoute = RouteParameters::numberSeqReference(); // инициализуется класс обработчик номерной серии для маршрутов

numberSequenceReference_ds.object(fieldnum(NumberSequenceReference, AllowSameAs)).visible(
    numberSeqReferenceProd.sameAsActive() || numberSeqReferenceProd.sameAsActive()); // но здесь почему-то используется только экзменпляр Prod'а, а Route в проверке не участвует
ctrlLabelSameAs.visible(numberSeqReferenceProd.sameAsActive() || numberSeqReferenceProd.sameAsActive()); // и здесь тоже

Последний раз редактировалось Cardagant; 10.06.2014 в 00:45.
За это сообщение автора поблагодарили: S.Kuskov (1).
Старый 10.06.2014, 20:51   #4  
pedrozzz is offline
pedrozzz
Молодой, подающий надежды
Аватар для pedrozzz
MCBMSS
Лучший по профессии 2015
 
164 / 218 (8) ++++++
Регистрация: 18.02.2010
Адрес: Краснодар
2012 R2 CU7
В классе RunBaseQuery_RU переменная queryrun объявлена, как SysQueryRun, но в методах самого класса она инициализируется, как QueryRun
X++:
protected final void initQueryRun()
{
    ...
    query       = this.initNewQuery();
    queryrun    = new QueryRun(query);
}
X++:
public boolean unpack(container packedClass)
{
    ...
            if (packedQuery)
            {
                queryrun = new QueryRun(packedQuery);
            }
    ...
}
Если создать наследника этого класса, то из Ах он будет работать прекрасно, но стоит поставить его в пакет, как тот (пакет) будет валиться с ошибкой неправильного присваивания типа переменной. Видимо, внутри CIL эта ситуация обрабатывается иначе.
Чтобы все заработало, переменную инициализировать, как
X++:
queryrun = new SysQueryRun(...)
__________________
Кононов Пётр
За это сообщение автора поблагодарили: Ivanhoe (5), gl00mie (2), S.Kuskov (1).
Старый 15.06.2014, 19:57   #5  
SRF is offline
SRF
Участник
MCBMSS
Axapta Retail User
 
365 / 543 (19) +++++++
Регистрация: 08.08.2007
Записей в блоге: 1
AX 2012 CU7, форма SalesCopying, метод CustInvoiceTrans\upDateRemainderCache, некорректный расчет ранее возвращенного кол-ва для заказов отгруженных через функционал отложенного перехода права собственности, также ошибка есть в случае использования функционала проектов.

X++:
void upDateRemainderCache(CustInvoiceTrans _custInvoiceTrans)
{
    SalesQty qty;
    PdsCWInventQty cwQty;
    SalesLine       localSalesLine;
    // <GEERU>
    GoodsInRouteInventTransIdDelivery_RU inventTransIdDelivery_RU;
    // </GEERU>

    if (!creditNoteReturnRemainder.exists(_custInvoiceTrans.RecId))
    {
        localSalesLine = SalesLine::find(_custInvoiceTrans.InventTransId);
        [qty, cwQty] = SalesLine::pdsRemainReturnLotQtyAllCreditNote(_custInvoiceTrans.InventTransId, localSalesLine.ProjId);
        // <GEERU>
        if (SysCountryRegionCode::isLegalEntityInCountryRegion([#isoRU]))
        {
            inventTransIdDelivery_RU = _custInvoiceTrans.custInvoiceTrans_RU().InventTransIdDelivery_RU;
        }
        if (inventTransIdDelivery_RU)
        {
            qty = UnitOfMeasureConverter::convert(-SalesLine::qtyDeliveryToCreditNote_RU(inventTransIdDelivery_RU),
                                                  UnitOfMeasure::unitOfMeasureIdBySymbol(_custInvoiceTrans.inventTable().inventUnitId()),
                                                  UnitOfMeasure::unitOfMeasureIdBySymbol(_custInvoiceTrans.SalesUnit),
                                                  NoYes::Yes,
                                                  InventTable::itemProduct(_custInvoiceTrans.ItemId));

            qty = localSalesLine.type().invoicedInTotal() - qty;
        }
        // </GEERU>
        creditNoteReturnRemainder.insert(_custInvoiceTrans.RecId, qty);
        cwCreditNoteReturnRemainder.insert(_custInvoiceTrans.RecId, cwQty);
    }
}
Вместо строки
X++:
 localSalesLine = SalesLine::find(_custInvoiceTrans.InventTransId);
нужно вставить
X++:
 localSalesLine = SalesLine::findInventTransId(_custInvoiceTrans.InventTransId);
Если провалится в метод SalesLine :: pdsRemainReturnLotQtyAllCreditNote, то там тоже можно увидеть аналогичную ошибку
X++:
public server static container pdsRemainReturnLotQtyAllCreditNote(
    InventTransId   _inventTransId,
    ProjId _projId = SalesLine::find(_inventTransId).ProjId)
__________________
Sergey Nefedov
За это сообщение автора поблагодарили: gl00mie (3), S.Kuskov (1).
Старый 23.02.2015, 21:12   #6  
b_nosoff is offline
b_nosoff
Читатель
Аватар для b_nosoff
MCP
MCBMSS
 
197 / 143 (5) +++++
Регистрация: 01.12.2004
Адрес: Msk
Записей в блоге: 13
Thumbs up Тестировали норм
\Data Dictionary\Maps\CustVendTrans\exchRateCurToMst

X++:
public ExchRate exchRateCurToMst()
{
    ExchRate combinedRate;
    CustTrans custTrans;
    VendTrans vendTrans;

    switch (this.TableId)
    {
        case tableNum(CustTrans):
            combinedRate = custTrans.exchRateCurToMst();
            break;
        case tableNum(VendTrans):
            combinedRate = vendTrans.exchRateCurToMst();
            break;
        default:
            Debug::assert(false);
    }

    return combinedRate;
}
Хорошо, хоть, вроде, нигде не использовали.
__________________
Axapta non erubescit

Последний раз редактировалось b_nosoff; 23.02.2015 в 21:16.
Старый 10.03.2015, 17:30   #7  
pedrozzz is offline
pedrozzz
Молодой, подающий надежды
Аватар для pedrozzz
MCBMSS
Лучший по профессии 2015
 
164 / 218 (8) ++++++
Регистрация: 18.02.2010
Адрес: Краснодар
2012 R3 (думаю в прошлых версиях аналогично)
Если делать лукап по временной таблице на основе постоянной и при этом не вставить никаких записей во времянку, что-то типа
X++:
    InventTable                     inventTableTmp;
    SysTableLookup                  sysTableLookup  = SysTableLookup::newParameters(tableNum(InventTable), _ctrl);

    inventTableTmp.setTmp()
/*
заполняем времянку по какому-то алгоритму, но записей не нашли и ничего не вставили
*/
    sysTableLookup.addLookupfield(fieldNum(InventTable, ItemId));
    sysTableLookup.parmTmpBuffer(inventTableTmp);
    sysTableLookup.performFormLookup();
то вместо ожидаемого пустого лукапа увидим в гриде все записи постоянной таблицы
Берем напильник, чиним класс SysTableLookupBase. Заводим глобальную переменную boolean useTmpBuffer
X++:
Common parmTmpBuffer(Common _buffer = tmpBuffer)
{
    tmpBuffer = _buffer;

    //-->
    if (! prmisDefault(_buffer))
    {
        useTmpBuffer = true;
    }
    //<--

    return tmpBuffer;
}
protected FormRun formRun()
{
    //...строка 55
    //-->
    //if(useLookupValue && !tmpBuffer)
    if(useLookupValue && ! tmpBuffer && ! useTmpBuffer)
    //<--
    {
    }
    //...строка 117
    //-->
    //if (tmpBuffer)
    if (tmpBuffer || useTmpBuffer)
    //<--
}
__________________
Кононов Пётр
За это сообщение автора поблагодарили: gl00mie (5), Kabardian (4).
Теги
axapta, cil, d365fo, guid, rasset, uuid, uuidv7, баг

 


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

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

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