![]() |
#19 |
Участник
|
Если уж начали перечислять баги закрытия, то добавлю свои 5 копеек.
В методах \Classes\ClassFactory\inventLastClosingDate \Classes\ClassFactory\inventLastClosingDateSecCur_RU некорректно сделано кеширование даты последнего закрытия склада. Оно не учитывает тот факт, что закрытие склада выполняется в конкретной компании. Поэтому если мы поработали в одной компании, в которой период закрыт, а потом переключаемся в другую, в которой период не закрыт, и пытаемся в этом периоде разносить что-то - то получаем ошибку. Лечится например так : X++: TransDate inventLastClosingDate(boolean reSelect = false) { // GRD_FixLastClosingDateCalc_pkoz // pkoz 16.01.2011 --> // проект GRD_FixLastClosingDateCalc_pkoz сделан для того чтбы исправить кеширование даты последнего закрытия склада // это кеширование не учитывало компанию, так что если, например, у нас в одной компании // склад закрыт по одоной число, а в другой по другое, то аксапта могла для обоих компаний считать дату одинаковой - // в случае если сперва метод вызвали в одной компании, а потом в другой #define.GRD_date("_date") #define.GRD_integer("_integer") sysglobalCache GRD_globalCache = this.globalCache(); // получаем через метод так как может оказаться неинициализированным // GRD_FixLastClosingDateCalc_pkoz // pkoz 16.01.2011 <-- ; // GRD_FixLastClosingDateCalc_pkoz // pkoz 16.01.2011 --> inventLastClosingDate = GRD_globalCache.get(funcname() + #GRD_date, curExt(), dateNull()); inventClosingTtsVersion = GRD_globalCache.get(funcname() + #GRD_integer, curExt(), 0); // GRD_FixLastClosingDateCalc_pkoz // pkoz 16.01.2011 <-- if (inventClosingTtsVersion != appl.ttsVersion() || reSelect || (!inventClosingTtsVersion && !inventLastClosingDate)) { // pkoz 02.01.2009 --> // слишком много коррекций накопилось - так будет быстрее // inventLastClosingDate = (select maxOf(transDate) from inventClosing inventLastClosingDate = (select forceliterals maxOf(transDate) from inventClosing // pkoz 02.01.2009 <-- index hint TypeActiveIdx where inventClosing.active == NoYes::Yes && // <GEEU> inventClosing.InventTransCurrency_RU == InventTransCurrency_RU::PrimaryCur && // </GEEU> inventClosing.adjustmentType == InventAdjustmentType::Closing).transDate; inventClosingTtsVersion = appl.ttsVersion(); // GRD_FixLastClosingDateCalc_pkoz // pkoz 16.01.2011 --> GRD_globalCache.set(funcname() + #GRD_date, curExt(), inventLastClosingDate); GRD_globalCache.set(funcname() + #GRD_integer, curExt(), inventClosingTtsVersion); // GRD_FixLastClosingDateCalc_pkoz // pkoz 16.01.2011 <-- } return inventLastClosingDate; } |
|
Теги |
баг, закрытие склада, ошибка, ошибка при закрытии склада, себестоимость |
|
|