Показать сообщение отдельно
Старый 24.03.2008, 10:14   #1  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Регистрация: 03.12.2001
Бага во внешнем польском складе
Решил посмотреть, что же это такое внешний склад и наткнулся на довольно глупую багу:

1. Создаем номенклатуру и разносим журнал "Внешний склад" на 10 штук
2. Создаем заказ на продажу на 1 штуку и выполняем операцию "Функции -> Закупка из внешнего склада".
3. На форме Внешние номенклатуры наблюдаем, что остаток по номенклатуре - 18 штук.

Произошло следующее:

После разноски журнала у нас появилась проводка прихода(PlInventTransExternal) на 10 штук, которая посредством перекрытого метода insert() изменила остатки (PlInventSumExternal) = 10 шт. Все ОК.

При создании "Закупки из внешнего склада" система сопоставляет расходную проводку с приходной (поле SetleRecId - именно с одной t). Для этого система разбивает проводку прихода на две - 1 и 9 штук (PlInventMovementExternal.externalIssue()). То есть, в данном случае система создаст две новых проводки ((-1) и 9 штук), а количество в приходной проводке 10 штук изменит на 1.

Изменение остатков происходит исключительно путем перекрытия методов insert() и update() на таблице проводок. Вставка новых проводок приведет к изменению остатков: 10 - 1 + 9 = 18 штук. Изменение существующей проводки 10 -> 1 на остатках никак не скажется ибо в методе PlInventMovementExternal.externalIssue делается receipt.doUpdate(). Правим на receipt.update().

Теперь у нас вызываеся PlInventTransExgternal.update(), который должен изменить остатки, но не меняет.... Не меняет потому, что наши славянские братья сначала дергают super(); в update(); а потом надеются в this.orig() найти изначальное кол-во, которое сами же и изменили. Переносим super() в конец метода и делаем вывод, что функционал попавший в официальную сборку mbs не прошел даже минимального тестирования. Наверное, тоже вертикальное решение регистрировали....

Если у кого-то есть доступ к более свежей версии ax, чем у меня(4.0.2214.0) - посмотрите, пожалуйста, было ли официальное исправление? Если нет - я зарегистрирую запрос.

Кстати, я правильно понимаю, что основное назначение данного функционала - это возможность сбыта узнать сколько товара они могут обещать клиенам, глядя на незарезервированные остатки на складах поставщика? Ну и доставка товара сразу от поставщика клиенту, хотя это уже никак к системе не относится. Или есть еще полезное применение?

И еще - mbs обновлял руководства пользователя со времен 3.0? Если да, то буду благодарен, если кто-то поделится ссылкой (можно на партнерский ресурс).