Я собрал из двух частей: сначала по сути целиком взял CU 5801 Show Applied Entries, а внутри добавил функцию из CU 5895 Inventory Adjustment GetOrigPosItemLedgEntryNo, которая бежит по перемещениям к покупке. В итоге на кнопке такой код:
Код:
TempItemEntry.DELETEALL;
WITH Rec DO BEGIN
IF Positive THEN
ERROR('Это положительная операция')
ELSE BEGIN
ItemApplnEntry.RESET;
ItemApplnEntry.SETCURRENTKEY("Outbound Item Entry No.","Item Ledger Entry No.","Cost Application");
ItemApplnEntry.SETRANGE("Outbound Item Entry No.","Entry No.");
ItemApplnEntry.SETRANGE("Item Ledger Entry No.","Entry No.");
ItemApplnEntry.SETRANGE("Cost Application",TRUE);
IF ItemApplnEntry.FIND('-') THEN
REPEAT
ItemApplnEntry2.RESET;
ItemApplnEntry2.SETCURRENTKEY("Inbound Item Entry No.","Item Ledger Entry No.");
ItemApplnEntry2.SETRANGE("Item Ledger Entry No.",ItemApplnEntry."Inbound Item Entry No.");
ItemApplnEntry2.SETRANGE("Inbound Item Entry No.",ItemApplnEntry."Inbound Item Entry No.");
ItemApplnEntry2.FINDFIRST;
IF ItemApplnEntry2."Outbound Item Entry No." <> 0 THEN BEGIN
GetOrigPosItemLedgEntryNo(ItemApplnEntry2);
InsertTempEntry(ItemApplnEntry2."Item Ledger Entry No.",ItemApplnEntry.Quantity);
END ELSE BEGIN
InsertTempEntry(ItemApplnEntry2."Item Ledger Entry No.",ItemApplnEntry.Quantity);
END;
UNTIL ItemApplnEntry.NEXT = 0;
END;
END;
FORM.RUNMODAL(5804,TempItemEntry);