А вообще-то, никакой загадки нет.
Если посмотреть дальше по коду, то увидим вызов
\Data Dictionary\Tables\InventTrans\Methods\viewCacheInventTransId
в котором выборка по inventTransId засовывается в кэш (return new RecordViewCache(inventTrans); ).
Так что, второй запрос просто делает выборку не в таблице, а в кэше (почему это происходит с включенным в запрос Voucher могу только гадать).
Для обхода такого негативного влияния кэширования просто вставьте такой код
X++:
while (purchParmLine)
{
inventMovement = null;
Надеюсь, остальные ваши проблемы с InventTrans так же пропадут
PS Или вызывайте код по работе с InventTrans после
X++:
inventMovement = InventMovement::construct(purchLine);