|
![]() |
#1 |
Злыдни
|
Спасибо, glibs!
Ситуация, при которой это вопсроизводится (вполне жизненная, во всяком случае для нас) 1. Приходуем 5 разных партий Товара по 1 штуке в каждой партии на Склад_1 2. Создаем резерв (любым складским журналом, я делал проводкой) 2-х штук Товара на Складе_1 3. Создаем перенос 5 штук Товара со Склада_1 на Склад_2 4. Резервируем (резервируется только 3 штуки, поскольку 2 штуки у нас зарезервированы ранее) 5. Лезем в журнал из пункта 2 и снимаем резерв 2-х штук 6. Возвращаемся в перенос и снова проводим резервирование (теперь зарезервированы все 5 штук) 7. В строке переноса уменьшаем количество (ну, допустим, не 5 штук, а только 3) 8. наблюдаем эффект, когда со Склада_1 уходят Партия 1, 2 и 3, а на Склад_2 приходят Партия 3,4 и 5. Что соответствует очередности создания записей для Товара по Складу_1 и Складу_2 в таблице InventDim "Прячась в лого свое Волки воют 'Ё-Моё' ... |
|
![]() |
#2 |
Участник
|
Похоже в 4-ке эту проблему не устранили...
Столкнулся с такой ситуацией: на складе по одной ном-ре имеется кол-во 10 шт.(с номером партии П1). Пользователи создают журнал переноса по этой ном-ре с кол-ом 20 шт. В итоге у нас создаються 4 проводки(Проводки расхода - Физ.зарезервировано 10 шт с партией П1 и Заказано 10 шт без партии, Проводки прихода Заказано 10 шт. с Партией П1 и Заказано 10 шт. без партии). Далее пользователь уменьшает кол-во до 10 шт. В итоге остаються 2 проводки(Проводки расхода - Физ.зарезервировано 10 шт с партией П1, проводки прихода - Заказано 10 шт. без партии). Важный момент в том что код аналитики у аналитик с заполным номером партии у нас всегда больше чем код аналитики без номера партии... Поэтому в методе InventUpd_Estimated\updateDepreciateReceipt X++: select forupdate inventTrans index hint TransIdIdx order by StatusReceipt desc, InventDimId desc where inventTrans.InventTransId == movement.transId() && inventTrans.TransChildType == movement.transChildType() && inventTrans.TransChildRefId == movement.transChildRefId() && inventTrans.StatusIssue == StatusIssue::None && inventTrans.StatusReceipt >= StatusReceipt::Ordered && inventTrans.StatusReceipt <= StatusReceipt::QuotationReceipt && inventTrans.InventRefTransId == ''; И в результате получаеться что товар ушел с номером партии, а пришел без номера. Кто-нибудь подскажет как решить эту проблему? |
|
![]() |
#3 |
Участник
|
Цитата:
Сообщение от AvrDen
![]() Похоже в 4-ке эту проблему не устранили...
Столкнулся с такой ситуацией: на складе по одной ном-ре имеется кол-во 10 шт.(с номером партии П1). Пользователи создают журнал переноса по этой ном-ре с кол-ом 20 шт. В итоге у нас создаються 4 проводки(Проводки расхода - Физ.зарезервировано 10 шт с партией П1 и Заказано 10 шт без партии, Проводки прихода Заказано 10 шт. с Партией П1 и Заказано 10 шт. без партии). Далее пользователь уменьшает кол-во до 10 шт. В итоге остаються 2 проводки(Проводки расхода - Физ.зарезервировано 10 шт с партией П1, проводки прихода - Заказано 10 шт. без партии). Важный момент в том что код аналитики у аналитик с заполным номером партии у нас всегда больше чем код аналитики без номера партии... Поэтому в методе InventUpd_Estimated\updateDepreciateReceipt X++: select forupdate inventTrans index hint TransIdIdx order by StatusReceipt desc, InventDimId desc where inventTrans.InventTransId == movement.transId() && inventTrans.TransChildType == movement.transChildType() && inventTrans.TransChildRefId == movement.transChildRefId() && inventTrans.StatusIssue == StatusIssue::None && inventTrans.StatusReceipt >= StatusReceipt::Ordered && inventTrans.StatusReceipt <= StatusReceipt::QuotationReceipt && inventTrans.InventRefTransId == ''; И в результате получаеться что товар ушел с номером партии, а пришел без номера. Кто-нибудь подскажет как решить эту проблему? |
|
![]() |
#4 |
Злыдни
|
AvrDem Важный момент в том что код аналитики у аналитик с заполным номером партии у нас всегда больше чем код аналитики без номера партии
Yprit Что соответствует очередности создания записей для Товара по Складу_1 и Складу_2 в таблице InventDim |
|
![]() |
#5 |
Участник
|
Предлагаю перед тем как воспроизводить глюк создать аналитики вот таким джобом
X++: static void Job378(Args _args) { #define.inventBatchId1("BatchID1") #define.inventBatchId2("BatchID2") #define.InventLocationIDFrom("From") #define.InventLocationIDTO("To") InventDim InventDim; ; ttsBegin; InventDim.InventLocationId = #InventLocationIDFrom; InventDim.inventBatchId = #inventBatchId1; InventDim::findOrCreate(InventDim); InventDim.clear(); InventDim.InventLocationId = #InventLocationIDFrom; InventDim.inventBatchId = #inventBatchId2; InventDim::findOrCreate(InventDim); InventDim.clear(); InventDim.InventLocationId = #InventLocationIDTo; InventDim.inventBatchId = #inventBatchId2; InventDim::findOrCreate(InventDim); InventDim.clear(); InventDim.InventLocationId = #InventLocationIDTo; InventDim.inventBatchId = #inventBatchId1; InventDim::findOrCreate(InventDim); InventDim.clear(); ttsCommit; } Должно сработать. P.S. В данном джобе я просто заранее создаю аналитики с нужным порядком следования InventDimId, чтобы на одном складе с большему значению InventBatch соответствовало большее значение InventDimID а на другом складе наоборот. В ax4.0 и ax5.0 может помешать тот факт что выравнивание InventDimID левое - в этом случае нужно убедиться что джоб правильно создал все. - Проблема может возникнуть, если при выделении номера аналитики - число значащих цифр увеличится. Для правого выравнивания гарантировано должно воспроизвестись. (в общем проще свои номера InventDimId константами пробить) Последний раз редактировалось Logger; 20.08.2008 в 18:17. |
|
|
За это сообщение автора поблагодарили: kashperuk (5). |
Теги |
bug, журнал, перемещение, резервирование, crm2011 |
|
|