|
![]() |
#1 |
Участник
|
Сразу оговорюсь что у меня 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). |
![]() |
#2 |
Участник
|
Цитата:
Сообщение от Logger
![]() Сразу оговорюсь что у меня Ax3.0 SP5
Поэтому у вас возможны отличия. Но если в 4-ке код несильно поменялся, то скорее всего работают методы \Classes\InventUpd_Physical\updatePhysicalReturnedReceipt или \Classes\InventUpd_Physical\updatePhysicalReturnedIssue тут может произойти "перескок" аналитик. X++: InventMovement inventMovementChild(Common _buffer) { // if (!this.InventReturnFlag && _buffer.TableId == tablenum(ProdBOM)) if (_buffer.TableId == tablenum(ProdBOM)) { return new InventMov_ProdLine_JournalBOM(_buffer,this); } return null; } |
|
![]() |
#3 |
Участник
|
Вообще-то я бы не комментировал это место безусловно для всех случаев. Оно дергается из кучи мест. Мне кажется лучше сделать какой-нить управляющий параметр, который меняет поведение только для этого конкретного случая.
|
|
![]() |
#4 |
Участник
|
Насколько я понимаю, этот метод вызывается только для отборочных накладных в модуле "Производство", а заказчик предпочитает точно указывать аналитику (в частности, серийный номер) при возврате на склад, поэтому в данной ситуации это не должно привести к криминальным последствиям. Но можно и параметр сделать, если кастомер не будет возражать...
|
|
Теги |
ax3.0, ax4.0 |
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|