Dela via


Konsolidera lagertransaktioner

Med tiden fortsätter lagertransaktionsregistret (InventTrans) att växa och förbruka mer databasutrymme. Därför kommer frågeställningar som görs mot registret att gradvis bli besvarade. Denna artikel beskriver användning av funktionen Konsolidering av lagertransaktion för att konsolidera data om lagertransaktioner för att förbättra systemets prestanda.

Obs

Endast ekonomiskt uppdaterade lagertransaktioner kan konsolideras i en vald stängd redovisningsperiod. För att kunna konsolideras måste ekonomiskt uppdaterade utgående lagertransaktioner ha utleveransstatus Såld och inkommande lagertransaktioner måste ha inleveransstatus Inköpt .

När du konsoliderar lagertransaktioner flyttas alla relaterade transaktioner till InventTransArchive registret. Transaktioner för lagerutleverans och lagerinleverans konsolideras separat baserat på kombinationen av artikel-ID (itemId) och lagerdimension-ID (inventDimId) och de placeras i den sammanfattade utgåvan och de sammanfattade inleveranstransaktioner.

Om en itemId och inventDimId kombinationen bara innehåller en inleverans- eller utleveranstransaktion konsolideras inte transaktionen.

Obs

När du har konsoliderat dina lagertransaktioner kan du ytterligare optimera lagrings- och systemprestandan genom att använda funktionen Arkivera ned Dataverse långsiktig kvarhållning till InventTransArchive-poster till en Microsoft Azure datasjö. Mer information finns i Arkivera lagertransaktionsdata i Dynamics 365 Supply Chain Management.

Aktivera funktionen i systemet

Om ditt system inte redan innehåller den funktion som beskrivs i denna artikel, gå då till funktionshantering och aktivera funktionen Konsolidering av lagertransaktion. Denna funktion kan inte inaktiveras när du har aktiverat dem.

Saker du bör tänka på innan du konsoliderar lagertransaktioner

Innan du konsoliderar lagertransaktioner bör du tänka på följande affärsscenarier eftersom de påverkas av åtgärden:

  • När du granskar lagertransaktioner från relaterade dokument, till exempel inköpsorderrader, visas de som konsoliderade. För att konsolidera de arkiverade transaktionerna måste du gå till Lagerhantering > Periodiska uppgifter > Rensa > Konsolidering av lagertransaktion.
  • Lagerstängning kan inte annulleras för konsoliderade perioder.
  • Standardkostnadskonvertering kan inte göras för konsoliderade perioder.
  • Lagerrapporter som kommer från lagertransaktioner påverkas när du konsoliderar lagertransaktioner. Dessa rapporter omfattar rapporten för lager åldersfördelning och lagervärderapporter.
  • Lagerprognoser kan påverkas om de körs under tidshorisonten för konsoliderade perioder.

Förutsättningar

Lagertransaktioner kan bara konsolideras under perioder där följande villkor uppfylls:

  • Redovisningsperioden måste vara stängd.
  • Lagerstängningen måste köras på eller efter till-perioddatumet för konsolideringen.
  • Perioden måste vara minst ett år före konsolideringens från-perioddatum.
  • Inga befintliga lageromberäkningar får finnas.

Konsolidera dina lagertransaktioner

Följ dessa steg för att konsolidera inventeringstransaktioner.

  1. Gå till Lagerhantering>Periodiska uppgifter>Rensa>Konsolidera lagertransaktion.

    Sidan Konsolidera lagertransaktion visas och visar en lista med konsoliderade processposter.

  2. I åtgärdsfönstret, välj Konsolidera lagertransaktion om du vill skapa en konsolidering av lagertransaktion.

  3. I dialogrutan Konsolidera lagertransaktion på snabbfliken Parametrar ange följande fält:

    • Från datum i stängd redovisningsperiod – Välj det tidigaste transaktionsdatumet som ska inkluderas i konsolideringen.
    • Till datum i stängd redovisningsperiod – Välj det senaste transaktionsdatumet som ska inkluderas i konsolideringen.

    Obs

    Endast perioder som uppfyller kraven är tillgängliga för val.

  4. På snabbfliken Kör i bakgrunden ställer du in batchbearbetningsinformation efter behov. Följ de vanligaste stegen för batchjobb i Microsoft Dynamics 365 Supply Chain Management.

  5. Välj OK.

  6. Du får ett meddelande som uppmanar dig att bekräfta att du vill fortsätta. Läs meddelandet noggrant och välj sedan Ja om du vill fortsätta.

    Du får ett meddelande om att dina lagertransaktioner konsolideringsobb har lagts till i batchkön. Jobbet börjar nu att konsolidera lagertransaktioner från den valda perioden.

Visa konsoliderade lagertransaktioner

Sidan Konsolidera lagertransaktion visar hela konsolideringshistoriken. Varje rad i rutnätet visar information som t.ex. datum då konsolideringen skapades, användaren som skapade det och dess status.

Välj ett av följande värden i listrutan högst upp på sidan för att filtrera de konsolideringar som visas i rutnätet:

  • Aktiv – Visa endast aktiva konsolideringar.
  • Alla – Visa alla konsolideringar.

För varje konsolidering i rutnätet finns följande information:

  • Aktiv – En bockmarkering anger att konsolideringen är aktiv.
  • Från datum – Datumet för den äldsta transaktionen som kan inkluderas i konsolideringen.
  • Till datum – Datumet för den senaste transaktionen som kan inkluderas i konsolideringen.
  • Tidsplanerad av – Användarkontot som skapade konsolideringen.
  • Utförd – Datum då konsolideringen skapades.
  • Stoppa aktuell uppdatering – En bockmarkering anger att konsolideringen pågår, men att det har pausats.
  • Tillstånd – konsolideringens bearbetningsstatus. De möjliga värdena är Väntar, Pågår och Slutförd.

Verktygsfältet ovanför rutnätet innehåller följande knappar som du använder när du arbetar med en vald konsolidering:

  • Konsoliderade transaktioner – Visa fullständiga detaljer om den valda konsolideringen. Sidan Konsoliderade transaktioner visar alla transaktioner i konsolideringen.

    För att få mer information om en viss transaktion på sidan Konsoliderade transaktioner markerar du den i rutnätet och väljer sedan Information om konsoliderade transaktioner. Sidan Information om konsoliderade transaktioner som visas kommer att visa information som redovisningsbokföring, relaterade redovisningsreferenser och ekonomiska dimensioner.

  • Göra paus – Pausa en vald konsolidering som bearbetas just nu. Pausen gäller bara efter det att arkiveringsuppgiften har genererats. Därför kan det ta en kort tid innan pausen börjar gälla. Om en konsolidering har pausats visas en bockmarkering i fältet Stoppa aktuell uppdatering.

  • Återuppta – Återuppta bearbetning för en vald konsolidering som pausas just nu.

Utöka koden till att stödja anpassade fält

Om tabellen InventTrans innehåller ett eller flera anpassade fält kanske du måste utöka koden för att kunna stödja dem, beroende på hur de namnges.

  • Om de anpassade fälten i tabellen InventTrans har samma fältnamn som i tabellen InventtransArchive innebär det att de är mappade till 1:1. Därför kan du bara placera de anpassade fälten i InventoryArchiveFields-fälts grupp i tabellen inventTrans.
  • Om de anpassade fältnamnen i InventTrans-tabellen inte matchar fältnamnen InventtransArchive-tabellen måste du lägga till kod för att mappa dem. Om du till exempel har systemfältet InventTrans.CreatedDateTime måste du skapa ett fält i tabellen InventTransArchive med ett annat namn (till exempel InventtransArchive.InventTransCreatedDateTime) och lägga till tillägg i klasserna InventTransArchiveProcessTask och InventTransArchiveSqlStatementHelper, som visas i följande exempelkod.

Följande exempelkod visar ett exempel på hur du lägger till tillägget som krävs i klassen InventTransArchiveProcessTask.

[ExtensionOf(classStr(InventTransArchiveProcessTask))]
Final class InventTransArchiveProcessTask_Extension
{

    protected void addInventTransFields(SysDaSelection _selectionObject)
    {
        _selectionObject.add(fieldStr(InventTrans, ModifiedBy))
            .add(fieldStr(InventTrans, CreatedBy)).add(fieldStr(InventTrans, CreatedDateTime));

        next addInventTransFields(_selectionObject);
    }


    protected void addInventTransArchiveFields(SysDaSelection _selectionObject)
    {
        _selectionObject.add(fieldStr(InventTransArchive, InventTransModifiedBy))
            .add(fieldStr(InventTransArchive, InventTransCreatedBy)).add(fieldStr(InventTransArchive, InventTransCreatedDateTime));

        next addInventTransArchiveFields(_selectionObject);
    }
}

Följande exempelkod visar ett exempel på hur du lägger till tillägget som krävs i klassen InventTransArchiveSqlStatementHelper.

[ExtensionOf(classStr(InventTransArchiveSqlStatementHelper))]
final class InventTransArchiveSqlStatementHelper_Extension
{
    private str     inventTransModifiedBy;  
    private str     inventTransCreatedBy;
    private str     inventTransCreatedDateTime;

    protected void initialize()
    {
        next initialize();
        inventTransModifiedBy = new SysDictField(tablenum(InventTrans), fieldNum(InventTrans, ModifiedBy)).name(DbBackend::Sql);
        inventTransCreatedDateTime = new SysDictField(tablenum(InventTrans), fieldNum(InventTrans, CreatedDateTime)).name(DbBackend::Sql);
        inventTransCreatedBy = new SysDictField(tablenum(InventTrans), fieldNum(InventTrans, CreatedBy)).name(DbBackend::Sql);
    }

    protected str buildInventTransArchiveSelectionFieldsStatement()
    {
        str     ret;

        ret = next buildInventTransArchiveSelectionFieldsStatement();
        
        if (inventTransModifiedBy)
        {
            ret += ',';
            ret += strFmt('%1',  new SysDictField(tablenum(InventTransArchive), fieldNum(InventTransArchive, InventTransModifiedBy)).name(DbBackend::Sql));
        }

        if (inventTransCreatedBy)
        {
            ret += ',';
            ret += strFmt('%1',  new SysDictField(tablenum(InventTransArchive), fieldNum(InventTransArchive, InventTransCreatedBy)).name(DbBackend::Sql));
        }

        if (inventTransCreatedDateTime)
        {
            ret += ',';
            ret += strFmt('%1',  new SysDictField(tablenum(InventTransArchive), fieldNum(InventTransArchive, InventTransCreatedDateTime)).name(DbBackend::Sql));
        }

        return ret;
    }

    protected str buildInventTransTargetFieldsStatement()
    {
        str     ret;

        ret = next buildInventTransTargetFieldsStatement();

        if (inventTransModifiedBy)
        {
            ret += ',';
            ret += strFmt('%1', inventTransModifiedBy);
        }

        if (inventTransCreatedBy)
        {
            ret += ',';
            ret += strFmt('%1', inventTransCreatedBy);
        }

        if (inventTransCreatedDateTime)
        {
            ret += ',';
            ret += strFmt('%1', inventTransCreatedDateTime);
        }

        return ret;
    }
}