Dynamisk arbejdsklassificering

Lagerchefer har ofte brug for forskellige arbejdspuljer, prioriteter eller bay door-opgaver afhængigt af transportøren, forsendelsesfristen eller typen af varer, der plukkes. Uden dynamisk klassificering kræver hver kombination sin egen arbejdsskabelon, hvilket kan føre til en stor og kompleks konfiguration.

Med dynamisk arbejdsklassificering kan du bruge Power Fx-formler til at bestemme disse arbejdsparametre på kørselstidspunktet i stedet for at konfigurere dem statisk på hver arbejdsskabelon. En enkelt arbejdsskabelon kombineret med en klassificeringsregel kan erstatte mange statiske skabeloner, hvilket gør din konfiguration nemmere at vedligeholde og mere fleksibel til at ændre forretningskrav.

Dynamisk arbejdsklassificering indeholder to primære funktioner:

  • Klassificering ved oprettelse af arbejde – Når der oprettes lagerarbejde, evaluerer systemet en Power Fx-formel for at tilsidesætte arbejdspuljen, arbejdsprioriteten, lokationsdirektivkoder og arbejdsklasser på det genererede arbejde. Formlen kan slå værdier op fra arbejdshovedet og de tilknyttede poster, herunder aftalen om last, forsendelse, bølge og transport.
  • Omklassificering efter indlæsningsændringer – Hvis en belastning ændres, efter at arbejdet er blevet oprettet (f.eks. omfordeles transportøren), kan systemet evaluere formlen igen og opdatere det tilknyttede arbejde. Arbejde kan også evalueres efter en tidsplan, hvis formlen afhænger af den aktuelle dato eller det aktuelle klokkeslæt.

Hvis du vil bruge dynamisk arbejdsklassificering, skal du konfigurere, hvordan belastninger udløser omklassificering, oprette en eller flere klassificeringsregler, der indeholder dine Power Fx-formler, og knytte hver regel til de arbejdsskabeloner, der skal bruge den.

Forudsætninger

Hvis du vil bruge den funktion, der er beskrevet i denne artikel, skal dit system opfylde følgende krav:

  • Du skal køre Microsoft Dynamics 365 Supply Chain Management version 10.0.48 eller nyere.
  • Funktionen med navnet (Prøveversion af produktionsklar) Dynamisk arbejdsklassificering skal være aktiveret i funktionsstyring. Fra supply chain management version 10.0.49 er denne funktion slået til som standard.

Konfigurer omklassificering af arbejde ved opdatering af systembelastning

Hvis du vil styre, om dynamiske regler for arbejdsklassificering kan omklassificere arbejde, når indlæsninger ændres, skal du konfigurere indstillingen Arbejdsklassificering ved opdatering af belastning . Arbejde omklassificeres kun af regler, der eksplicit er angivet til at omklassificere arbejde ved opdatering af indlæsning, så du kan vælge, hvilke regler der skal gælde, når en indlæsning ændres. Systemet klassificerer altid arbejde ved oprettelse, hvis en regel er knyttet til arbejdsskabelonen, uanset denne indstilling.

Følg disse trin for at konfigurere denne indstilling:

  1. Gå til Lokationsstyring>Konfiguration>Parametre til lokationsstyring.
  2. Åbn oversigtspanelet Arbejde under fanen Generelt.
  3. Angiv feltet Arbejdsklassificering ved opdatering af belastning til en af følgende værdier:
    • Disabled – der udføres ingen handling, når en indlæsning opdateres.
    • Synkront – alt arbejde, der er knyttet til en opdateret indlæsning, omklassificeres, umiddelbart efter at indlæsningen er opdateret.

Bemærkning

Når der bruges synkron omklassificering, kan brugeren opleve en kort ventetid under indlæsningsopdateringer, mens systemet behandler alle tilknyttede arbejdsheadere.

Opret regler for dynamisk arbejdsklassificering

Klassificeringsregler definerer De Power Fx-formler, der bestemmer, hvordan arbejde skal klassificeres. Hver regel angiver, hvilke felter der skal tilsidesættes, og logikken til beregning af de nye værdier.

Følg disse trin for at oprette en regel:

  1. Gå tilOpsætning af>>> fordynamisk arbejdsklassificering.

  2. Vælg Ny for at oprette en regel.

  3. Angiv følgende indstillinger i overskriften for den nye regel:

    • Dynamisk regel for arbejdsklassificering – angiv et navn til reglen.
    • Description – angiv en kort beskrivelse af reglen.
    • Regelområde – angiv, hvornår reglens formler skal køres under oprettelsen af arbejdet, og hvilke data de kan referere til. Området bestemmer, om klassificering kun anvendes på arbejdshovedniveau eller også på det oprindelige arbejdslinjeniveau. Vælg en af følgende værdier:
      • Work – formlen kører én gang, når arbejdshovedet er oprettet. Brug dette område, når klassificering kun afhænger af egenskaber på headerniveau, f.eks. fragtmanden eller transporttiden.
      • Arbejds- og startarbejdslinjer – formlen kører to gange. Når den første plukarbejdslinje vælges, evaluerer systemet først en separat formel for den indledende arbejdslinje og anvender tilsidesættelser på den pågældende linje. Når alle indledende arbejdslinjer er indsamlet, kører systemet hovedformlen i forhold til arbejdshovedet. Brug dette område, når klassificeringen afhænger af egenskaber på elementniveau, f.eks. plukzonen.
  4. I oversigtspanelet Genberegning skal du angive følgende indstillinger for at styre, hvordan og hvornår reglen skal evalueres igen, hvis en belastning ændres efter oprettelsen af det første arbejde:

    • Omklassificeringsplan-id – Denne indstilling er reserveret til fremtidig brug og har ingen effekt i den aktuelle version.
    • Omklassificer arbejde ved opdatering af indlæsning – angiv denne indstilling til Ja for at køre klassificeringen igen, hver gang en belastning, der er knyttet til arbejdshovedet, ændres. Denne indstilling sikrer, at alle opdateringer af belastningen afspejles i arbejdsklassificeringen. Denne indstilling gælder kun, hvis parameteren Work classification on load update er angivet til at tillade omklassificering (se forrige afsnit).
  5. I Power Fx-formel FastTab skal du angive en formel, der returnerer en record med de felter, du vil tilsidesætte. Se de næste afsnit for at få flere oplysninger om skrivning af formler.

  6. Hvis regelomfanget er angivet til Arbejds- og indledende arbejdslinjer, indeholder siden et formelpanel for første arbejdslinje . Denne formel køres, når den første arbejdslinje tildeles til en ny arbejdspost. Se de næste afsnit for at få flere oplysninger om skrivning af formler.

Tip

  • Brug knappen Kopiér i handlingsruden til at duplikere en eksisterende regel som udgangspunkt for en ny.
  • Brug knappen Eksempel til at teste en regel i forhold til en eksisterende arbejdsoverskrift og se resultaterne uden at foretage ændringer.
  • Knappen Tidsplaner for omklassificering af arbejde er reserveret til fremtidig brug og har ingen effekt i den aktuelle version.

Skriv formler til arbejdsklassificering

I oversigtspanelet Power Fx-formel for hver klassificeringsregel skal du angive en formel, der returnerer en post med et eller flere af følgende felter.

I følgende tabel beskrives de felter, som en formel til arbejdsklassificering kan returnere.

Felt Type Beskrivende tekst
WorkPoolId String Tilsidesætter arbejdspuljen på det oprettede arbejde.
DefaultWorkPriority Nummer Tilsidesætter prioriteten for det oprettede arbejde.
DirectiveCodeOverrides Post En post, hvor hvert feltnavn er en placeringsdirektivkode, der skal erstattes, og værdien er den nye direktivkode. Gælder for alle pick/put-par.
WorkClassOverrides Post En post, hvor hvert feltnavn er en arbejdsklasse, der skal erstattes, og værdien er den nye arbejdsklasse. Gælder kun for det andet og efterfølgende pick/put-par. Hvis du vil ændre arbejdsklassen for det første pick/put-par, skal du i stedet bruge formlen for den indledende arbejdslinje.

I følgende eksempel vises en formel, der returnerer alle fire felter.

{
    WorkPoolId: "PoolA",
    DefaultWorkPriority: 100,
    DirectiveCodeOverrides: {
        BAYDOOR: "BAYDOOR-C1",
        STAGING: "STAGING-C1"
    },
    WorkClassOverrides: {
        'Standard Class': "Express Class"
    }
}

Vigtigt!

Hvis du returnerer Blank() et felt (eller udelader det), bevares den oprindelige værdi fra arbejdsskabelonen. Hvis du returnerer en tom streng (""), ryddes værdien aktivt. Hvis du f.eks. vender tilbage Blank() for WorkPoolId , bevares den arbejdspulje, der blev angivet på arbejdsskabelonen, mens returnering "" fjerner arbejdspuljen helt.

Tilgængelige dataobjekter til arbejdsformler

I følgende tabel vises de objekter, du kan referere til i en formel til arbejdsklassificering.

Objekt Beskrivende tekst
workTable Den arbejdsoverskrift, der blev genereret.
workTable.Load Den belastningspost, der er knyttet til arbejdshovedet.
workTable.Shipment Den forsendelsesregistrering, der er knyttet til arbejdsoverskriften.
workTable.Wave Den bølgeoptagelse, der er knyttet til arbejdsforsiden.
workTable.Appointment Den første TMS-aftale (Transportation Management), der er knyttet til belastningen.

Skriv formler for indledende arbejdslinje

Hvis du angiver regelområdet til Arbejds- og startarbejdslinjer, skal du angive en ekstra formel i oversigtspanelet Formel for første arbejdslinje . Denne formel kører, når den første plukarbejdslinje tildeles til en ny arbejdspost og kan tilsidesætte følgende felter.

Felt Type Beskrivende tekst
WorkPoolId String Tilsidesætter arbejdspuljen på den oprettede arbejdsheader.
WorkClassId String Tilsidesætter arbejdsklassen for de indledende pluk-/læg-arbejdslinjer.

Tilgængelige dataobjekter til formler for indledende arbejdslinje

I følgende tabel vises de objekter, du kan referere til i en formel for den indledende arbejdslinje.

Objekt Beskrivende tekst
workLine Den indledende plukarbejdslinje, der blev genereret.
workLine.InventTable Varemasterposten for den vare, der er i gang med at blive plukket.
workLine.WHSInventTable Indstillingerne for lageremne for det emne, der bliver plukket.
workLine.Load Den belastningspost, der er knyttet til arbejdslinjen.
workLine.LoadLine Den belastningslinje, der er knyttet til den indledende pluklinje.
workLine.Shipment Den forsendelsespost, der er knyttet til arbejdslinjen.

Knyt regler til arbejdsskabeloner

Når du har oprettet en klassificeringsregel, skal du knytte den til den arbejdsskabelon, der skal bruge den. Under oprettelsen af arbejdet evaluerer systemet reglens formel og anvender de returnerede tilsidesættelser på det genererede arbejde.

Gå tilOpsætning> afarbejdsarbejdsskabeloner> for >, vælg en skabelon, og angiv feltet Regel for dynamisk arbejdsklassificering til den regel, du vil bruge til skabelonen.

Bemærkning

Når du bruger dynamisk arbejdsklassificering sammen med en arbejdsskabelon, skal du sørge for, at indstillingerne for gruppering af skabelonen stemmer overens med din formellogik. Hvis formlen f.eks. klassificerer arbejde baseret på zone, skal arbejdsskabelonen gruppere oprettelse af arbejde efter zone, så hvert arbejdshoved kun indeholder linjer fra én zone.

Eksempler

Følgende eksempler illustrerer almindelige scenarier, hvor dynamisk arbejdsklassificering kan forenkle konfigurationen.

Eksempel 1: Angiv arbejdspulje og prioritet efter transportør

Et lager bruger tre fragtmænd, der afhenter forsendelser på forskellige tidspunkter i løbet af dagen. Lagerchefen vil dirigere hver fragtmands arbejde til en separat arbejdspulje og tildele den tidligste afhentning højere prioritet.

Uden dynamisk klassificering kræver denne konfiguration tre arbejdsskabeloner. Hver skabelon filtrerer efter en anden operatørkode, hver med sin egen arbejdspulje og prioritetsindstillinger.

Med dynamisk klassificering håndterer en enkelt arbejdsskabelon og én regel alle tre bærere.

Switch(workTable.Load.CarrierCode,
    "Carrier1", {WorkPoolId: "Carrier1", DefaultWorkPriority: 100},
    "Carrier2", {WorkPoolId: "Carrier2", DefaultWorkPriority: 50},
    "Carrier3", {WorkPoolId: "Carrier3", DefaultWorkPriority: 10}
)

Hvis du senere tildeler belastningen til en anden operatør, kan systemet automatisk omklassificere arbejdet, når omklassificering ved indlæsningsopdatering er slået til.

Eksempel 2: Direkte indsætning til transportørspecifikke porte

På baggrund af eksempel 1 ønsker lagerchefen også udgående førlinjer, som bliver dirigeret til forskellige båsedøre, afhængigt af, hvilken transportør der bruges. Med statisk konfiguration skal hver arbejdsskabelon have en anden placeringsdirektivkode.

Med dynamisk klassificering kan du føje tilsidesættelser af direktivkode til den samme formel.

Switch(workTable.Load.CarrierCode,
    "Carrier1", {
        WorkPoolId: "Carrier1",
        DefaultWorkPriority: 100,
        DirectiveCodeOverrides: {BAYDOOR: "BAYDOOR-C1"}
    },
    "Carrier2", {
        WorkPoolId: "Carrier2",
        DefaultWorkPriority: 50,
        DirectiveCodeOverrides: {BAYDOOR: "BAYDOOR-C2"}
    },
    "Carrier3", {
        WorkPoolId: "Carrier3",
        DefaultWorkPriority: 10,
        DirectiveCodeOverrides: {BAYDOOR: "BAYDOOR-C3"}
    }
)

Eksempel 3: Prioriter arbejde efter afsendelsesfrist

I stedet for at klassificere efter transportør prioriterer dette eksempel arbejde baseret på, hvor tæt belastningen er på den planlagte transporttid. Belastninger med tidligere deadlines får højere prioritet, hvilket sikrer, at medarbejderne vælger de mest tidsfølsomme ordrer først.

Følgende formel konverterer den planlagte afsendelsestid til en numerisk prioritet. En forsendelse, der er planlagt til kl. 9:00, bliver prioritet 900, mens en forsendelse kl. 15:00 bliver prioritet 1500.

{
    DefaultWorkPriority:
        If(Not(IsBlank(workTable.Load.LoadSchedShipUTCDateTime)),
            If(IsToday(workTable.Load.LoadSchedShipUTCDateTime),
                Hour(workTable.Load.LoadSchedShipUTCDateTime) * 100
                    + Minute(workTable.Load.LoadSchedShipUTCDateTime),
                3000),
            Blank())
}

Formlen tildeler en prioritet på 3000 til belastninger, der er planlagt for en fremtidig dag (ud over den maksimale tidsbaserede prioritet på 2359) og returnerer for belastninger Blank() uden planlagt dato, hvilket bevarer arbejdsskabelonens standardprioritet.

En alternativ tilgang beregner prioriteten baseret på det antal minutter, der er tilbage indtil afsendelsesfristen.

{
    DefaultWorkPriority:
        If(Not(IsBlank(workTable.Load.LoadSchedShipUTCDateTime)),
            If(IsToday(workTable.Load.LoadSchedShipUTCDateTime),
                Max(0, DateDiff(Now(), workTable.Load.LoadSchedShipUTCDateTime,
                    TimeUnit.Minutes)),
                24 * 60),
            Blank())
}

Vigtigt!

Fremgangsmåden baseret på resterende tid kræver, at omklassificeringsbatchjobbet køres i henhold til en tilbagevendende tidsplan (f.eks. hver time) for at holde prioriteterne opdaterede. Afhængigt af antallet af åbne arbejdsoverskrifter kan dette krav føje belastning til systemet. Metoden time-of-day (første formel) er mere effektiv, fordi arbejde kun skal omklassificeres, når belastningens planlagte forsendelsestid ændres.

Eksempel 4: Klassificer arbejde efter plukzone

I dette eksempel tildeles en anden arbejdsklasse til det indledende pluk/sæt-par baseret på den zone, hvor elementer plukkes. Valg fra en frysezone kan f.eks. begrænses til arbejdere med passende koldt vejrudstyr.

Hvis du vil bruge denne fremgangsmåde, skal du angive regelområdet til Arbejde og indledende arbejdslinjer og konfigurere arbejdsskabelonen til at gruppere arbejde efter zone. Denne konfiguration sikrer, at hvert arbejdshoved kun indeholder linjer fra én zone.

Formlen for den indledende arbejdslinje sammenkæder et præfiks med zone-id'et for at oprette en zonespecifik arbejdsklasse.

{
    WorkClassId: Concatenate("S-", workLine.ZoneId)
}

Du kan også angive arbejdspuljen i stedet for arbejdsklassen.

{
    WorkPoolId: Concatenate("S-", workLine.ZoneId)
}