|
![]() |
#1 |
Участник
|
Приложение 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> X++: public static boolean isEnabled() { #ISOCountryRegionCodes return SysCountryRegionCode::isLegalEntityInCountryRegion([#isoBR]); } |
|
|
За это сообщение автора поблагодарили: kashperuk (5). |
![]() |
#2 |
Участник
|
Цитата:
Сообщение от 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> X++: public static boolean isEnabled() { #ISOCountryRegionCodes return SysCountryRegionCode::isLegalEntityInCountryRegion([#isoBR]); } В Бразилию сообщил, и уже сегодня пофиксили. |
|
![]() |
#3 |
Участник
|
Доброго времени суток!
Наткнулся на мелкий баг, решил выложить, кто хочет, исправьте ![]() Заглянул в 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). |
![]() |
#4 |
Молодой, подающий надежды
|
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); } ... } Чтобы все заработало, переменную инициализировать, как X++: queryrun = new SysQueryRun(...) |
|
|
За это сообщение автора поблагодарили: Ivanhoe (5), gl00mie (2), S.Kuskov (1). |
![]() |
#5 |
Участник
|
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); X++: public server static container pdsRemainReturnLotQtyAllCreditNote( InventTransId _inventTransId, ProjId _projId = SalesLine::find(_inventTransId).ProjId)
__________________
Sergey Nefedov |
|
|
За это сообщение автора поблагодарили: gl00mie (3), S.Kuskov (1). |
![]() |
#6 |
Читатель
|
![]()
\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; } Последний раз редактировалось b_nosoff; 23.02.2015 в 21:16. |
|
![]() |
#7 |
Молодой, подающий надежды
|
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). |