Показать сообщение отдельно
Старый 07.03.2008, 09:32   #1  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,429 / 1772 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Кредит-нота заказа на покупку в AX4
Здравствуйте все!
Накануне столкнулся со странной ошибкой при попытке создания Кредит-ноты закупки: "Для номенклатуры установлен режим автоматической генерации серийных номеров." (поймал это в AX 4.0, в Axapta 3.0 ошибка не воспроизвелась). Начал копать, обнаружил следующее:

1) Ошибка генерируется в методе updateInvoiceCreditCopy табицы InventTrans в случае существования более одной проводки(строчки) по обрабатываемому лоту. Смысл проверки мне не совсем понятен (но в версии AX3 она уже была).
2) Методом глубокого погружения в Debuger удалось определить следующее. Несколько строк в InventTrans образуютя в случае ЧАСТИЧНОГО резервирования сторнирующих проводок. т.е. когда в статус "Физ. зарезервировано" переходит не всё количество и часть соответственно остаётся в статусе "Заказано".
3) У меня эта ситуация возникла при сторнировании частично сопоставленной(закрытием склада) складской проводки, в этом случае резервироваться пытается только её открытая часть. Интересно что в случае отсутствия по этой номенклатуры доступного колическтва в наличии разервирование естественно не проходит, сторнирующая проводка не делится на "Физ. зарезервировано" и "Заказано", ошибка не выдаётся и кредит-нота создаётся!
4) Резервирование происходит в методе createEstimatedInventTrans класса InventUpd_Estimated. Сравнил с тройкой понял, что появилось оно только в версии AX4.0 в 3.0 такого механизма не было.

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