Nå, ikke rigtig „Intelli“ som i „Intelli“-herre. Men stadig meget hurtig og meget hjælpsom.
Hvis du allerede har kigget på min side her, vil du hurtigt opdage, at jeg stadig er en stor fan af C/Side-udviklingsmiljøet, inklusive den klassiske navision-klient.
Og helt ærligt: Jeg savner både rapportgeneratoren (du må have set den! Ingen sammenligning med nutidens RDLC-hokuspokus) og den faktiske programmering i CSide (C/Side). Ctrl+f12 for at komme til funktionsmålet i programkoden? Det kan du godt! Syntaksfremhævelse i C/Side? Det virker! Praktisk valg af variabler og kommandoer? Ja, det kan du! Eller... ikke helt. Objektvalget i Classic Client har altid været rigtig fedt for mig og også rigtig hurtigt, men jeg savner lidt autofuldførelsen („Intellisense“) i C/Side i de nyere Navision-versioner i den gamle version... Alt er stadig meget hurtigere end i AL, især den utrolige rapportgenerator fra dengang! Bortset fra den farvede skrifttype savner jeg stadig ikke noget! Heldigvis kan du også forenkle dit liv lidt her!
Ac'tivAid (Active Aid) til AutoHotKey-automatiseringsværktøjet til C/Side!
Du skal bare bruge Hot Strings fra ac'tiv Aid Toolbox! Du kan finde den version, jeg bruger, her:
Ac'tive Aid-udviklerversion af ?Michael Telgkamp?
Hvis du er på udkig efter mere information om Autohotkey-værktøjet, kan du finde interessante ressourcer her:
Ny Autohokey-version med Qt
C't-artiklen giver en god introduktion
Hvad er ac'tive Aid (ac'tivAid, Active Aid, ActiveAid) eller Auto-Hotkey? Kort sagt: et scriptmiljø, der er nemt at programmere til dine egne værktøjer. Lyder det bekendt for dig? Ja, lige præcis! Det er et perfekt match til vores elskede, letprogrammerede scriptmiljø Navision og Business Central 🙂 .
Screenshot-funktion i ac'tivAid/AutoHotKey
Jeg er også vild med screenshot-funktionen i ac'tivAid. Jeg sætter den op, så den simpelthen kopierer det aktuelle vindue og åbner det direkte i IrfanView. Der kan jeg så nemt trække det ønskede udsnit i fuld opløsning eller trykke på F12 for at få tegnefunktionen og hurtigt markere en rød boks omkring det interessante område. Næsten alle skærmbillederne på denne hjemmeside er taget med den. Jeg har stadig ikke fundet et enklere og hurtigere værktøj ... . Og jeg har prøvet mange. Lidt ligesom Navision/Business Central 🙂 .
Navision eller Business Central Hotstrings i ac'tivAid
Tilbage til HotStrings og „IntelliSense“ under Navision eller Business Central:
Jeg har kigget på de værste fingerbreakers fra C/Side (CSide), som f.eks.
createdatetime(arbejdsdato,tid),
strsubstno(‚)‚,
Hvis rec.findset så gentag [...] indtil rec.next = 0;
simpelthen placeret på en forkortelse.
Det kan man for eksempel se med createdatetime(arbejdsdato,tid) sådan her:

Resultatet er, at jeg nu blot kan indtaste forkortelsen i enhver (!) Business Central & Navision, selv i DOS-versionen af Navision (3.53 og 3.56). cdt( og ac'tivAid forvandler det til createdatetime(arbejdsdato,tid). Selvfølgelig virker cdt-kommandoen ikke under Navision 3.5x, da den endnu ikke findes. Men hvis du bruger DOS Navision, har du alligevel brug for andre kommandoer, f.eks. dbFINDSET i stedet for rec.findset osv. Fun fact: Vidste du, at udviklingssproget i det gamle DOS Navision 3.53/3.56 allerede hed CAL, dvs. praktisk talt det AL (Application Language), som findes i Visual Studio Code i dag?
Princippet er dog det samme for begge og fungerer derfor i alle Navision eller Business Central.
Jeg har gemt disse tekstmoduler i den mest brugte version. For eksempel createdatetime(arbejdsdato,tid) intet semikolon i slutningen. Find først Jeg bruger normalt varianten Hvis findfirst så..., Derfor har jeg findførst så gemt. Jeg bruger den indledende parentes med de fleste kommandoer, selv om du f.eks. bruger den med FindFirst forekommer slet ikke. Så jeg skriver hvis rec.ff( og activAid forvandler det til C/Side hvis rec.findfirst så Den indledende parentes slettes med det samme.
Endnu mere specielt er den tusindfold anvendte konstruktion:
hvis rec.findset så gentag
indtil rec.next = 0;
Men bortset fra det har stort set alle Navision- eller Business Central C/Side-udviklere allerede skrevet dette loop tusindvis af gange, f.eks. i denne form:
hvis Cust.findset så gentag
indtil Cust.next = 0;
(med noget imellem, selvfølgelig. Og noget forkortet, selvfølgelig skal det være Customer, men „dengang“ var variabler i CSide ofte forkortede. De havde kun 128, senere 132 tegn i linjelængde).
Scriptfunktioner til Business Central & Navision Hotstrings
Her bruger jeg HotString-scriptfunktionerne fra ac'tivAid-scriptsamlingen til AutoHotKey-køretiden:
Send ^{venstre}
Send {CTRLDOWN}{SHIFTDOWN}{RIGHT}.
Send ^c
Send {CTRLUP}{SHIFTUP}{End}.
Send findset og gentag derefter
Send {Indtast 2}
Send indtil ^v
Send .next = 0;
Send {Hjem}{Op}{Rum}{Rum}
Hvad er pointen?
Jeg skriver i Navision eller Business Central, for eksempel.
hvis cust.fs( - Intet andet.
Scriptet sletter først delen fs(, (på grund af indstillingen „Erstat direkte (ellers på mellemrum, Enter ...)), springer derefter til venstre, kopierer RecordPart Cust., hopper til højre igen, trykker på findset og gentag derefter, laver et linjeskift og indsætter derefter dels som tekst, dels som indhold i det tidligere udfyldte udklipsholder indtil Cust.next = 0; i.
Fordi selve record-delen trækkes fra C/Side-input via Copy, er det ligegyldigt, om jeg i dette tilfælde har skrevet Cust, hentet den fra objektmenuen via F5 eller hentet den fra udklipsholderen via CTRL+V.
Ovenstående script passer nøjagtigt til C/side-klienten op til version 2009R2. Derefter er springet ved specialtegnet . ændret, så til C/Side-efterfølgerversionerne af Navision og Business Central, f.eks. NAV 2013 eller NAV 2016, skal det tilpasses lidt. Om indstillingen ac'tivAid „Kun“ eller „Ikke“ for program Dette kunne endda automatiseres i en sådan grad, at den samme forkortelse kunne bruges i både den klassiske C/Side-klient og RTC C/Side-klienten.

Jeg har gemt de mest almindelige Business Central- eller Navision-kommandoer i den hyppigst anvendte form:
cdt( for createdatetime(arbejdsdato,tid)
ff( for findfirst then (hvis findfirst then)
fl( for findlast then (hvis findlast then)
intloop for if Number = 1 then begin... if not rec.findset then CurrReport.BREAK end else if rec.next = 0 then CurrReport.BREAK; - vores foretrukne loop, når vi arbejder med midlertidige poster i rapporter som f.eks. artikel top 10 eller debitor top 10.
sf( for setfilter(
sr( for setrange(
sk( for setcurrentkey(
sss( for strsubstno('
tf( for testfelt(
fs( for if rec.findfirst then repeat...until rec.next = 0;
Flere HotStrings / genvejstaster i AutoHotKey
I HotString har jeg endnu flere tekstmoduler, f.eks. mine generelle vilkår og betingelser, automatiserede tekster til afslag til headhuntere og meget mere. Fordelen er, at du ikke kun har disse tekstmoduler til rådighed i ét bestemt program, f.eks. Word eller Outlook, men i alle programmer på samme tid!
I alle versioner af Business Central eller Navision med det klassiske udviklingsmiljø C/Side (CSide) hjælper denne bruger-hotstring i Ac'tiveAid / Autohotkey også med at tildele billedteksten korrekt meget hurtigt!
Som en påmindelse: Mange af os bruger sikkert muligheden for blot at skrive navn og titel på et felt. Det er „i sig selv“ egentlig nok, Navision kan så vise billedteksten på tysk og navnet på engelsk.
Men det er ikke rigtigt! Senest fra Navision Dynamics 2015 falder denne dovenskab til jorden, og Navision viser ikke længere noget på engelsk eller fortsætter med at vise den tyske billedtekst (har vist ændret sig i mellemtiden). Så der er kun én måde at arbejde på: Udfyld straks billedteksten korrekt!

Et stykke kage med denne UserHotkeys!


+{F4}{PgUp 4}{Right}{Down}^c{Down 2}{F2}{F2}{F2};enu=^v{Enter}{Esc}
Tryk Ctrl+F12 hvor som helst (!) i linjen eller i egenskaberne for denne linje, og Ac'tiveAid eller Authotkey springer til toppen, derefter 2 linjer ned til egenskaben Name, kopierer værdien der, går 2 linjer længere ned, trykker F2 to gange (for at springe til slutningen af værdien til redigering) og indsætter ;enu= plus udklipsholderen der. Ikke flere undskyldninger for dovenskab!
Sendeforsinkelsen er meget vigtig her, ellers er Autohotkey simpelthen for hurtig til Navision, og F2 går tabt!
Vigtigt: Sæt Navision op (op til 2009R2), så navn og billedtekst er direkte tilgængelige i tabeldefinitionen, og indtast så den engelske term i Name og den tyske term i Caption... scriptet må kunne skelne mellem de to et eller andet sted fra, ikke sandt?
De animerede skærmbilleder viser ikke de to kolonner, så det må se sådan ud:

På denne måde kan du indstille CaptionML korrekt direkte i linjen, som vist her i skærmbilledet, eller endda i egenskaberne, som vist i animationen, i alle C/Side-udviklingsmiljøer fra Navision 3.70 (før det var Multilanguage endnu ikke rigtig stabilt ...) op til Navision 2018 eller BC14 blot ved at trykke på Ctrl+F12 fra de to indgange.

Endnu flere genvejstaster/genveje i Navision & Business Central C/Side
Brug udklipsholderen aktivt
Brug genvejene CTRL+G til globals (globale variabler) og CTRL + L til locals (lokale variabler). Husk også, at du kan rulle gennem fanebladene i C/Side på samme måde som i ClassicClient og i Excel ved at bruge CTRL+BILLEDE op og CTRL+BILLEDE ned!
Med Ctrl+L (for lokale variabler) og 2 x CTRL+PICTUREdown kan du skifte til den lokale variabelerklæring i C/Side uden at bruge musen. Dit karpaltunnelsyndrom vil takke dig...
„Slå “lokal" fra i funktioner? CTRL+ (Globals), 2 x CTRL+BILLEDE ned (for at komme til siden Funktioner), vælg funktion, Shift+F4. Shift+F4 åbner egenskaberne i hele S/Side Client. Ja med Lokal Slet, Overskriv ikke med Nej!
En anden funktion, der er opstået på baggrund af en kundehenvendelse:
Automatisk skift af licens ved opstart af Navision Financials/Attain. Det har man brug for, hvis man f.eks. er i gang med at skifte mellem Classic Client og RTC Client. Modern UI er noget helt andet igen, da der ikke længere er en lokal licens, det er kun Navision Service, der har en. Man kan også bruge det samme script til lettere at arbejde med en „flown-in“ udviklerlicens.
Påmindelse: fin.exe og finsql.exe accepterer ikke længere Licence= eller Keyboxpath= som parametre.
Som en påmindelse: Navin.exe fra Navision DOS 3.53, 3.56 osv. kunne stadig startes med parameteren Keyboxpath=c:\temp\navi_inf.dat,serialno=databaseserverens licensnummer og dermed bruge en anden licens (f.eks. en udviklerlicens) med det samme ved opstart. Mere om det gamle Navision her og her. Men endnu flere artikler på min side handler om den geniale DOS Navision! Og Jeg er her også stadig 🙂 .
Dette script hjælper med Ac'tiveAid:
(følger senere)
