![]() |
#2 |
Участник
|
Сразу оговорюсь что у меня Ax3.0 SP5
Поэтому у вас возможны отличия. Но если в 4-ке код несильно поменялся, то скорее всего работают методы \Classes\InventUpd_Physical\updatePhysicalReturnedReceipt или \Classes\InventUpd_Physical\updatePhysicalReturnedIssue На примере \Classes\InventUpd_Physical\updatePhysicalReturnedReceipt Там вначале ищется расход (физическое или финансовое движение) по аналитике из строки. Если найден, то на основе него делается возврат, подхватывается аналитика и все такое. X++: while select forupdate inventTrans Index hint TransIdIdx order by inventDimId Desc where inventTrans.inventTransId == movement.transId() && inventTrans.statusIssue == statusIssue && inventTrans.statusReceipt == StatusReceipt::None && inventTrans.packingSlipReturned == 0 #InventDimJoin(InventTrans.inventDimId,InventDim,inventDimCriteria,inventDimFlags) { if (inventTrans.InventTransIdReturn) continue; addQty = this.updateTransPhysicalReturnedReceipt(_ledgerVoucher, inventTrans, addQty); Если что-то не получилось. (Скорее всего это и есть ваш случай) В силу каких то причин не нашлась проводка. (Например, проставлен Номер возвращенного лота inventTrans.InventTransIdReturn - т.е. этот лот кто то уже использовал) то тогда она продолжает поиск без учета аналитик, работает такой код : X++: while select forupdate inventTrans Index hint TransIdIdx order by inventDimId desc where inventTrans.inventTransId == movement.transId() && inventTrans.statusIssue == statusIssue && inventTrans.statusReceipt == StatusReceipt::None && inventTrans.packingSlipReturned == 0 { if (inventTrans.InventTransIdReturn) continue; addQty = this.updateTransPhysicalReturnedReceipt(_ledgerVoucher, inventTrans, addQty); if (!addQty) break; Ставьте точки останова и смотрите что реально там у вас происходит. Последний раз редактировалось Logger; 12.09.2008 в 21:09. |
|
|
За это сообщение автора поблагодарили: evv (1). |