Repository navigation
Utvikling
app.json Appen (78900–78950)
Src/<Objekttype>/ AL-kode, én mappe per objekttype
Tests/app.json Testappen (70000–70049)
Tests/*.al.test Testkode. Filendelsen gjør at hovedappen ikke kompilerer den
scripts/Build.ps1 Bygger app og testapp med analysatorer
Docs/ Spesifikasjon, brukerveiledning, forslag og wiki-kilde
- Følger AL-Development-Guidelines:
KBS-suffiks på alle objekter,Src/<Objekttype>/<Navn>.<Type>.al, og CodeCop, UICop og PerTenantExtensionCop aktive. - Navnerom
Knowit.DeliveryPlanner. - Brukertekster (Caption, ToolTip, Label) skrives på norsk bokmål. Telemetritekster og tagger er engelske og har
Locked = true. -
AllowInCustomizationssettes på objektnivå: AsReadWrite for oppsett, AsReadOnly for logger og Never for midlertidige tabeller. - Nye felt på eksisterende oppsett, som ikke kan bruke
InitValue, får standardverdi iDP Upgrade KBSbak en upgrade tag.
Fra VS Code: AL: Package med analysatorene aktive (se .vscode/settings.json).
Fra kommandolinjen:
.\scripts\Build.ps1 # app
.\scripts\Build.ps1 -Tests # app og testappBuild.ps1 finner ikke kompilatoren i AL-utvidelse 18.1, fordi alc.exe og analysatorene nå ligger direkte i bin. På Windows ARM64 starter heller ikke x64-versjonen av alc.exe. Kompiler da slik:
$bin = "$env:USERPROFILE\.vscode\extensions\ms-dynamics-smb.al-<versjon>\bin"
dotnet "$bin\alc.dll" /project:<kopi av app> /packagecachepath:.alpackages /out:DeliveryPlanner.app `
"/analyzer:$bin\Microsoft.Dynamics.Nav.CodeCop.dll" `
"/analyzer:$bin\Microsoft.Dynamics.Nav.UICop.dll" `
"/analyzer:$bin\Microsoft.Dynamics.Nav.PerTenantExtensionCop.dll"Testappen kompileres på samme måte. Kopier Tests/*.al.test til .al-filer i en midlertidig mappe sammen med Tests/app.json, og bruk en pakkemappe som inneholder den bygde DeliveryPlanner.app.
| Codeunit | Dekker |
|---|---|
| 70001 DP Allocation Tests KBS | Fordeling, metning, kolli, dager med dekning |
| 70002 DP Inventory Tests KBS | Salgstakt, utsolgte dager, inngående, utgående, reservasjoner |
| 70003 DP Workflow Tests KBS | Låst kladd |
| 70004 DP Item Maximum Tests KBS | Makslager fra varekortet |
| 70005 DP Location Settings Tests KBS | Masseoppdatering av lokasjoner |
| 70006 DP Delivery Schedule Tests KBS | Leveringsdager og transporttid |
| 70007 DP Exception Tests KBS | Avvikstyper og oppsettskontroll |
| 70008 DP Monitoring Tests KBS | Godkjenning, nøkkeltall og sletting av logger |
| 70010 DP Test Data KBS (codeunit og side) | Testdata for manuell test i sandkasse |
Testene bruker TransactionModel::AutoRollback. Kode som testes, kan derfor ikke kalle Commit. Det er grunnen til at DeleteOldRuns ikke gjør Commit selv, men overlater det til Execute.
Testene for leveringsplan regner forventet mottaksdato med samme rutefunksjon. Grunnen er at selskapets basiskalender kan flytte datoer i testmiljøet.
-
andogorkortslutter ikke. Iwhile HasRow and (Query.Posting_Date = Day)leses kolonnen også nårHasRower usann, og det gir kjøretidsfeil. Mellomlagre verdien, eller bruk nøstedeif. -
Validering kan kalle
Modify.Transfer-from Codepå Stockkeeping Unit kallerModify(true)iOnValidate. Sett derfor inn posten før du validerer feltet. -
Codeunit.Runmed returverdi krever at det ikke finnes en åpen skrivetransaksjon. GjørCommitfør e-post sendes. -
Ikke
Commiti worker.CommitBehavior::Errorgjør at det feiler med en gang. - AL-språktjenesten i VS Code viser ofte gamle feil etter at filer er endret utenfor editoren. Kjør Developer: Reload Window før du stoler på problemlisten.
- Appen bruker 78900–78950. Området ble flyttet fra 62100–62149 fordi tabell 62100 var i bruk av en annen app i kundens miljø.
- DeliveryPlanner står ikke i listen over delte apper i AL-Development-Guidelines. Listen bør oppdateres.
- Lag en branch fra
main, og opprett pull request motmain. - Ta med
AB#<arbeidsoppgave>i tittel eller beskrivelse, slik at den kobles til DevOps. - Kompiler app og testapp uten advarsler, og kjør testappen i sandkasse før merge.
- Ikke commit Word-låsefiler (
~$*.docx).