16.06.2009, 16:43 | #1 |
MCITP
|
Журнал переноса. Уменьшение кол-ва. Баг?
Размещу тему в Функционале, хотя и программирования она тоже вероятно касается...
Топик и для информации и просто интересно как народ с этим живёт/борется. Этот баг-фича имеет место на всех известных мне версиях с 3.0 по 2009sp1, поэтому на версии внимание не заостряется. Ситуация следующая: - Имеем, например, наличие на складе 1 какой-то номенклатуры 200 штук. С какими-то дополнительными аналитиками, например, партия и ГТД. - Создаётся журнал переноса этой номенклатуры со склада 1 на склад 2 в кол-ве 300 штук, например (больше наличия на складе 1). Т.е. в самой строке журнала указываем только аналитики склада (1->2) (ну и сайт в 2009). Соответственно резервируется (и возможно комплектуется - это не сильно важно) 200 единиц на складе 1. В проводки при резервировании подтягивается остальная аналитика (и в приходные тоже). Т.е. на данный момент имеем следующую ситуацию в проводках: Склад Партия ГТД Ст.Прихода Ст.Расхода ___ Кол-во 1 ____ П1 ___ Г1 ____________ Физ.Зарезерв. -200 1 __________________________ В заказе ____ -100 2 ____ П1 ___ Г1 Заказано _________________ 200 2 _____________ Заказано _________________ 100 - Теперь, когда пользователь должен разнести журнал и увидит, что кол-во в строке слишком большое, то естественно он захочет его уменьшить. Т.е. уменьшит кол-во в строке журнала с 300 до 200. И вот тут Аксапта делает свою багофичу, лично для меня неприятную и слабоожидаемую. На выходе получаем следующую картину: Склад Партия ГТД Ст.Прихода Ст.Расхода ___ Кол-во 1 ____ П1 ___ Г1 ____________ Физ.Зарезерв. -200 2 ____ П1 ___ Г1 Заказано _________________ 100 2 _____________ Заказано _________________ 100 Т.е. она убирает не последнюю (4-ую) строку "Заказано", а уменьшает 3-ю строку с уже подтянутыми аналитиками из зарезервированных проводок. Конечно, в данном конкретном случае можно просто перерезервировать (если никто не успеет перехватить ), а вот если строки скомплектованы, то сложнее. В итоге обычно пользователи не обращают на это внимания и журнал разносится как есть и теряются аналитики. Потом приходится эти случаи отлавливать и корректировать аналитику... А хотелось бы, чтоб всегда "уходила последняя строка. Теперь, перейдём к программингу и поиску причин данного поведения. Причина проста и кроется в методе updateDepreciateReceipt() класса InventUpd_estimated. Метод, конечно, претерпевал определённые изменения от версии к версии, но суть оставалась та же. В данном случае приходная проводка "под уменьшение" искалась по сути первая попавшаяся, точнее с наибольшим кодом аналитики. (сортировка InventDimId desc в запросе). Ну и, соответсвенно, при определённом везении получался описанный выше результат. А иногда и не получался, понятное дело. У себя с учётом специфики конкретного случая и конкретных аналитик я доработал данный алгоритм так, чтоб при обработке именно приходов по переносу смотрелись ещё аналитики и в первую очередь брались пустые. (Присоединил inventDim в запрос. Идея думаю, понятна, если кому надо могу выложить код.) В общем случае, конечно, сложнее: придётся делать через кверю или макрос, но тоже реализуемо, имхо...
__________________
Zhirenkov Vitaly |
|
|
За это сообщение автора поблагодарили: Logger (5), lev (2), konopello (3). |