Er dobbelt kontrol bedre?

Ja, det er det vel. Men der er vel grænser for hvor mange gange ting skal kontrolleres?

 

I Dynamics NAV 2016 CU4 og CU6 (vi har ikke testet ældre end CU6, men de har formentligt også fejlen), bliver udbetalingskladdelinjer kontrolleret RIGTIGT grundigt ifm. udlæsning af bankfil.

 

Vi har kun testet DANSKEBANK, men det er muligt at de andre bankformater benytter samme codeunits og dermed har samme fejl. Vi har heller ikke testet Dynamics C5 version 2016, men den kan potentielt have samme fejl.

 

Fejlen kan genskabes med CRONUS Danmark A/S regnskabet sådan her:

  • Standard NAV 2016 CU6 DK med CRONUS Danmark A/S
  • Ret Codeunit 1550, funktion CheckGenJournalBatchHasUsageRestrictions ved at tilføje en MESSAGE så vi kan se fejlen selv ved få kladdelinjer:
CheckRecordHasUsageRestrictions(GenJournalBatch.RECORDID);

GenJournalLine.SETRANGE("Journal Template Name",GenJournalBatch."Journal Template Name");
GenJournalLine.SETRANGE("Journal Batch Name",GenJournalBatch.Name);
IF GenJournalLine.FINDSET THEN
  REPEAT
    CheckRecordHasUsageRestrictions(GenJournalLine.RECORDID);
    //SC1.00<
    MESSAGE('%1,%2,%3',Genjournalline."Journal Template Name",GenJournalLine."Journal Batch Name",GenJournalLine."Line No.");
    //>SC1.00
  UNTIL GenJournalLine.NEXT = 0;
  • Åben “Bank Konto” siden og ret KB-KASSEKREDIT. Sæt Format til eksport af betaling=DANSKEBANK
  • Åben “Finanskladdetyper” billedet, vælg UDBETALING og Naviger/Navne fra menuen. Afkryds Tillad eksport af betaling ud for BANK kladden
  • Åben “Udbetalingskladden” BANK
    Tryk “Lav Forslag”. Sidste betalingsdato=01-03-2018, Bogføringsdato=01-03-2018, Start Bilagsnr.=1. Afgræns til kun at lave betalinger for debitor 10000.
    Tryk “Eksporter betalinger til fil…”

Bemærk at hver linje kontrolleres flere gange (der kommer flere dialogbokse med samme linjenr.) – faktisk en gang pr. antal linjer i kladden.
Dvs. her er der 5 linjer og de kontrolleres hver 5 gange (25 kald af kontrollen).
Udlæsningen fejler i denne test med en række fejl – men det er ligegyldigt i denne sammenhæng (skyldes yderligere manglende opsætning).

Nu er 25 kald af kontrollen ikke noget at pive over, men vi har set fejlen hos en kunde med over 3.000 betalinger – og her bliver kontrollen kaldt 9.000.000 gange mere end nødvendigt. Og det tager altså tid – laaaang tid! (mindst ½ time ekstra).

Fejlen kan umiddelbart løses ved at ændre ovenstående codeunit således at kun den øverste linje i funktionen beholdes.
Det er dog ikke kontrolleret om det medfører fejl hvis der benyttes andre bankformater eller når funktionen kaldes fra andre steder i applikationen (hvis den gør det).
I ovenstående scenarie kaldes funktionen i codeunit 1550 via integration event GenJnlBatch.OnCheckGenJournalLineExportRestrictions (codeunit 1211) fra codeunit 13672 (og det er der det yderste loop der gennemløber linjerne findes).
Fejlen er naturligvis indmeldt til Microsoft og vi forventer at den løses i en kommen Cumulative Update til Dynamics NAV 2016.
Opdateringer:
  • 11/5-2016: Vi har haft et foreløbigt fix til gennemsyn. Fixet løser problemet lidt anderledes ved at bygge en liste over allerede kontrollerede linjer i en temp-tabel. Og så naturligvis kun kontrollere linjerne hvis de ikke tidligere har været kontrolleret.
    Så vidt vides går løsningen nu i test internt hos Microsoft og bliver så released i en kommende cumulative update – et kvalificeret gæt er CU8 som forventes i juni.
  • 23/5-2016: Supportsagen er nu lukket hos Microsoft med bekræftelsen af at den kommer med i CU8.