Теперь отдельным постом, почему метод удаления фиктивных переносов переехал из класса InventCostClosingCancel_WorkInvent в класс InventCostClosingCancel_End(Это было исправлено в RU8 или RU7).
Отмена закрытия (также как и закрытие) обращаются с разноской следующим образом: Сначала система создает кучу записей в inventSettlement, потом (в самом конце закрытия или отмены закрытия), система вызывает класс разноски (InventAdjustPostClosing/InventAdjustPostClosingCancel). Как я уже сказал, НОРМАЛЬНОЕ поведение отмены закрытия по складу подразумевает удаление и фиктивных переносов. При удалении проводки из inventTrans, система автоматически удаляет и связанные сопоставления. Так что в старых роллапах, некоторые отмены сопоставления в inventSettlement не доживали до разноски в ГК, поскольку их родительские переносы удалялись классом InventCostClosingCancel_WorkInvent, который отвечает за отмену закрытия по отдельной номенклатуре. К большим проблемам, это обычно не приводило, поскольку в 99% случаев, сопоставления фиктивных переносов не разносятся в ГК. (Разноска в ГК сопоставлений фиктивных переносов может случаться только в случае если это не сопоставление в строгом смысле слова, а списание округления или ошибки по исчерпанию числа итераций при закрытии). Однако же в последних Rollupах эту проблему выловили и вылечили. Проверьте - если в вашей версии метод InventCostClosingCancel_WorkInvent.deleteVirtualTransfers не пустой, попробуйте перенести все класса InventCostCancel* с более позднего roll up.
Кроме того - с используемым подходом, БЕСПОЛЕЗНО после отмены закрытия пытаться выверить само закрытие или его отмену. Поскольку отмена закрытия гарантировано удаляет складские сопоставления, в общем случае обороты по ГК ваучера закрытия или отмены НЕ БУДУТ соответствовать оборотам по inventSettlement с тем же номером ваучера.
|