IntelliSense en Navision Classic Client/Cside

Nav123: Navision, Showare, OrderApp

Print Friendly, PDF & Email

Bueno, no realmente "Inteli" como en "Inteli "gente. Pero aún así muy rápido y muy útil.
Wenn Sie bereits auf meiner Seite hier etwas gestöbert haben, stellen Sie schnell fest, das ich noch ein unverändert großer Fan der C/Side-Entwicklungsumgebung bin, auch der des Classic Clients von navision.
Und, im ernst: Ich vermisse sowohl beim Report-generator (den müssen Sie mal gesehen haben! Kein Vergleich mit dem RDLC-gemurkse von heute) wie auch bei der eigentlichen Programmierung in CSide (C/Side) praktisch nichts. Strg+f12 um im Programmcode zum Funktionsziel zu gelangen? Geht! Syntax Highlighting in C/Side? Geht! Komfortables Auswählen von Variablen & Befehlen? Geht! Nun… nicht so ganz. Die Objektauswahl im Classic Client war für mich schon immer ganz cool und auch ganz schnell, aber Autovervollständigen („Intellisense“) von C/Side der neueren Navision-versionen vermisse ich nun doch schon ein wenig in der alten Version… Geht alles trotzdem noch welten schneller als in AL, allem voran der unglaubliche Report-Generator von damals! Außer farbiger Schrift vermisse ich an dem bis heute nichts! Zum Glück kann man sich auch hier das Leben etwas vereinfachen!

Ac’tivAid (Active Aid) für das automatisierungstool AutoHotKey für C/Side!

Sólo tienes que utilizar Hot Strings de la ac'tiv Aid Toolbox. Puede encontrar la versión que yo utilizo aquí:
Ac'tive Aid versión para desarrolladores de 'Michael Telgkamp?
Si buscas aún más información sobre la herramienta Autohotkey, aquí encontrarás lugares interesantes para empezar:
Nueva versión de Autohokey con Qt
El artículo de C't ofrece una buena introducción

¿Qué es ac'tive Aid (ac'tivAid, Active Aid, ActiveAid) o Auto-Hotkey? En pocas palabras: Un entorno de scripts fácil de programar para tus propias herramientas. ¿Te suena? Exactamente. Encaja perfectamente con nuestro querido entorno de scripts fácil de programar Navision y Business Central 🙂 .

Función de captura de pantalla en ac'tivAid/AutoHotKey

También me encanta la función de captura de pantalla de ac'tivAid. Para mí, está configurado de modo que simplemente copia la ventana actual y la abre directamente en IrfanView. Allí, puedo arrastrar fácilmente la sección deseada en resolución completa, o conseguir la función de dibujo con F12 y marcar rápidamente un recuadro rojo alrededor del área interesante. Prácticamente todas las capturas de pantalla de esta página web se hicieron con él. Aún no he encontrado una herramienta más sencilla y rápida... . Y he probado muchas. Un poco como Navision / Business Central 🙂 .

Hotstrings de Navision o Business Central en ac'tivAid

Volver a HotStrings e "IntelliSense" en Navision o Business Central:
Ich habe mir die schlimmsten Fingerbrecher von C/Side (CSide), wie z.B.
createdatetime(workdate,time),
strsubstno(‚,
If rec.findset then repeat […] until rec.next = 0;
simplemente en una abreviatura.

Así, por ejemplo, para createdatetime(workdate,time) :

Screenshot vom Ac'tivAid für Navision / Business Central am Beispiel Creadedatetime in C/Side
Captura de pantalla de Ac'tivAid para Business Central y Navision utilizando Createdatetime como ejemplo.

Como resultado, en todos (!) Business Central & Navision, incluso en la versión DOS de Navision (3.53 y 3.56), ahora puedo simplemente teclear la abreviatura cdt( , y ac'tivAid la convierte en createdatetime(workdate,time). Por supuesto, el comando cdt no funciona bajo Navision 3.5x, porque todavía no existe. Pero los que usan DOS-Navision necesitan otros comandos de todos modos, por ejemplo dbFINDSET en vez de rec.findset etc. Funfact: Wussten Sie, dass die Entwicklungssprache im uralten DOS Navision 3.53/3.56 auch bereits CAL bezeichnet wurde, also praktisch das AL (Application Language) von heute in Visual Studio Code?
Sin embargo, el principio es el mismo para ambos y, por tanto, funciona en cualquier Navision o Business Central.

He guardado estos módulos de texto en la variante más utilizada. Por ejemplo, createdatetime(workdate,time) no tiene punto y coma al final. Utilizo Findfirst sobre todo en la variante If findfirst then…, así que he guardado findfirst then Con la mayoría de los comandos, utilizo el paréntesis de apertura, aunque no aparezca en absoluto en FindFirst por ejemplo. Así que escribo if rec.ff( und activAid macht daraus in C/Side if rec.findfirst then : el paréntesis de apertura se borra inmediatamente.

Aún más especial es la construcción que se ha utilizado miles de veces:
if rec.findset then repeat
until rec.next = 0;

Hier benutzt man ja nun praktisch nie rec. Davon aber abgesehen hat praktisch jeder Navision oder Business Central C/Side Entwickler diese Schleife schon tausendfach eingetippt, z.B. in dieser Form:
if Cust.findset then repeat
until Cust.next = 0;

(natürlich mit irgendetwas dazwischen. Und etwas abgekürzt, natürlich müsste es Customer heißen, aber „Damals“ wurden Variablen in CSide gerne noch abgekürzt. Man hatte ja nur 128, später 132 Zeichen Zeilenlänge!)

Funciones de script para hotstrings de Business Central y Navision

Aquí utilizo las funciones de script de HotString de la colección de scripts ac'tivAid para el AutoHotKey en tiempo de ejecución:

Send ^{left}
Send {CTRLDOWN}{SHIFTDOWN}{RIGHT}
Send ^c
Send {CTRLUP}{SHIFTUP}{End}
Send findset then repeat
Send {Enter 2}
Send until ^v
Send .next = 0;
Send {Home}{Up}{Space}{Space}

¿De qué sirve?
Escribo en Navision o Business Central por ejemplo
if cust.fs( - nada más.
El script primero borra la parte fs(, (debido a la opción "Reemplazar directamente (de lo contrario en el espacio, Enter...)), luego salta a la izquierda, copia el RecordTeil Cust.... a me, salta de nuevo a la derecha, teclea findset then repeat, hace un retorno de carro, y luego inserta parte como texto, parte como el contenido del portapapeles previamente rellenado until Cust.next = 0; en la lista de restricciones de los artículos (ficha de artículo o lista de artículos, ventas, restricciones).
Weil der Recordteil selber per Copy aus der C/Side Eingabe gezogen wird, ist es egal, ob ich in diesem Fall Cust eingetippt habe, es per F5 aus dem Objektmenü geholt habe oder per STRG+V aus der Zwischenablage hole.

El script anterior se adapta exactamente al cliente C/side hasta la versión 2009R2. Después, el salto al carácter especial . ha cambiado, por lo que para las versiones C/side sucesoras de Navision y Business Central, por ejemplo NAV 2013 o NAV 2016, debe adaptarse un poco. Utilizando la opción ac'tivAid "Solo" o "No" para el programa , esto podría incluso automatizarse hasta tal punto que la misma abreviatura puede utilizarse tanto en el cliente C/Side clásico como en el cliente C/Side RTC.

Animation für das ac'tivAid Script "Findset" mit automatisch eingefügtem Records in C/Side in beide Statements für Navision / Business Central
Beispiel für das ac’tivAid Script Findset für Navision oder Business Central (C/side Entwicklungsumgebung)

Así que he guardado los comandos más comunes de Business Central o Navision en la forma más utilizada:

cdt( para createdatetime(workdate,time)
ff( para findfirst then (si findfirst then)
fl( para findload entonces (si findload entonces)
intloop for if Número = 1 then begin... if not rec.findset then CurrReport.BREAK end else if rec.next = 0 then CurrReport.BREAK; - nuestro bucle favorito cuando se trabaja con Registros Temporales en informes como el Top 10 de Artículos o el Top 10 de Deudores.
sf( para setfilter(
sr( para setrange(
sk( para setcurrentkey(
sss( para strsubstno('
tf( para testfield(
fs( for if rec.findfirst then repeat...until rec.next = 0;

Más HotStrings / Hotkeys en AutoHotKey

En HotString tengo aún más módulos de texto, como mis condiciones generales, textos automatizados para cartas de rechazo a cazatalentos y varias cosas más. La ventaja: estos módulos de texto no sólo están disponibles en un programa concreto, como Word o Outlook, sino en todos los programas a la vez.

In allen Versionen von Business Central oder Navision mit der klassischen Entwicklungsumgebung C/Side (CSide) hilft auch dieser Userhotstring in Ac’tiveAid / Autohotkey weiter, um sehr schnell die Caption richtig zu belegen!
Recordatorio: Muchos de nosotros utilizamos sin duda la opción de etiquetar simplemente el nombre y la leyenda de un campo. Con esto, uno es "en sí mismo" también realmente terminado, Navision puede entonces mostrar la leyenda en alemán y el nombre en Inglés.
¡Pero eso no es correcto! A partir de Navision Dynamics 2015, como muy tarde, esta pereza cae de pie, y Navision ya no muestra nada en inglés, o sigue mostrando la leyenda en alemán (esto ha cambiado entretanto, creo). Por lo tanto, sólo hay una manera de trabajar: ¡Inmediatamente rellenar el caption correctamente!

Korrekt ausgefüllte Caption mit Enu in Navision bzw. Business Central klassische Entwicklungsumgebung (C/Side)
Vista de las propiedades: Así es con el subtítulo: ¡Enu se rellena!

¡Con este UserHotkeys un pedazo de pastel!

Demonstration von Ac'tive Aid beim Unterstützen von Properties (EIgenschaften) im modernen C/Side des RTC Clients

Presione Ctrl+F12 en cualquier lugar (!) en los subtítulos, y Ac'tiveAid o Authotkey salta a la parte superior, luego 2 líneas hacia abajo a la propiedad Nombre, copie el Valor allí, vaya 2 más abajo, presione F2 dos veces (para saltar al final del Valor mientras edita), y pegue ;enu= más el portapapeles allí. ¡Ya no hay excusas para la pereza!
¡El Send Delay:20 es muy importante, de lo contrario Autohotkey es simplemente demasiado rápido para Navision y el F2 se pierde!

CaptionML automatisch mit einem Tastendruck im Classic Client oder RTC Client (beide noch C/Side (Cside) Umgebung ausfüllen
Rellenado automático del CaptionML en el Classic Client con sólo pulsar una tecla a través de activeAid o Autohotkey. También funciona del mismo modo en el entorno de desarrollo del RTC Classic Developer Client.

Más teclas de acceso rápido / atajos en Navision & Business Central C/Side

Utiliza activamente el portapapeles

Utiliza los atajos CTRL+G para las globales (variables globales) y CTRL + L para las locales (variables locales). Recuerda también que puedes desplazarte por las etiquetas en C/Side con CTRL+ImagenArriba y CTRL+ImagenArriba igual que en ClassicClient y Excel.
Con CTRL+L (para locales) y 2 x CTRL+PICTUREDOWN puedes pasar a la declaración de variables locales en C/Side sin usar el ratón. Tu síndrome del túnel carpiano te lo agradecerá...
¿Desactivar "local" en las funciones? CTRL+ (Globales), 2 x CTRL+Abajo (para llegar a la página Funciones), seleccionar función, Mayús+F4. Shift+F4 abre las propiedades en todo el Cliente S/Side. Borrar de Local , ¡no sobrescribir con No!!

Otra función fruto de la petición de un cliente:
Eine automatische Umschaltung der Lizenz beim Programmstart von Navision Financials/Attain. Das braucht man z.B., wenn man sich im Umstellprozess gerade zwischen Classic Client und RTC Client befindet. Modern UI ist schon wieder etwas ganz anderes, da gibt es keine lokale Lizenz mehr, die hat dann nur der Navision Service Dienst. Man könnte das gleiche Script auch benutzen, um einfacher mit einer „zugeflogenen“ Entwicklerlizenz zu arbeiten.
Zur Erinnerung: Die fin.exe und finsql.exe nimmt als Parameter keine Licence= oder Keyboxpath= mehr an.
Zur Erinnerung: Die navin.exe vom Navision DOS 3.53, 3.56 etc konnte noch mit dem Parameter Keyboxpath=c:\temp\navi_inf.dat,serialno=número de licencia del servidor de base de datos, , y así utilizar inmediatamente una diferente (p.ej. una licencia de desarrollador) al inicio. Más sobre el antiguo Navision aquí y aquí¡Pero aún hay más artículos en mi sitio que tratan del ingenioso DOS Navision! Y yo también 🙂
Con Ac'tiveAid, este guión ayuda:
(a seguir)