IntelliSense en Navision Classic Client/Cside

Bueno, no realmente "Inteli" como en "Inteli "gente. Pero aún así muy rápido y muy útil.
Si ya has navegado por mi sitio aquí, te darás cuenta rápidamente de que sigo siendo un gran fan del entorno de desarrollo C/Side, incluido el Cliente Clásico de navision.
Y, en serio: echo de menos tanto el generador de informes (¡lo habrás visto! Ni punto de comparación con el galimatías RDLC de hoy en día) como con la programación propiamente dicha en CSide (C/Side). ¿Ctrl+f12 para llegar al destino de la función en el código del programa? Pues sí. ¿Resaltado de sintaxis en C/Side? ¡Funciona! ¿Selección cómoda de variables y comandos? Sí. Bueno... no del todo. La selección de objetos en el Cliente Clásico siempre me ha parecido genial y también muy rápida, pero echo un poco de menos el autocompletado («Intellisense») de C/Side en las nuevas versiones de Navision en la versión antigua... ¡Todo sigue siendo mucho más rápido que en AL, especialmente el increíble generador de informes de entonces! Aparte de la fuente coloreada, ¡sigo sin echar nada de menos! Afortunadamente, ¡también aquí puedes simplificarte la vida!

¡Ac'tivAid (Ayuda activa) para la herramienta de automatización AutoHotKey para 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. Dato curioso: ¿Sabía que el lenguaje de desarrollo en el antiguo DOS Navision 3.53/3.56 ya se llamaba CAL, es decir, prácticamente el AL (Application Language) de hoy en 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;

Pero aparte de eso, prácticamente todos los desarrolladores de Navision o Business Central C/Side ya han escrito este bucle miles de veces, por ejemplo, de esta forma:
if Cust.findset then repeat
until Cust.next = 0;

(con algo intermedio, por supuesto. Y algo abreviado, claro que debería ser Cliente, pero «entonces» las variables en CSide eran a menudo abreviadas. Sólo tenían 128, ¡más tarde 132 caracteres de longitud de línea!)

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).
Dado que la parte del registro se arrastra desde la entrada C/Side a través de Copiar, no importa si he escrito Cust en este caso, si lo he obtenido del menú de objetos a través de F5 o si lo he obtenido del portapapeles a través de CTRL+V.

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
Ejemplo de ac'tivAid Script Findset para Navision o Business Central (entorno de desarrollo C/side)

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.

En todas las versiones de Business Central o Navision con el entorno de desarrollo clásico C/Side (CSide), este hotstring de usuario en Ac'tiveAid / Autohotkey también ayuda a asignar el subtítulo correctamente de forma muy rápida.
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:
Cambio automático de la licencia al iniciar Navision Financials/Attain. Esto es necesario, por ejemplo, si está cambiando entre el Cliente Clásico y el Cliente RTC. Modern UI es algo completamente diferente de nuevo, ya que ya no existe una licencia local, sólo la tiene el Servicio Navision. También podría utilizar el mismo script para trabajar más fácilmente con una licencia de desarrollador «flown-in».
Recordatorio: fin.exe y finsql.exe ya no aceptan Licence= o Keyboxpath= como parámetros.
Como recordatorio: El navin.exe de Navision DOS 3.53, 3.56 etc todavía se puede iniciar con el parámetro 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)