Fejl ved genaktivering af en sag...og løsningen herpå

Man skal passe på hvilken kode man indsætter i OnSave-eventen på formularer. I visse tilfælde kan det give en fejl når man f.eks. forsøger at genaktivere objekter, som f.eks. objektet Sager, og det er netop hvad dette indklæg handler om.

Problemet

En Sag er er afsluttet, men den forsøges genaktiveret, hvilket normalt ikke er et problem. Åbn Sagen og vælg Handlinger, Genaktiver. Følgende fejlmeddelelse fremkommer:

 

 

I ovenstående tilfælde handler det om, at der er indlagt kode på formularens OnSave-event, som blokerer for genaktiveringen. Koden var:

crmForm.all.<feltnavn>.ForceSubmit = true;

Problemet er, at når man genaktiverer en Sag, så kører formularens OnSave-event, og dermed ovennævnte kode. I dette tilfælde er det særdeles uheldigt - og ikke "best practice" at gennemtvinge ForceSubmit i en OnSave-event. Læs mere herom senere i dette indlæg.

 

Løsningen

Fjern ovennævnte kode fra OnSave-eventen. Hvis koden er nødvendig så placer den andetsted, se herunder.

 

Om egenskaben ForceSubmit

I mange tilfælde har man behov for at udfylde et felt, når det er skrivebeskyttet (read-only) eller vil blive indstillet til skrivebeskyttet (read-only) dynamisk. Felter som er indstillet skrivebeskyttet (read-only) vil dog ikke blive opdateret når man klikker på Gem eller Gem og luk. Det er netop her egenskaben ForceSubmit kommer til sin ret.

For at få et skrivebeskyttet (read-only) felt opdateret, kan man indstille ForceSubmit på feltet til true ved hjælp af javascript:

crmForm.all.<feltnavn>.ForceSubmit = true;

I realiteten sker der det, at ForceSubmit altid vil gemme den værdi der måtte være i feltet, også selv om feltet er tomt. Hvilket egentlig er i orden.

I ovenstående scenarie volder ForceSubmit problemer, idet koden køres fra OnSave-eventen, hvilket ikke accepteres når man genaktiverer en Sag. Faktisk bør man ikke anvende egenskaben ForceSubmit i OnSave-eventen, men i stedet benytte den i forbindelse med den kode, som i forvejen opdaterer det skrivebeskyttede felt (OnChange-eventen), som f.eks.:

crmForm.all.<feltnavn>.DataValue= '';
crmForm.all.<feltnavn>.ForceSubmit= true;

 

Om Henrik Jensen

Jeg har altid fingeren på pulsen når det drejer sig om Microsofts produkter & teknologier, og især når det handler om Microsoft Dynamics CRM.

Henrik Jensen

Jeg har arbejdet professionelt i IT-branchen mere end 16 års, deraf 12 år med CRM-systemer, og samtidig indehaver af mere end 30 Microsoft-certificeringer.

Jeg er ansat som Microsoft Dynamics CRM-arkitekt hos Logica.

Læs mere...

Downloads, værktøjer og installation

Downloade komponenter til MS CRM:
    • Microsoft Dynamics CRM 4.0
    • Microsoft Dynamics CRM 2011

Liste over Opdateringspakker (Rollups):
    • Microsoft Dynamics CRM 4.0
    • Microsoft Dynamics CRM 2011

Værktøjer til MS CRM 2011:
    • Liste med værktøjer til MS CRM 2011

Krav vedrørende installation:
    • Installation: Krav og opsætninger

Månedsliste

Forbehold

Alt hvad du læser på denne blog er alene udtryk for mine egne holdninger og meninger, og kan ikke henføres til andet end som så.

De løsninger jeg fremstiller på denne blog er ikke nødvendigvis testet i et driftsmiljø. Hvis du gør brug af mine løsninger er det på eget ansvar.