Bendrinti naudojant


Atsargų operacijų konsolidavimas

Laikui bėgant atsargų operacijų lentelė (InventTrans) toliau plečiasi ir sunaudoja daugiau duomenų bazės vietos. Todėl dėl lentelės pateiktos užklausos palaipsniui veiks lėčiau. Šiame straipsnyje aprašoma, kaip galite naudoti atsargų operacijų konsolidavimo priemonę, norėdami konsoliduoti duomenis apie atsargų operacijas, kad būtų pagerintas sistemos našumas.

Banknotas

Tik finansiškai atnaujintos atsargų operacijos gali būti konsoliduotos pasirinktu uždarytu DK laikotarpiu. Norint konsoliduoti, finansiškai atnaujintų siunčiamų atsargų operacijų išdavimo būsena turi būti Parduota, o gaunamų atsargų operacijų gavimo būsena turi būti Nupirkta.

Konsoliduojant atsargų operacijas, visos susijusios operacijos perkeliamos į InventTransArchive lentelę. Atsargų išdavimo operacijos ir atsargų gavimo operacijos konsoliduojamos atskirai, remiantis prekės ID () ir atsargų dimensijos ID (itemIdinventDimId) kombinacija, jos yra pateikiamos į suvestinę išdavimą ir apibendrintas gavimo operacijas.

Jei kombinacijoje itemId inventDimId yra tik viena gavimo arba išdavimo operacija, operacija nebus konsoliduota.

Banknotas

Konsoliduodami savo atsargų operacijas, galite toliau optimizuoti savo saugojimą ir sistemos našumą naudodami funkciją Archyvas su ilgalaikio užlaikymo funkcija, Dataverse InventTransArchive kad įrašai būtų perkelti į Microsoft Azure duomenų žurnalus. Daugiau informacijos ieškokite Archive Inventorizacijos operacijų duomenys. Dynamics 365 Supply Chain Management

Funkcijos įjungimas sistemoje

Jei jūsų sistema dar neapima šiame straipsnyje aprašytų priemonių, ... eikite į Funkcijų valdymą ir įjunkite atsargų operacijų konsolidavimo funkciją. Įgalinus šią funkciją jos išjungti negalima.

Dalykai, į kuriuos reikia atsižvelgti prieš konsoliduojant atsargų operacijas

Prieš konsoliduojant atsargų operacijas, reikia atsižvelgti į šiuos verslo scenarijus, nes operacija juos paveiks:

  • Kai atliekate atsargų operacijų auditą iš susijusių dokumentų, pvz., pirkimo užsakymo eilučių, jos rodomos kaip konsoliduotos. Norėdami peržiūrėti konsoliduotas operacijas, turite eiti į Atsargų valdymo periodinės > užduotys > Išvalykite atsargų > operacijų konsolidavimą.
  • Negalima atšaukti konsoliduotų laikotarpių atsargų uždarymo.
  • Standartinių išlaidų konvertavimo negalima atlikti konsoliduotuose laikotarpiuose.
  • Konsoliduojant atsargų operacijas, paveikiamos atsargų ataskaitos, šaltinis iš atsargų operacijų. Šios ataskaitos apima atsargų skirstymo ataskaitą ir atsargų vertės ataskaitas.
  • Atsargų prognozės gali būti paveiktos, jei jos paleidžiamos konsoliduotų laikotarpių laikotarpiu.

Būtinieji komponentai

Atsargų operacijas galima konsoliduoti tik šių sąlygų tenkinamos laikotarpiuose:

  • DK laikotarpis turi būti uždarytas.
  • Atsargų uždarymas turi būti vykdomas konsolidavimo dieną ar po jos.
  • Laikotarpis turi būti bent vienais metais prieš konsolidavimo pradžios laikotarpio datą.
  • Neturi būti jokių esamų atsargų perskaičiavimų.

Konsoliduoti savo atsargų operacijas

Norėdami konsoliduoti atsargų operacijas, atlikite šiuos veiksmus.

  1. Eikite į Atsargų valdymo periodinės>užduotys>Išvalyti atsargų>operacijos konsolidavimą.

    Rodomas atsargų operacijos konsolidavimo puslapis, kuriame pateikiamas konsoliduotų proceso įrašų sąrašas.

  2. Veiksmų srityje pasirinkite Atsargų operacijos konsolidavimą , kad sukurtumėte atsargų operacijos konsolidavimą.

  3. Atsargų operacijos konsolidavimo dialogo lango FastTab Parametrai nustatykite šiuos laukus:

    • Nuo datos uždaryto DK laikotarpio – pasirinkite anksčiausią operacijos datą, kuri bus įtraukta į konsolidaciją.
    • Pabaigos data uždarytame DK laiko tarpe – pasirinkite naujausią operacijos datą, kurią norite įtraukti į konsolidaciją.

    Banknotas

    Bus galima pasirinkti tik laikotarpius , kurie atitinka būtinas sąlygas.

  4. Dalyje Vykdyti fone "FastTab" nustatykite paketinio vykdymo informaciją, kurios reikia. Atlikite įprastus „Microsoft Dynamics 365 Supply Chain Management“ paketinių užduočių veiksmus.

  5. Pasirinkite Gerai.

  6. Gaunate pranešimą, kuriuo prašoma patvirtinti, kad norite tęsti. Atidžiai perskaitykite pranešimą ir pasirinkite Taip , jei norite tęsti.

    Gaunate pranešimą, kuriame teigiama, kad jūsų atsargų operacijų konsolidavimo užduotis įtraukta į paketinių užduočių eilę. Užduotis pradedama konsoliduoti atsargų operacijas nuo pasirinkto laikotarpio.

Peržiūrėti konsoliduotas atsargų operacijas

Atsargų operacijos konsolidavimo puslapis rodo visą konsolidacijos retrospektyvą. Kiekvienoje tinklelio eilutėje rodoma tokia informacija kaip konsolidavimo sukurta data, jį sukūręs vartotojas ir jos būsena.

Norėdami filtruoti tinklelyje rodomas konsolidacijas, puslapio viršuje išplečiamajame sąraše pasirinkite vieną iš šių verčių:

  • Aktyvus – rodyti tik aktyvias konsolidacijas.
  • Viskas – rodyti visas konsolidacijas.

Pateikiama ši kiekvieno tinklelio konsolidavimo informacija:

  • Aktyvus – varnelė nurodo, kad konsolidacija yra aktyvi.
  • Pradžios data – seniausios operacijos, kurią galima įtraukti į konsolidaciją, data.
  • Pabaigos data – naujausios operacijos, kurią galima įtraukti į konsolidaciją, data.
  • Suplanuota pagal – vartotojo sąskaita, sukūrusi konsolidaciją.
  • Įvykdyta – konsolidavimo sukurta data.
  • Stabdyti dabartinį atnaujinimą – varnelė nurodo, kad konsolidacija vykdoma, bet buvo pristabdyta.
  • Būsena – konsolidavimo apdorojimo būsena. Galimos vertės yra Waiting, Vykdoma ir Baigta.

Įrankių juosta virš tinklelio pateikia šiuos mygtukus, kuriuos galite naudoti dirbti su pasirinkta konsolidacija:

  • Konsoliduotos operacijos – peržiūrėti visą pasirinktos konsolidacijos informaciją. Konsoliduotų operacijų puslapis , kuriame rodomos visos konsolidacijos operacijos.

    Norėdami peržiūrėti daugiau informacijos apie konkrečią operaciją konsoliduotųjų operacijų puslapyje, pasirinkite ją tinklelyje, tada veiksmų srityje pasirinkite Konsoliduotos operacijos informaciją. Konsoliduotosios operacijos informacijos puslapis, kuriame rodoma tokia informacija kaip DK registravimas, susijusios papildomos knygos nuorodos ir finansinės dimensijos.

  • Pristabdyti – pristabdyti pasirinktą konsolidaciją, kuri šiuo metu apdorojama. Pristabdyti įsigalioja tik sugenerus archyvavimo užduotį. Todėl prieš įsigaliojant pauzei galimas nedidelis uždelsimas. Jei konsolidavimas pristabdytas, dabartinio atnaujinimo lauke stabdyti atsiranda varnelė .

  • TĘSTI – tęsti pasirinktos konsolidacijos, kuri šiuo metu pristabdyta, apdorojimą.

Išplečiate kodą, kad būtų palaikomi pasirinktiniai laukai

Jei lentelėje InventTrans yra vienas ar daugiau pasirinktinių laukų, gali reikėti išplėsti kodą, kad jį palaikytų, atsižvelgiant į tai, kaip jie pavadinti.

  • Jei pasirinktinių laukų iš InventTrans lentelės InventtransArchive laukų pavadinimai yra tokie patys kaip lentelėje, tai reiškia, kad jie susieti 1:1. Todėl pasirinktinius laukus galite tiesiog įtraukti į InventoryArchiveFields lentelės laukų inventTrans grupę.
  • Jei pasirinktinių laukų pavadinimai InventTrans InventtransArchive lentelėje nesutampa su lentelės laukų pavadinimais, tada, norėdami juos susieti, turite pridėti kodą. Pavyzdžiui, InventTrans.CreatedDateTime jei esate iškviestas sistemos laukas, InventTransArchive lentelėje turite sukurti lauką su kitu pavadinimu ( InventtransArchive.InventTransCreatedDateTimepvz.) InventTransArchiveProcessTask InventTransArchiveSqlStatementHelper ir pridėti plėtinius prie laukų ir klasių, kaip parodyta toliau pateiktame pavyzdyje.

Šiame pavyzdyje pateikiamas pavyzdys, kaip į klasę įtraukti reikiamą plėtinį 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);
    }
}

Šiame pavyzdyje pateikiamas pavyzdys, kaip į klasę įtraukti reikiamą plėtinį 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;
    }
}