BLOG

Listado de novedades Velneo V7 7.9.0

Por jarboleya el | 8 Comments

La versión 7.9 de Velneo V7 incluye más de 150 novedades entre las que destacan:

 

Interfaz

 

Crea aplicaciones con una interfaz espectacular

Velneo V7 incorpora dos nuevos objetos en esta versión que permitirán impulsar la interfaz de nuestras aplicaciones de la categoría de bonitas a espectaculares. Los nuevos interfaces que pusieron de moda los dispositivos móviles comienzan a aparecer en aplicaciones de escritorio que están obteniendo muy buena acogida por parte de los usuarios.

QML es un meta lenguaje basado en JavaScript, se trata de un lenguaje declarativo cuya finalidad es el diseño de la interfaz de usuario. Gracias a la incorporación de QML en V7 tienes la posibilidad de crear unos interfaces ricos utilizando gráficos, texto, manejando el área de interacción, vistas, estados, transformaciones, animaciones, transiciones y efectos gráficos.

Los nuevos objetos “Lista QML” y “Formulario QML” abren a los desarrolladores de Velneo V7 la posibilidad de incorporar estos interfaces avanzados a sus aplicaciones sin renunciar al modo life is soft de programar. Estos nuevos objetos permiten mostrar listas o fichas de registros mediante la inclusión de un reducido grupo de instrucciones específicas que permiten integrar dentro de un QML información de Velneo V7 tanto de campos tipo texto, numéricos, fecha, fórmulas como de objetos texto o dibujo, también admite la presentación de variables globales, locales e incluso interactuar con objetos de V7 como acciones, procesos y formularios.

Tus aplicaciones de escritorio y móviles pueden compartir gracias a V7 con QML un nuevo look, moderno y atractivo. (2957 y 2958)

 

 

.

.

 

Mensajes de error en la ejecución de objetos QML

Se ha incorporado a la ejecución de objetos QML la visualización de un mensaje en el caso de que se produzca un error. Esto permite conocer el problema existente en el código fuente del QML ya que en el mensaje se indica el texto del error así como el fichero, la línea y la posición donde se ha producido. (2989)

 

 

Referencias a objetos V7 en QML

Un referencia a un objeto V7, o idRef, es un string con el alias de un proyecto + el identificador de un objeto V7, separados por “/”. También se puede usar el id del fichero en lugar del alias pero es menos legible. (2945)

En QML en las fórmulas de la propiedad “Url imagen” el idRef forma parte de una estructura mayor:

“image://velneo/?/ALIAS_PROJECT/IDOBJETO/[DATO]”

El carácter marcado con ? puede ser:

  • D – Objeto Dibujo: “image://velneo/D/ALIASPRO/IDOBJETO”
  • I – Icono de estática: “image://velneo/I/ALIASPRO/IDTABLAEST/Campo”
  • C – Campo objeto dibujo: “image://velneo/C/ALIASPRO/IDTABLA/Campo”

Ejemplo de fórmula url imagen para QML con uso del nombre del fichero y del alias:

 

 

Navegación visual de los usuarios por los esquemas

El navegante mediante esquemas, nos realiza de manera visual y con muy pocos clics una navegación entre tablas a través de sus enlaces. Está pensando para que el usuario final de una aplicación pueda realizar la navegación teniendo en cuenta su desconocimiento de la estructura de datos de la aplicación, por ese motivo la visualización del esquema es una gran ayuda para que el usuario pueda acceder a la información deseada realizando la navegación de forma visual.

En el menú “Navegante” de vClient se añaden automáticamente todos los esquemas públicos que contengan la tabla de la vista/subvista/control activo. Si seleccionamos uno de los esquemas nos aparece en una ventana con la tabla inicio marcada. Si seleccionamos otra tabla con doble-clic nos hace la navegación desde la tabla inicio a la tabla seleccionada, creando una nueva vista con el resultado. El objeto con el que nos presenta el resultado es el que tengamos asignado en la propiedad “objeto” del ítem de tabla seleccionada en el esquema. Por este motivo los esquemas que deseemos utilizar para navegación deben estar ubicados en proyectos de datos y con un objeto de vista de datos asociado a la tabla en la propiedad “Objeto” del ítem del esquema. Es conveniente ser riguroso a la hora de poner los nombres de las tablas y preparar cuántos esquemas sean necesarios para facilitar al usuario la navegación por la información de forma visual.

Si encuentra varios caminos entre la tabla origen y la tabla destino, nos los despliega en un list-view. Al hacer doble-clic sobre uno de los caminos, realiza la navegación y nos presenta los resultados en su vista. (2950) 

 

 

Nuevo estilo “Sólo una rama abierta” en árboles

Con este nuevo estilo podemos indicar en el control de formulario “Menú arbolado” y en los objetos “Árbol visor de tablas” y “Multivista en modo árbol” que cuando se abre una rama del árbol se cierre cualquier otra que esté abierta, garantizando de esta forma que sólo una rama de árbol estará abierta a la vez. En el caso del control de formulario menú arbolado, además, cuando activamos esta propiedad el árbol en ejecución muestra, por defecto, la primera rama abierta. (2859 y 2990)

 

 

Visualización de nombres de campos al filtrar u ordenar

Los comandos Lista: Filtrar y Lista: Ordenar ahora muestran tanto los identificadores como los nombres de los campos facilitando el uso de estos comandos a los usuarios finales y a los programadores. (1446)

 

 

 

 

 

 

 

Comandos de interfaz operativos en docks de tipo toolbar

Ya es posible utilizar con los subobjetos docks del marco principal, tanto de tipo dock como de tipo toolbar los  comandos de instrucción que se muestran en la imagen. (2906)

 

 

 

 

 

 

 

 

Teclas aceleradoras en el árbol visor de tablas

Se han activado las teclas “Insert” y “Delete” en el objeto árbol visor de tablas facilitando al usuario la creación y eliminación de registros. (2868)

 

 

 

 

 

 

 

 

Sufijos y prefijos dinámicos en control de edición numérico

Los prefijos y sufijos permiten incluir información dentro de un control de edición numérica, ahora dicha información puede ser dependiente de un valor de un campo de una tabla maestra y se refrescará dinámicamente al cambiar el valor del registro apuntado. Por ejemplo, el campo importe puede mostrar el símbolo de la moneda en función del país del cliente seleccionado. (2890)

 

 

Mejoras en el control de edición de maestro con vista de datos

Se han realizado múltiples mejoras en este control resolviendo diversas incidencias relacionadas con cierres inesperados de vClient, la permanencia de la vista de datos tras la selección del registro o la ejecución de ganancias y pérdidas de focos. (3025, 3026 y 3027)

 

 

 

 

 

 

 

 

 

Otras mejoras y correcciones

La tecla tabulador (o intro según esté configurada) permite avanzar de un control al siguiente incluso en objetos rejilla y también es posible avanzar al siguiente control desde controles de edición de campos objeto. (900)

 

Se ha mejorado el comando “Interfaz: ¿Tiene foco?” para que devuelva el valor 1 (tiene foco) ó 0 (no tiene foco) cuando se lanza sobre un objeto vista de datos. (2853)

 

Si es un control de edición enlazado a maestro que tenga declarada una subindexación usamos la rueda del ratón ahora se tiene en cuenta la subindexación. (2929)

 

 


 

 

Funcionalidad

 

Nuevo componente vUpdater para actualizaciones automáticas de Velneo V7

Con la versión 7.9 aparece un nuevo componentes en la plataforma Velneo V7: vUpdater. Su misión es detectar nuevas versiones de V7 y actualizar automáticamente, tras solicitar confirmación, los componentes instalados en nuestro equipo. Por el momento esta actualización contempla los siguientes componentes: vClient, vWebClient, vAdmin y vDevelop.

Cuando ejecutamos vClient se comprueba si su versión coincide con la del servidor V7 al que se conecta, para evitar actualizar el componente antes de actualizar el servidor. Por ese motivo el primer paso, y único a realizar manualmente, para proceder a una actualización de versión en los equipos de los usuarios de la aplicación es instalar la nueva versión de Velneo vServer V7.

Una vez lanzado vUpdater actualizará al resto de componentes (vWebClient, vAdmin y vDevelop), respetando otras instalaciones de V7 existentes en el equipo, que estén instaladas en otras carpetas. Si tenemos instalada una versión antigua para conectarnos a un servidor antiguo, al ser cliente y servidor de la misma versión no nos pedirá actualizarnos. Pero si tenemos una segunda instalación y nos conectamos a un servidor más actual, nos actualizará.

Esta novedad comenzará a disfrutarse a partir de la próxima versión o revisión. (2955)

 

 

Elige si quieres que tus transacciones sean independientes o dependientes

Se han realizado importantes mejoras que facilitarán la programación de aplicaciones aprovechando toda la potencia que permiten las instrucciones del grupo de objetos.

Cuando se utiliza el comando “Disparar objeto”, hasta ahora siempre se generaba una transacción independiente, a partir de ahora, si no tiene transacción a heredar crea una transacción nueva, sin embargo, si tiene una transacción a heredar incluirá sus operaciones en dicha transacción. Si queremos forzar que diferentes procesos lanzados a través del manejador de objetos queden agrupadas en una única transacción tan sólo hay que ejecutar el comando “Forzar transacción” antes de ejecutar los comandos “Disparar objeto” en el proceso llamador.

Los tubos de ficha y los tubos de lista que son lanzados con los comando de instrucción “Tubo de ficha” y “Tubo de lista” heredan siempre la transacción y en caso de que no hereden transacción crean una transacción nueva. (2224)

 

 

Toma el control sobre los menús contextuales de forma sencilla

En la propiedad “menú de contexto” de las vistas de datos ahora dispones de una opción más: Por defecto extendido. En el menú Por Defecto se han quitado las opciones Modificar campo… y Modificar campo si… y en el extendido están todas. La nueva opción Exportar XML solo aparece en el extendido y si estás en una rejilla.

Además, en menús en stock se ha desdoblado el menú de listas en dos: Lista y Lista extendido para poder incluir una u otra. También se ha añadido el menú en stock Cestas, este solo es válido para menús de contexto de vistas de datos. Si se usa el menú de cestas fuera del menú de contexto de vistas o en una vista de una tabla que no tenga cestas creadas, en ejecución no aparece.

En los menús contextuales personalizados ahora se muestran los separadores de grupos de opciones. (1859, 2054 y 2299)

 

 

Comandos de “Búsqueda” y “Disparar objeto búsqueda” unificados

Cuando ejecutamos el comando de instrucción de proceso ”Búsqueda” o “Disparar objeto” lanzando una búsqueda, tanto si lo hacemos en primer plano (cliente) como en tercer plano (servidor) ahora se ejecutará siempre el subproceso de dicha instrucción, independientemente de que la búsqueda devuelva o no registros. (2850)

 

 

Mejoras en búsquedas

Se ha resuelto una incidencia relacionada con la ejecución de búsquedas en el servidor que no devolvía, en algunos casos, los resultados esperados si alguno de sus componentes no encontraba registros a añadir. (2973)

Se ha resuelto una incidencia que se producía cuando se realizaba una búsqueda por trozos o palabras resolviendo una cadena de texto larga sobre un campo de reducidas dimensiones ya que se truncaba el contenido de la cadena de búsqueda a la longitud del campo de resolución. Ahora la búsqueda por trozos y palabras se realiza sobre la cadena completa independientemente de la longitud del campo a resolver. (3002)

 

 

 

Controla si el usuario es o no supervisor

Entre la lista de posibles variables de sistema ahora encontraremos una nueva opción sysIsAdministrator que nos devolverá un 1 (verdadero) si el usuario tiene activado el check supervisor y un 0 (falso) en caso contrario. (1967)

 

 

 

 

 

 

Control de reinicio de instancias con enganches activos

Se ha realizado una mejora en el control de reinicio de instancias en el servidor, tanto desde vAdmin como cuando se reinicia el servicio vServer que evita conflictos entre el reinicio de las instancias y posibles enganches activos. Por ejemplo, la ejecución de funciones remotas contra el servicio cuya instancia deseamos reiniciar. En caso de que exista un enganche activo el servidor evitará el reinicio de la instancia, mostrando un mensaje de aviso, y viceversa, durante el reinicio de una instancia el servidor evitará la posible ejecución de funciones remotas. (2967 y 2979)

 

 

Visor de mensajes

El visor de mensajes de vAdmin ahora muestra la barra de scroll horizontal en caso de que los mensajes sean muy largos. (3035)

 

 

Mejorado el núcleo de ficheros

Sólo en determinados sistemas operativos Linux se ha detectado una incidencia relacionada con el número de ficheros y sockets abiertos en el servidor que podía llegar a producir desconexiones temporales de los diferentes clientes con vServer. La resolución incluye mejoras en la gestión de ficheros entre las que cabe destacar el cierre periódico de los ficheros abiertos por el servidor a medida que no son usados durante un tiempo así como el cierre de ficheros tras reiniciar el servidor o al crear o reiniciar una instancia. (2992 y 3016)

 

 

Nuevos comandos de instrucción “filescript”

Relacionado con la inclusión del directorio de scripts. Se han añadido dos nuevos comandos de instrucción que permiten utilizar el contenido de un fichero de script para la realización de la acción:

Script: Evaluar interprete (filescript) permite ejecutar cualquier Script de tipo JavaScript integrado en el directorio de scripts.

Interfaz: Establecer hoja de estilo CSS (filescript) permite aplicar hojas de estilo integradas en el directorio de scripts. (2954)

 

 

 

 

 

Multipartir informe con cálculos

Cuando tenemos un informe en presentación preliminar que tiene cálculos y ejecutamos el comando de lista “Multipartir” ahora obtendremos múltiples informes con todos los totales recalculados. (2851)

 

 

 

 

 

 

Mejorada la experiencia de usuario en vistas de datos

Se ha balanceado la prioridad de los hilos secundarios en las vistas de datos lo que permite mostrar las listas con mayor velocidad al bajar la prioridad de los hilos secundarios. (2962)

 

 

 

Mejoras en vModApache

El módulo de Apache ahora hace la conversión a UTF-8 de las variables recibidas por los métodos GET y POST. (2993)

 

 

 

 

 

 

Mejorado autocompletar en tablas submaestras

Al escribir valores en un edit puntero a campo de tabla submaestra, si no se encuentra ningún valor se sincroniza el valor de los campos padre de dicha submaestra en el formulario. (2905)

 

 

 

Mejoras en la desinstalación de componentes

Se controla en la desinstalación si el componente está siendo ejecutado. En cuyo caso se solicita al usuario que lo cierre. Si finalmente no es posible realizar la desinstalación, se indica que para desinstalar correctamente ha de eliminar el contenido de la carpeta correspondiente. También se han mejorado los mensajes en caso de que se produzcan errores durante la desinstalación. (2964 y 3032)

 

 

 

 

 

Mejoras en la edición de campos numéricos y en casilleros en vDataClient

Se controla la introducción de ID válidos, así como los rangos de campos numéricos. También se ha mejorado la visualización de casilleros de campos objeto texto enriquecido. (13 y 14)

 

 

 

 

Otras mejoras y correcciones

Se controla que en el comando “Array: Set” se establezcan valores no válidos como los negativos que producían un error de ejecución en el componente que lo ejecutaba. (2910)

 

Se fuerza el recálculo de los contenidos iniciales cuando en un formulario se borra el contenido de un campo enlazado a maestro del que dependen los valores de otros campos del registro. (2915)

 

Se ha corregido el uso del comando finalizar proceso para que si desde un evento de interfaz ejecutamos el comando “Interfaz: Ejecutar evento” y en el evento llamado se usa el comando “Finalizar proceso”, sólo finalice el evento llamado y no finalice también el evento llamador. (3034)

 

 


 

 

Base de datos

 

Optimización del uso de campos fórmula en operaciones de base de datos

Se ha resuelto una incidencia que relacionaba la existencia de campos fórmula en una tabla con la penalización de rendimiento en operaciones de base de datos. La resolución de esta incidencia ha producido una notable mejora en el rendimiento de operaciones de base de datos con tablas que tengan declarados numerosos campos fórmula. (3015)

 

 

Mejoras de rendimiento en contenidos iniciales

Se ha eliminado el procesamiento de contenidos iniciales que, en algunos casos, se disparaban cuando desde un objeto de una tabla (plural) se mostraba información de una tabla (maestra/submaestra/arbolada) a través de un campo que interviniese en el índice primario, lo que producía pérdida de rendimiento. (2970)

 

 

 

 

Control de reconstrucción de tablas incompleta

Cuando se cambia la estructura de una tabla el servidor renombra el fichero de datos (*.dat) a (*.old), crea un nuevo fichero con la extensión (*.dat) y comienza a pasar los buffers de información hasta completar el traspaso de toda la información a la nueva estructura. Si durante este proceso el sistema sufre alguna caída, de forma automática detectará que la regeneración anterior no había finalizado correctamente por lo que procederá a crear un nuevo (*.dat) y volverá a pasarle toda la información. Aunque se produzcan múltiples caídas el fichero (*.old) permanecerá en disco hasta que pueda completar con éxito el traspaso de todos los registros a la nueva estructura. (2982)

 

 

Control de regeneración de índices incompleto

Si durante la regeneración de los índices de una tabla se produce una caída del sistema, el servidor controlará que el proceso no ha finalizado correctamente y al volver a arrancar el servicio vServer regenerará de nuevo los índices de la tabla cuyo proceso había quedado interrumpido. Si el sistema volviese a sufrir una caída nuevamente durante la regeneración de los índices, al volver a arrancar el servicio comenzará otra vez la regeneración de los índices hasta que logre finalizar correctamente. (2982)

 

 

Uso de campos singulares de plural por índice en contenidos iniciales de otros campos

Se ha resuelto una incidencia que producía la caída del servicio si en el contenido inicial de un campo se utilizaba otro campo del tipo “singular de plural por índice”. (2991)

 

 

 

 

Refresco de ID en cascada de maestros a plurales

Se ha resuelto una incidencia que, en determinadas circunstancias de herencia, producía que el cambio de un código (ID) de una tabla maestra no refrescase dicho cambio en los registros plurales de tablas contenidos en un proyecto de datos que heredaba al proyecto de datos donde estaba ubicada la tabla maestra. (2994)

 

 

Recomendación de uso de eventos de tabla

No se deben realizar operaciones de base de datos contra el registro creado, modificado o eliminado en el evento de tabla posterior. (694)

 

 

Recomendación sobre la edición de resolución de partes en componentes de búsquedas

Si en vDevelop no se edita la resolución de una parte del componente, la búsqueda por parte izquierda permitirá localizar todos los registros de ese índice sin tratar de resolver esa parte. En vDevelop una vez que se accede con el cursor a la edición de la resolución de un componente de búsqueda, aunque no se escriba nada queda en un estado de resuelto, lo que conlleva que ese componente trate de localizar registros con valores cero o vacíos para esa parte del índice. Es importante tenerlo en cuenta y editar sólo las partes del componente que se desean resolver. (1389)

 

 


 

 

Edición

 

Nuevo almacén de objetos V7

A nivel de productividad esta es una novedad muy importante ya que nos permitirá reducir notablemente los tiempos de desarrollo contribuyendo notablemente con un gran ahorro de tiempo en la creación de los objetos visuales de nuestras aplicaciones. Lo más importante es que desde ahora todo el código existente en soluciones de Velneo V7 se convierte en almacén de objetos para los nuevos desarrollos.

La novedad se basa en la evolución del actual sistema de copiar y pegar carpetas y objetos. Aparece una nueva opción en el menú de edición Pegar como… (Ctrl+May+V) que de forma sencilla permite realizar las siguientes acciones:

  • Seleccionamos la carpeta de origen y la copiamos Ctrl+C.
  • Nos ubicamos en la carpeta destino donde queremos crear los nuevos objetos y pulsamos Pegar como… Ctrl+May+V.
  • Se nos mostrará la lista de todas las tablas utilizadas en los objetos visuales copiados. En el caso de que estemos copiando y pegando entre diferentes proyectos nos mostrará también todos los objetos visuales que no haya podido resolver.
  • Las tablas por defecto aparecen resueltas con el valor actual, nosotros podemos cambiar la tabla de resolución por la que nos interese. Tras finalizar aceptamos el formulario.
  • En segundos veremos como se generan tantas carpetas, subcarpetas y objetos en destino como teníamos copiados en origen produciéndose la metamorfosis en vuelo, es decir, se sustituyen los identificadores de objetos, su descripción y el nombre de las carpetas por aquellos de las tablas que hayamos asignado como nueva resolución.

La productividad se dispara y las posibilidades son enormes, por ejemplo, a partir de los objetos visuales de un módulo de compras se puedan generar los objetos visuales del módulo de ventas en segundos. (2963)

 

 

 

 

Nuevo asistente de fórmulas

Se ha rediseñado el asistente de edición de fórmulas dotándolo de la posibilidad de editar fórmulas V7 y JavaScript (betatesters) y de las siguientes mejoras en usabilidad potenciando el uso del teclado en el asistente sin necesidad de usar el ratón (2772 y 2956):

  • Mayor usabilidad.
  • Interfaz simplificada (Sin docks).
  • Las teclas aceleradoras abren paneles pop-up con la lista de valores a seleccionar.
  • Los paneles pop-up de selección se cierran automáticamente al elegir un valor (operador, función, campo, variable global, variable local, variable de sistema, constante, etc.).
  • El tamaño de los paneles pop-up se puede ajustar con el ratón (Windows) y con Ctrl+Flechas (Windows y Linux) y Cmd+Flechas (Mac). El tamaño ajustado por el programador queda configurado y almacenado.
  • Visualización tanto de los identificadores como de la descripción de los campos para facilitar su selección.
  • Las listas de variables globales, variables locales y constantes ahora aparecen ordenadas alfabéticamente.

 

 

Mejoras de usabilidad al crear y usar carpetas y subcarpetas en el panel de proyecto

Ahora al crear una nueva carpeta nos aparecerá el cuadro de diálogo Propiedades de carpeta donde podremos indicarle el nombre, el color del texto y elegir el icono deseado. Si no escribimos nada en el nombre asumirá el de la carpeta seleccionada y en caso de no elegir ninguna carpeta pondrá el nombre General. Esta mejora evita hacerlo como hasta ahora en dos pasos, obligando primero a crear la carpeta y luego editar sus propiedades para renombrarla y asignarle el icono.

Otra mejora de usabilidad es que ahora al hacer doble clic sobre una carpeta o subcarpeta se abrirá o cerrará en función de su estado. Para editar las propiedades de la carpeta usaremos el menú contextual o la tecla aceleradora Alt+Intro y Alt+Return. (2862 y 3030)

 

 

 

 

 

Nuevo directorio de Scripts

Cada proyecto de Velneo V7 contiene un directorio donde podemos crear una estructura de carpetas y guardar en ellas los ficheros QML, JavaScript … y sus ficheros auxiliares.

Al ejecutar una aplicación con vClient, vWebClient o vDataClient, se cargan también los directorios de scripts de cada proyecto de la aplicación.

Un mismo fichero QML o JavaScript se puede usar desde distintos objetos V7.  Además, hay distintos tipos de objetos V7 que los usan como procesos, lista QML y formulario QML. Un mismo fichero JavaScript o QML puede ser usado en objetos con distintas entradas y salidas, tabla y/o ficha/lista, controlando el programador mediante las funciones API de los objetos de entrada/salida que nos da vJavaScript. También se puede asumir que un fichero JavaScript o QML tiene una tabla concreta de entrada y/o salida determinadas, con el nivel de abstracción deseado en cada fichero Script.

Para introducir en un objeto V7 la propiedad Fichero Script en el edit disponemos de un botón que nos presenta un árbol con los directorios de scripts del proyecto en curso y sus proyectos heredados.

Velneo V7 incorpora también editores de código fuente para los distintos lenguajes soportados.

Se puede usar import en los ficheros fuente QML para importar otros ficheros QML, JavaScript o carpetas enteras contenidas en los directorios scripts del proyecto y heredados.

El editor de Velneo V7 ahora permite gestionar carpetas y subcarpetas de Scripts para ser usados en tus aplicaciones. En esta nueva pestaña encontrarás en el menú contextual opciones para:

Se ha añadido al editor una nueva toolbar Buscar con opciones para buscar archivos de Scripts que contengan un texto y movernos por los diferentes ficheros encontrados. Localizar y editar tus Scripts será una tarea sencilla.

Además, se ha incluido un nuevo dock en vDevelop Resultados de la búsqueda en Scripts que muestra una línea por cada coincidencia de texto encontrada en los Scripts. Haciendo doble clic sobre cualquier línea podrás editarla directamente, además de poder moverte entre los diferentes scripts que contenían el texto buscado, pudiendo seleccionar si quieres que en la búsqueda se discrimine o no Mayúsculas y minúsculas. (2942)

 

 

Nuevo editor integrado de código fuente para ficheros QML, JavaScript, XML, CSS y SVG

vDevelop ahora incorpora junto al directorio de Scripts un editor integrado de código fuente para diferentes lenguajes y scripts. El editor dispone de las siguientes características (2942):

  • Coloreado de sintaxis
  • Numeración de líneas
  • Auto indentación
  • Configuración de estilos de carpeta y fin de línea.
  • Verificación de sintaxis.
  • Edición: copiar, cortar y pegar.
  • Deshacer y rehacer.
  • Zoom.
  • Impresión en papel.
  • Generación de PDF.

 

Mejorada la funcionalidad de copia/pegar objetos entre proyectos

Al copiar/pegar objetos entre proyectos no relacionados ahora solicitará resolución de los objetos no encontrados que son usados en fórmulas, como por ejemplo Dll, constante, variable global o función. (2829)

 

 

 

 

 

 

 

 

Mejoras al mover tablas entre proyectos

Al mover una tabla a otro proyecto si en sus eventos se usan Dll, constantes, variables globales o funciones, ahora también se mueven los objetos usados al proyecto destino. (2828)

 

 

Mejoras en el inspector de errores de objetos usados en fórmulas

Si un objetos usado en una fórmula no existía en el proyecto pero sí en alguno de los proyectos relacionados cargados en vDevelop, no se incluía en la lista de objetos con errores, ahora sí se detecta y se muestra el error. (2841)

 

 

Pon alias a tus proyectos

Los proyectos ahora tiene una nueva propiedad, Alias, editable en el cuadro de diálogo de propiedades del proyecto. Además en el cuadro de diálogo se ha incluido el nombre del fichero en disco del proyecto con extensión “.vca o .vcd”. (2945)

 

 

Añade campos a tus fórmulas visualizando el nombre además del identificador

El nuevo asistente de fórmulas entre otras mejoras incluye en el árbol de selección de campo información tanto del identificador como del nombre del campo, facilitando la labor de localización al programador. (2042)

 

 

 

 

 

 

Otras mejoras y correcciones

Se ha mejorado el control de proyecto modificado. Cuando movemos objetos entre carpetas se activa el estado del proyecto como modificado para guardarlo. (586)

 

Creación de proyectos en servidor. Sólo es posible crear una nueva solución si estamos conectados a un servidor. (126)

 

Se ha corregido una incidencia que se producía al asignar un identificador de campo #ID en un control de edición numérico en formulario sin origen que producía el cierre de vDevelop. (2744)

 

Se ha corregido una incidencia que producía que al guardar el registro de un formulario con los comandos Interfaz: aceptar o Interfaz: guardar ficha en alta o modificación, en algunos casos se perdiese en una fórmula dinámica la referencia de los objetos usados dentro de la fórmula al proyecto que lo contenía. (2786)

 

Se han ordenado alfabéticamente las tablas en:

  • La propiedad tabla ahora muestra la lista ordenada alfabéticamente en la propiedad Tabla destino de los objetos Tubo de ficha y Tubo de Lista.
  • El asistente de creación de tablas, en el combo de selección de tablas a enlazar. (2894)

 

Se controla el uso de funciones que tienen definidos como parámetros variables locales inexistentes, evitando el cierre inesperado del editor. (2913)

 

 


 

Novedades para betatesters (Suscriptores de nivel 4)

 

 

Interfaz

 

Nueva objeto rejilla avanzada

Esta rejilla avanzada aporta respecto a la rejilla actual nuevas funcionalidades de las que cabe destacar: (2949)

  • El usuario puede ocultar y mostrar columnas de la rejilla en tiempo de ejecución. Por el momento no se guarda esta información.
  • El usuario puede dinámicamente, en tiempo de ejecución, crear agrupaciones por múltiples columnas y obtener subtotales.
  • Crea una réplica de cualquiera de tus rejillas actuales como rejilla avanzada con un sólo clic. Sólo tienes que seleccionar la rejilla antigua y seleccionar el objeto rejilla avanzada en la galería de objetos, obtendrás inmediatamente una rejilla avanzada con las mismas, columnas, formatos y condiciones de estilo que la rejilla original.
  • Columnas inmovilizadas (Propiedad fijar horizontalmente, valores: izquierda o derecha). (17)
  • Agrupamientos (Propiedad número de grupo, valor: número). (23)
  • Cálculos totalizados por agrupamiento (Propiedad grupo tipo de cálculo, valores: Suma, menor, mayor, nº fichas y porcentaje). (23)
  • Posibilidad de mostrar check centrados en columnas de campos booleanos. (Propiedad editor tipo, valores: ninguno, auto, string, memo, comboboxblob, numeric, checkbox, combobox, tabla, datetime, time, date, picture, comboboxpicture, manómetro, reloj, barra de progreso, slider, vista de datos). Esta propiedad no estará visible hasta que se abra la posibilidad de edición. (90)
  • Edición en rejilla al teclear sin necesidad de pulsar intro o doble clic para entrar en modo edición. (Propiedad editor modo foco, valores: ClickNoFocused, ClickFocused, MousePressNoFocused, MousePressFocused, DblClickNoFocused, DblClickFocused, KeyboardFocus, Enter, Always). Esta propiedad no estará visible hasta que se abra la posibilidad de edición. (102)

Este nuevo objeto estará disponible en la modalidad de sólo lectura, no permitiendo la edición en línea. (2949)

 

 

 

 

Funcionalidad

 

Nueva API de Velneo, un mundo de posibilidades

Las nuevas clases implementadas en vJavaScript permiten acceder a un completo grupo de funciones que dan acceso a la información definida en los proyectos de aplicaciones y datos. (33)

 

 

 

Fórmulas JavaScript

Cualquier propiedad tipo fórmula de cualquier objeto puede ahora ser escrita en V7 o JavaScript, independientemente del lenguaje de las otras fórmulas. Lo mismo sucede con los campos tipo fórmula dinámica que ahora pueden escribirse en V7 o JavaScript.

En el nuevo editor de fórmulas, más simple y eficaz, disponemos de un combobox, situado en la toolbar superior, donde podemos seleccionar el lenguaje deseado: V7 o JavaScript. Los asistentes como Insertar campo tienen en cuenta el lenguaje seleccionado e insertan el texto con la sintaxis adecuada.

Obsérvese que en JavaScript ya elige el asistente automáticamente la función de VRegister según el tipo de campo, decimales, signo, …

Las fórmulas JavaScript tienen conectado un objeto de la clase VRegister a través del cual se tiene acceso al contenido de los campos, variables locales, globales y de sistema. Solo está disponible el juego de funciones de lectura, no el de modificación como en procesos, pues el objetivo de las fórmulas es obtener un valor. También tienen conectado el objeto VApp, la aplicación. (2944)

 

 

 

 

Procesos JavaScript

Los procesos disponen ahora de una nueva propiedad Lenguaje. Las opciones disponibles son: V7 y JavaScript.

Los procesos con lenguaje JavaScript, son una alternativa a los procesos V7 y tienen las mismas propiedades que los procesos V7 salvo que en lugar del árbol de instrucciones disponemos de un fichero de texto, en el cual escribiremos nuestro programa JavaScript.

Según el tipo de Entrada y el tipo de Salida dispondremos de distintos objetos dentro del proceso JavaScript:

Entrada:

  • Ficha: VRegisterIn
  • Lista:  VRegisterListIn

Salida:

  • Ficha: VRegisterOut
  • Lista:  VRegisterListOut

Por ejemplo en un proceso con entrada ficha y salida lista dispondremos de dos objetos: VRegisterIn con la ficha de entrada y VRegisterListOut con la lista de salida. (2946 y 2959)

 

 

VJavaScript VRegister

Los objetos de esta clase representan una ficha de una tabla.

Los register pueden ser creados:

Automáticamente por V7 como VRegisterIn y VRegisterOut al inicio de un script lanzado desde uno o varios objetos V7 con entrada o salida ficha.

Desde otro objeto en javascript como con la función readAt de la clase VRegisterList que devuelve un VRegister.

Dispone de funciones para gestionar los contenidos de los campos por identificador simple o compuesto y por número de campo. Además se pueden ver los contenidos previos de los campos, cuando se leyó la ficha.

También dispone de una funciones para obtener la subclase del tipo VTableInfo que nos da información API de la tabla y de sus campos, indices e históricos para ver las propiedades de estos objetos como por ejemplo el tipo de un campo, su identificador o su numero de decimales.

Para edición tenemos funciones de alta, baja y modificación así como de control de errores y al más puro estilo V7 las funciones de navegante. (2940)

 

 

VJavaScript VTableInfo

Los objetos de esta clase contienen la información de la estructura de una tabla.

Tiene funciones generales de la tabla, como ver su id o su tipo, y funciones para obtener información de sus subobjetos: campos, índices e históricos.

También nos permite obtener otros VTablaInfo de las tablas enlazadas como maestros o históricos. (2941)

 

 

 

VJavaScript VRegisterList

Los objetos de esta clase representan una lista de fichas de una tabla. Dispone de funciones de manejo de la lista y sus ítems pudiéndose obtener objetos de la clase VRegister por index, en modos lectura y lectura con bloqueo si vamos a modificar.

Las funciones del navegante devuelven otro objeto clase VRegisterList con la lista del maestro o histórico.

La función sort está sobrecargada pudiendo llevar varios pares de parámetros campo y bDescendente. (2943)

 

 

 

VJavaScript VRoot

El objeto VRoot representa al objeto V7 en ejecución. Dispone de funciones para ver o modificar las variables locales y de sistema del objeto, obtener información del objeto (API), transacciones…

Veamos algunos ejemplos:

  • Tenemos un formulario con un Evento-Slot en lenguaje JavaScript: el VRoot del Evento-Slot representa al ejecutor del formulario.
  • Ejecutamos un proceso JavaScript con una acción: el VRoot del proceso representa al ejecutor del proceso en V7.

Si el objeto V7 es una vista de datos (rejilla, formulario,…) estarán disponibles en VRoot las funciones de manejo de interfaz como obtener un control de un formulario con getWidget(Id), pudiéndose usar las funciones del objeto widget que devuelve. (2947)

 

 

VJavaScript VObjectInfo

Los objetos de esta clase contienen la información de la estructura de un objeto V7.

Se pueden ver sus propiedades, tanto los datos que contienen como información de su nombre, tipo, tabla asociada (si tiene), tipo de objeto referenciado, etc. Para obtener el valor que contiene una propiedad primero debemos mirar el tipo de dato para usar la función adecuada. Por ejemplo, si el tipo de dato es Uint16 usar la función propertyDataToInt(nProp);

También se pueden obtener otros VObjectInfo de sus subobjetos y de los objetos referenciados por sus propiedades. (2948)

 

 

VJavaScript VProjectInfo

Este objeto contiene la información de un proyecto. Tiene funciones para obtener sus propiedades básicas, sus tablas, sus objetos y los proyectos de los que hereda.

Las funciones de tablas y de objetos que empiezan por all nos devuelven todas sus tablas u objetos, incluyendo las de sus proyectos heredados. Las otras solo las suyas propias. (2951)

 

 

 

VJavaScript VApp

Este objeto representa a la aplicación. Dispone de funciones para ver información de sus proyectos, acceso a variables globales, utilidades de base de datos, etc. (2952)

 

 

 

 

 

VJavaScript VMainWindow

Este objeto nos da acceso a las funciones de manejo de la ventana principal de la aplicación. Está disponible en procesos JavaScript en primer plano. Dispone de funciones para gestionar el marco principal, los docks, la barra de menú, la barra de estado, las vistas centrales e incluso ejecutar acciones. (2939)

 

 

 

VJavaScript VMdiView

Un objeto de esta clase representa a una de las vistas centrales de la ventana principal. Algunas de las funciones solo están disponibles cuando el boot-mode de la VMainWindow es MDI. Se puede coger el VRoot que contiene la vista si no es una vista genérica. (3076)

 

 

 

 

VJavaScript VQuery

Esta clase nos permite ejecutar objetos búsqueda. Construimos un objeto VQuery pasándole el objeto VRoot en curso y le indicamos la búsqueda a ejecutar con la función setQuery. Una vez inicializado el objeto ya podemos usar el resto de funciones (salvo result): le pasamos contenido a las variables locales de la búsqueda con setVarLocal (si lo requiere) y la ejecutamos con la función exec. Ahora ya podemos recoger los resultados con la función result, que nos devuelve un objeto de la clase VRegisterList con el cual podemos operar. (3077)

VJavaScript Funciones globales

vJavaScript contiene también extensiones sobre lo que aporta el ECMAScript base con algunas de las funciones globales que implementan otros JavaScript, para mayor compatibilidad con código fuente ya existente.

La funciones globales disponibles son:

 

 

 

VJavaScript VXmlWriter

Esta es la primera de las clases para XML. Nos permite generar un fichero XML con el contenido de una lista de datos.

Para empezar hay que construir el objeto VXmlWriter con new pasándole como parámetro un objeto de la clase VRegisterList.

El codec por defecto es “UTF-8″. Para cambiarlo por ejemplo a UTF-16, llamar a la función setCodec( “UTF-16″ ).

Si no se usa la función setDocType(“mytype”) no se incluirá la cabecera opcional <!DOCTYPE mytype>.

Por defecto el texto es formateado con saltos de linea e indentación. Para cancelarlo usar la función setAutoFormatting( false ). Con la función setAutoFormattingIndent( n ) ajustamos el número de espacios o tabs de indentación. Si usamos valores positivos para n representan espacios y si son negativos tabs. Por defecto la indentación son 4 espacios.

Con la función addInitialTag( “tag”) le añadimos uno o varios tags, llamando varias veces a la función, que envuelven a los registros de la lista. Lo normal es usar una con el nombre de la tabla.

Con la función setRowTag( “tag” ) le decimos la etiqueta que ha de envolver a cada registro. Si no se usa por defecto es “row”.

A continuación con las funciones addField( “tagCol”, “IDCOMPUESTOCAMPO”) y addFormula( “tagCol”, “Formula” ) le añadimos tantas columnas como queramos por registro.

Y ya solo nos queda llamar a la función writeFile( “file.xml” ); para que nos lo escriba en disco. (24 y 2935)

 

 

Referencias a objetos V7 en vJavaScript

Un referencia a un objeto V7, o idRef, es un string con el alias de un proyecto + el identificador de un objeto v7, separados por “/”. También se puede usar el id del fichero en lugar del alias pero es menos legible. (2945)

Por ejemplo, para ejecutar desde JavaScript la acción “VER_CLIENTES” del proyecto alias “MI_ERP” usaremos la siguiente función del objeto VMainWindow:

 

 

Aplicaciones a pantalla completa

Utilizando las funciones de la clase vMainWindow de vJavaScript podrás gestionar el estado del marco de tu aplicación. (2661)

 

 

 

 

 

Obtener la descripción de objetos y subobjetos en una idioma

La función name de VObjectInfo permite indicarle como parámetro el lenguaje y país a obtener de los de los posibles idiomas declarados en el proyecto. Esto permite obtener la descripción de cualquier campo en cualquier idioma independientemente del idioma del sistema o que esté utilizando el usuario. Puede ser muy interesante para personalizar objetos a idiomas concretos predefinidos. Las tablas con los códigos de idiomas y países está documentada en el objeto QLocale de Qt. (3004)

 

 

 

 

Base de datos

 

Contenidos iniciales con fórmulas JavaScript

Con el uso de fórmulas JavaScript ahora es posible declarar el contenido inicial de un campo con una fórmula JavaScript. Esto ofrece al programador una gran flexibilidad.

Una de las características más importantes de los contenidos iniciales en la base de datos de Velneo es que su ejecución es controlada automáticamente por el servidor en función de las dependencias existentes entre los campos usados en los contenidos iniciales. Sin embargo, esto plantea un problema para el control de las dependencias en JavaScript debido a que los campos y variables usados en la fórmula JavaScript pueden estar siendo resueltos con constantes, variables o incluso fórmulas, por lo tanto la solución para que el programador pueda declarar las dependencias de un contenido inicial JavaScript en la fórmula es la siguiente:

Escribir en cualquier parte de la fórmula las siguientes líneas:

Para campos:

//#// IDCAMPO1, IDCAMPO2, …

Para variables globales:

//$// IDREFVAR1, IDREFVAR2, …

De esta forma el servidor disparará el contenido inicial JavaScript de un campo cuando alguno de los campos o variables globales declaradas de esta forma en fórmula cambien. (3010)

 

 

 

Edición

 

Asistente de edición de fórmulas avanzado

El nuevo asistente de fórmulas ahora permite editar fórmulas V7 y fórmulas JavaScript con ayudas de edición al añadir campos, variables globales, variables locales, variables de sistema y constantes. (3029)

 

 

Velneo es el entorno ágil para el desarrollo
de aplicaciones empresariales

PRUEBA VELNEO

8 Responses to "Listado de novedades Velneo V7 7.9.0"
  1. [N3] cristianvg2003.gmail dice:

    despues de leer todo el contenido de cambios y mejora no queda mas que felicitarlos por el impresionante esfuerzo y darles las gracias.

  2. Impresionante, gran trabajo!! 😉

  3. José Luis dice:

    Como se dice por aqui:

    ¡Esto es mucho arroz pa un pollo! 😀

    Sois unos monstruos!!!

  4. [N1] Adolfo Roque dice:

    Bueno esto es verdaderamente impresionante , no tengo tanta cabeza para asimilar tantas imnovacion … solo felicidades a tod@s .

  5. elmer dice:

    Si así llueve que no escampe… pues gran trabajo!!!

  6. [N3] benito.lavandeira.controlyestudios dice:

    Me he bajado las open app qlm y no tengo palabras.
    Como puedo empezar a estudiar QLM?
    No encuentro manuales en la red

  7. @Benito: Puedes empezar leyendo la información de Qt que encontrarás en este link y la que está en la web de Tipesoft.
    Un saludo.

  8. [N4] r_baena.hotmail dice:

    Buenos días. En primer lugar, muchísimas gracias por tan grande esfuerzo y buen trabajo realizado. Vamos a tener una herramienta que va a ser la envidia de los programadores con otras herramientas. De nuevo, muchas gracias.

    Sólo unas preguntas, aunque no sé si es el sitio: 1) vClient para Android tiene resueltas las incidencias 2) Ha habido alguna mejora en los informes de Velneo 3) Puedo imprimir la estructura de una tabla o el contenido de un proceso desde vDevelop (pregunto esto porque se indica al principio hay más de 150 novedades)

    Sinceramente, no os quiero aguar la “fiesta” de tan excelente iteración (7.9). Sólo es por saber.

Deja un comentario

Esta web utiliza cookies. Si continúa navegando acepta dichas cookies y nuestra política de cookies. Gracias. ACEPTAR

Aviso de cookies