Посмотрел только что всю эту функциональность в 4.0 SP2
При создании заказа из контракта они связываются уже по новому полю -
BlanketRefTransId. То есть для контрактов InventRefTransId не заполняется.
А соответственно при пересчете уже все нормально отрабатывает.
Кстати, класс для создания заказа такого уже по другому называется -
SalesAutoCreate_ReleaseOrder (был SalesAutoCreate_tmpSalesLine).
Приведенный код для пересчета в 4.0 тоже немного подкорректировали.
Кстати, опять же про 3.0. Не проверял, но скорее всего так:
Проверка
X++:
if (!InventCostItemDim::isBlanketOrderReference(inventTrans))
вообще некорректной получается, если стоит галка "
Удаление строк заказа после отгрузки" в параметрах Расчетов с Клиентами.
В методе делается поиск строки контракта по номеру лота. И этой строки может уже не существовать.