30.08.2010, 14:16 | #1 |
Участник
|
Вопросы по ReleaseUpdate DAX 2009
Всем доброго времени суток!
Занимаемся переходом с 3 на 2009 и возникли некоторые вопросы. Кому не сложно и сталкивался с такой проблемой помогите советом, ответом, комментарием. В поиске подобного не попадалось. Используемый софт: Windows Server 2008 R2 Enterprise Edition (64-bit) NT 6.1 <X64> (Build 7600) Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (X64) Enterprise Edition (64-bit) DAX 2009 SP1 RU5 Ax32Serv.exe (5.0.1500.2985) Ax32.exe (5.0.1500.2985) (axsyp.version 5.0.1500.2985) (axgls.version 5.0.1001.176) (axglp.version 5.0.1500.2985) 1) Метод ReleaseUpdateDB41_Invent.updateInventItemOrderSetup() содержит следующий кусок кода: X++: public void updateInventItemOrderSetup() { InventTableModule inventTableModule; InventItemPurchSetup inventItemPurchSetup; InventItemInventSetup inventItemInventSetup; InventItemSalesSetup inventItemSalesSetup; InventDim inventDim; InventDim inventDimBlank; InventDim newInventDIm; InventDimId inventDimIdBlank = InventDim::inventDimIdBlank(); ; // first insert the missing InventDimIds while select del_InventLocationId from inventTableModule notexists join inventDim where !inventDim.ConfigId && !inventDim.InventSizeId && !inventDim.InventColorId && !inventDim.InventSiteId && inventDim.InventLocationId == inventTableModule.del_InventLocationId && !inventDim.InventBatchId && !inventDim.wmsLocationId && !inventDim.wmsPalletId && /* <SYS> !inventDim.InventSerialId </SYS> */ // <GEEU> !inventDim.InventSerialId && !inventDim.InventGtdId_RU // </GEEU> { newInventDIm.InventLocationId = inventTableModule.del_InventLocationId; InventDim::findOrCreate(newInventDIm); } // copy invent items insert_recordset inventItemInventSetup (ItemId, MultipleQty, StandardQty, LowestQty, HighestQty, Stopped, MandatoryInventLocation, LeadTime, CalendarDays, InventDimId, InventDimIdDefault) select ItemId, del_Quantity, del_StandardQty, del_LowestQty, del_HighestQty, del_Blocked, del_MandatoryInventLocation, del_DeliveryTime, del_CalendarDays from inventTableModule where (inventTableModule.ModuleType == ModuleInventPurchSales::Invent) join InventDimId from inventDimBlank where inventDimBlank.InventDimId == inventDimIdBlank join InventDimId from inventDim where !inventDim.ConfigId && !inventDim.InventSizeId && !inventDim.InventColorId && !inventDim.InventSiteId && inventDim.InventLocationId == inventTableModule.del_InventLocationId && !inventDim.InventBatchId && !inventDim.wmsLocationId && !inventDim.wmsPalletId && /* <SYS> !inventDim.InventSerialId </SYS> */ // <GEEU> !inventDim.InventSerialId && !inventDim.InventGtdId_RU // </GEEU> notexists join inventItemInventSetup where inventItemInventSetup.InventDimId == inventDimIdBlank && inventItemInventSetup.ItemId == inventTableModule.ItemId; ... purch sales X++: // copy invent items insert_recordset inventItemInventSetup (ItemId, MultipleQty, StandardQty, LowestQty, HighestQty, Stopped, MandatoryInventLocation, LeadTime, CalendarDays, /* ?????????????? InventDimId, InventDimIdDefault, */ InventDimIdDefault, InventDimId) select ItemId, del_Quantity, del_StandardQty, del_LowestQty, del_HighestQty, del_Blocked, del_MandatoryInventLocation, del_DeliveryTime, del_CalendarDays from inventTableModule where (inventTableModule.ModuleType == ModuleInventPurchSales::Invent) join InventDimId from inventDimBlank where inventDimBlank.InventDimId == inventDimIdBlank join InventDimId from inventDim where !inventDim.ConfigId && !inventDim.InventSizeId && !inventDim.InventColorId && !inventDim.InventSiteId && inventDim.InventLocationId == inventTableModule.del_InventLocationId && !inventDim.InventBatchId && !inventDim.wmsLocationId && !inventDim.wmsPalletId && /* <SYS> !inventDim.InventSerialId </SYS> */ // <GEEU> !inventDim.InventSerialId && !inventDim.InventGtdId_RU // </GEEU> notexists join inventItemInventSetup /* ??????????????? where inventItemInventSetup.InventDimId == inventDimIdBlank && inventItemInventSetup.ItemId == inventTableModule.ItemId; */ where inventItemInventSetup.ItemId == inventTableModule.ItemId && (inventItemInventSetup.InventDimId == inventDimIdBlank || inventItemInventSetup.InventDimId == inventDim.inventDimId); 2) Множество обновлений БД использует методы update_recordset, например метод ReleaseUpdateDB41_Invent.updateInventJournalTrans(): X++: void updateInventJournalTrans() { InventJournalTrans inventJournalTrans; InventJournalTable inventJournalTable; InventTrans inventTrans; NumberSeq numberSeq; InventTrans receiptInventTrans; InventTrans issueInventTrans; ; ttsbegin; inventJournalTrans.skipDataMethods(true); update_recordset inventJournalTrans setting toInventTransId = inventJournalTrans.InventTransId where inventJournalTrans.ToInventTransId == '' && inventJournalTrans.JournalType == InventJournalType::Transfer; ttscommit; ... X++: //inventJournalTrans.skipDataMethods(true); //update_recordset inventJournalTrans // setting toInventTransId = inventJournalTrans.InventTransId // where inventJournalTrans.ToInventTransId == '' // && inventJournalTrans.JournalType == InventJournalType::Transfer; while select forupdate inventJournalTrans where inventJournalTrans.ToInventTransId == '' && inventJournalTrans.JournalType == InventJournalType::Transfer { inventJournalTrans.toInventTransId = inventJournalTrans.InventTransId; inventJournalTrans.doUpdate(); } Таких мест где не работает skipDataMethods много... например в чудном методе при пересчетах InventCostClosing.run()... в вызове createInventCostList() есть чудо строка X++: // Recompute BOM levels from scratch
BOMLevelCalc::construct().run(); X++: ttsbegin; inventTable.skipDataMethods(true); // Set all BOM levels to zero update_recordset inventTable setting BOMLevel = 0 where inventTable.bomLevel != 0; ... 3) На последок полностью закоментировали ReleaseUpdateDB41_Administration.renumberEPParametersKey(), так как корпоротивного портала у нас нет и таблицей EPPARAMETERS: X++: sqlStatement = strfmt(@"UPDATE EPPARAMETERS SET KEY_ = (KEY_ + %1) WHERE DATAAREAID=%2",tickCount,ext); Скажите, это нормально? В последствии жизни не мешает? Заранее спасибо. |
|
Теги |
ax2009, ax3.0, skipdatamethods, upgrade, переход |
|
|