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. I den här artikeln beskrivs hur du kan använda konsolideringsfunktionen för lagertransaktioner för att konsolidera data om lagertransaktioner för att förbättra systemets prestanda.

Notering

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 utleveransstatusEn Såld och inkommande lagertransaktioner måste ha inleveransstatus Inköpt.

När du konsoliderar lagertransaktioner flyttas alla relaterade transaktioner till InventTransArchive registret. Utleveranstransaktioner för lager och lagerinleveranstransaktioner konsolideras separat, baserat på kombinationen av artikel-ID (itemId) och lagerdimensions-ID (inventDimId) och de läggs till i summerade utleverans- och summerade inleveranstransaktioner.

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

Notering

När du har konsoliderat dina lagertransaktioner kan du ytterligare optimera lagrings- och systemprestandan Dataverse InventTransArchive min med hjälp av funktionen Arkiv med långsiktig lagring för att flytta poster till en Microsoft Azure data. Mer information finns i Arkivera lagertransaktionsdata. Dynamics 365 Supply Chain Management

Aktivera funktionen i systemet

Om systemet inte redan innehåller funktionen som beskrivs i den här artikeln går du till Funktionshantering och aktiverar konsolideringsfunktionen för lagertransaktioner. Den här funktionen kan inte inaktiveras efter att den har aktiverats.

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 operationen:

  • När du granskar lagertransaktioner från relaterade dokument, till exempel inköpsorderrader, visas de som konsoliderade. Om du vill granska de konsoliderade transaktionerna måste du gå till Periodiska uppgifter för lagerhantering > och > rensa lagertransaktionskonsolidering >.
  • Det går inte att annullera lagerstängningen 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 konsolideringsperiodens tidshorisont.

Krav

Lagertransaktioner kan endast 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 från-perioddatumet för konsolideringen.
  • Inga befintliga lageromberäkningar får finnas.

Konsolidera lagertransaktionerna

Om du vill konsolidera lagertransaktioner följer du dessa steg.

  1. Gå till Periodiska uppgifter för lagerhantering rensa upp i lagertransaktionskonsolidering>>.>

    Sidan Konsolidering av lagertransaktion visas och visar en lista med konsoliderade processposter.

  2. Välj En lagertransaktionskonsolidering i åtgärdsfönstret om du vill skapa en lagertransaktionskonsolidering.

  3. Ställ in följande fält i dialogrutan Konsolidering av lagertransaktioner på snabbflikarna Parametrar:

    • 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.

    Notering

    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 ditt konsolideringsjobb för lagertransaktioner har lagts till i batchkön. Jobbet börjar konsolidera lagertransaktioner från den valda perioden.

Visa konsoliderade lagertransaktioner

sidan Konsolidering av lagertransaktion visas hela konsolideringshistoriken. Varje rad i rutnätet visar information som t.ex. datum då konsolideringen skapades, användaren som skapade den och dess status.

Välj ett av följande värden i listrutan högst upp på sidan om du vill filtrera konsolideringarna som visas i rutnätet:

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

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

  • 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.
  • Tidsplanerat av – Användarkontot som skapade konsolideringen.
  • Utförd – Datumet då konsolideringen skapades.
  • Stoppa aktuell uppdatering – En bockmarkering anger att konsolideringen pågår, men att den har pausats.
  • Stat – Bearbetningsstatus för konsolideringen. 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 som visas visar alla transaktioner i konsolideringen.

    Om du vill visa mer information om en viss transaktion på sidan Konsoliderade transaktioner markerar du den i rutnätet och väljer sedan Konsoliderad transaktionsinformation i åtgärdsfönstret.sidan Konsoliderad transaktionsinformation som visas visas information som redovisningsbokföring, relaterade redovisningsreferenser och ekonomiska dimensioner.

  • Pausa – 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 pausas visas en bockmarkering i fältet Stoppa aktuell uppdatering.

  • Återuppta – Återuppta bearbetningen för den valda konsolideringen som för tillfället är pausad.

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

Om registret 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 InventTrans registret har samma fältnamn InventtransArchive som i registret betyder det att de är 1:1 mappade. 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;
    }
}