Я бы написал запросик на подобие этого:
X++:
select it.ITEMID, it.INVENTDIMID, SUM(it.qty) as ItQty, MAX(id.InventBatchId) as IdBatch, max(id.INVENTGTDID_RU) as IdGTD,
max(id.INVENTSERIALID) as IdSerial
from INVENTTRANS as it
join INVENTDIM as id on
it.INVENTDIMID = id.INVENTDIMID and
it.DATAAREAID = id.DATAAREAID
where
(it.STATUSISSUE in (1, 2) or
it.STATUSRECEIPT in (1, 2)) and
it.ITEMID = 'A0001' and
it.DATAAREAID = 'usmf'
group by it.ITEMID, it.INVENTDIMID
having SUM(it.qty) <> 0
а потом посмотрел, по какой из аналитик получился отрицательный остаток (изменив having). А дальше дело техники, надо понять из какой аналитики в какую надо двинуть положительный остаток.