feb 23

Tablas de extensión

Posted in novedades, v7

Ante la salida de la nueva versión 7.12, no me queda más remedio que felicitar de nuevo al equipo de Velneo por la cantidad y sobre todo por la calidad de las novedades que nos han ofrecido en esta y en las anteriores versiones.

Si las 2 versiones anteriores ya nos aportaban material de estudio para no aburrirse con vJavaScript, esta no se queda corta en funcionalidades y como siempre, es difícil decidir cual de ellas es mejor que el resto, sobre todo, porque cada cual tiene sus propias preferencias.

Pero no he iniciado este artículo para valorar cada una de esas funcionalidades, sino para hablar de una en concreto: La tabla de extensión.

  • ¿Qué es?
  • ¿Para qué sirve?
  • ¿Cómo se utiliza?
  • ¿Cuando debo usarla?

Son algunas de las preguntas más frecuentes que nos vamos a realizar todos en algún momento del desarrollo y que voy a intentar responder en este artículo.

¿Qué es una tabla de extensión?

Una tabla de extensión, es aquella que nos va a permitir añadir campos a otra tabla, manteniendo intacta la estructura de la tabla principal.

Esta tabla mantiene una relación de 1 a 1 con respecto a la tabla maestra principal. Es decir, que la tabla de extensión es plural de la tabla principal, pero cada registro de la tabla principal, solo va a tener un registro en la tabla extendida (o ninguno) y cada registro en la tabla extendida, siempre va a tener un registro en la tabla principal.

Y la relación entre esos registros siempre va a ser establecida por medio del campo #ID de la tabla principal.

¿Para que sirve?

Vamos a recurrir en primer lugar a un ejemplo muy común para intentar explicar de forma sencilla los problemas que podemos resolver con este tipo de tablas:

Imagina que tenemos una tabla de Entidades, en la que, como ya sabemos, vamos a tener todos los datos comunes a Clientes, Proveedores, Agentes, etc. Y esos datos comunes son: Dirección, Población, NIF, Telefonos, etc.

Pero claro, con esos datos, la ficha del cliente se queda coja, nos faltan datos de facturación para ese cliente, pero no debemos incluir la forma de pago y otras condiciones particulares en la ficha de entidades, porque en esa ficha, también habrá proveedores y estos campos quedarán vacíos, o mejor dicho, ni siquiera deberían aparecer.

Pues aquí es donde entra en juego la tabla de extensión. Para solucionar este problema, creamos una tabla de extensión llamada Clientes, y en ella incluimos solo los campos propios del cliente, como: Forma de pago, Nº vencimientos, Periodo de facturación, etc. Pero además, al estar asociada a la tabla Entidades, también tenemos a nuestra disposición todos los campos de la entidad: nombre, dirección, población, etc.

¿Cómo se utiliza?

Si partimos de la base de que ya tenemos la tabla de Entidades en funcionamiento, ahora disponemos de un nuevo tipo de tabla llamado “Maestro de extensión”. Así que, creamos un nuevo objeto tabla de tipo “Maestro de extensión” y le indicamos la tabla “Entidades” como tabla principal y a partir de ahí, la creamos como cualquier otra tabla de las que usamos habitualmente.

En ejecución, esa relación de 1 a 1 de la que hablábamos al principio, implica que:

  1. Cuando creo un cliente, obligatoriamente tengo que crear una entidad o asociarlo a una entidad existente.
  2. Cuando creo una entidad, no necesariamente estoy obligado a crear el cliente, aunque puedo hacerlo desde la propia ficha de la entidad.

Veamoslo de otra forma:

  • Si queremos ver todas las entidades: Cargamos lista (ENTIDADES, ID) y retornamos la lista a la salida (obteniendo así todas las entidades de la tabla)
  • Si queremos ver todos los clientes: Cargamos lista (CLIENTES, ID) y retornamos la lista a la salida (obteniendo así todos los clientes de la tabla)
  • Pero si queremos ver todas las entidades que a su vez son clientes: Cargamos lista (CLIENTES, ID), Cargamos maestros(ENTIDADES) y retornamos la lista a la salida (obteniendo así todas las entidades que tienen ficha de cliente). Esto es así, porque aunque la relación es de 1 a 1, la tabla de Clientes sigue siendo “plural” de Entidades.

¿Cuando debo usarla?

Cómo pasa en multitud de ocasiones, parece que cuando hay una novedad interesante, hay que usarla para todo, y no se trata de eso, se trata de usar cada objeto cuando realmente es necesario.

El ejemplo que hemos puesto antes es uno de los muchos casos donde si es recomendable el uso de una tabla de extensión.

Pero además, las tablas de extensión son, una solución extraordinaria para la personalización de bases de datos. ¿Qué significa esto? Significa qué, podemos trabajar sobre cualquier proyecto heredado y personalizar cualquiera de sus tablas maestras, sin necesidad de alterar la estructura original de la aplicación, lo que nos permite tener una aplicación base muy generalista que posteriormente, vamos a poder verticalizar o especializar para diversos sectores e incluso llegando al desarrollo a medida.

Ya tengo una tabla de Clientes y es Maestra, ¿Puedo convertirla en Maestra de extensión?

Creo que no, pero aunque se pudiera, te recomiendo que no lo hagas.

La forma correcta de operar, es crear una Tabla maestra de extensión nueva y después, copiar todos los campos de una tabla a la otra, salvo el #ID, y los indices nuevos (que por cierto, son indices complejos).

Además, necesitaras crear nuevos formularios de mantenimiento de datos, ya que hay diferencias que deberían solucionarse con las nuevas fichas de extensión (que no es lo mismo que la tabla de extensión). El resto de los objetos visuales, seguramente si que podrás aprovecharlos.

¡Rizando el rizo!

  • ¿Podemos extender una tabla extendida?, posible si que es, a fin de cuentas, una tabla extendida, sigue siendo una tabla maestra con un #ID de clave única y por tanto, una tabla extendida, puede ser a su vez, la tabla principal para otra tabla extendida. Otra cosa es que tenga sentido crear una relación de este tipo, pero para casos raros, haberlos ¡hailos!

Ya se, no he hablado de como crear objetos visuales para el mantenimiento de este tipo de tabla, pero no quiero “extender” este artículo innecesariamente, llegando a originar el aburrimiento de mis apreciados lectores 😉 . Pero no os preocupeis, otro día será.

PDF Creator    Enviar artculo en formato PDF   
comments: 6 »
ene 8

Búsquedas en 3 plano

Escribo este artículo, para aclarar aún más, si es que se puede, lo que ha descrito bastante bien nuestro amigo Fran Varona en este hilo del foro: Cargar lista Vs. Búsqueda

Una discusión que ha dado muchos quebraderos de cabeza y que por fin se desvela.

Para cada tabla, tenemos una búsqueda, en la que aprovechamos para usar varios indices y así, no tener que definir múltiples búsquedas:

Y en esa búsqueda hemos definido unas variables y unos componentes de búsqueda, para realizar búsquedas complejas.

Si os habéis fijado bien en vBase, veréis que en cada una de las opciones del menú, tenemos un formulario con un alternador, y desde un manejador de evento BUS, se llama a la búsqueda mediante el manejador de objetos:

En el evento, creamos un Manejador de objetos para llamar a la búsqueda y le pasamos los valores a las variables locales, antes de Disparar el objeto. Así, la búsqueda retorna una lista de registros con aquellos que cumplen las condiciones establecidas por las variables.

Tal y como se indica en el foro, las búsquedas siempre se ejecutan en 3º plano, pero esta afirmación solo es válida en aquellos casos en que las búsqueda se realiza por un solo índice, ya que cuando intervienen varios índices para obtener un resultado, las operaciones de Añadir, Cruzar y Quitar se realizan en 1º plano. Esto significa que el rendimiento baja considerablemente en la medida en la que aumenta el número de registros de la tabla en cuestión.

La solución a este problema, es sencilla, crear un proceso para llamar a la búsqueda:

El proceso debe cumplir unas reglas básicas:

  1. El proceso, como destino, debe ser de tipo Lista y para la misma tabla que la búsqueda a ejecutar.
  2. Tener las mismas variables definidas que la búsqueda a ejecutar, y para mayor sencillez, llamamos a las variables exactamente igual que en la búsqueda, de echo, podemos copiarlas.
  3. Creamos un manejador de objetos para llamar a la búsqueda, le pasamos todas las variables, y al finalizar retornamos la lista a la salida.

Ahora ya solo tenemos que crear el manejador de evento en el formulario principal, para llamar al proceso en 3º plano (en vez de a la búsqueda), asegurándonos así, de que esta vez si, la búsqueda se ejecutará en 3º plano y las operaciones de Añadir, Cruzar y Quitar, también.

Pero en este mismo hilo del foro se extiende la pregunta sobre la optimización de este tema, cuando además debemos usar búsquedas con formulario, pero este tema, lo dejare como ejercicio para otra ocasión, aunque la idea ya esta en el aire.

¿Tengo que repetirlo?

Pues vale, lo repito:

Antes de ejecutar el manejador de objetos que dispara el proceso en 3º plano, debemos pedir el formulario para introducir los valores por el usuario, y luego, pasar esos valores al proceso.

PDF Printer    Enviar artculo en formato PDF   
comments: 1 »
dic 2

Instalando soluciones

Cuando vamos a instalar o crear soluciones en Velneo V7 tenemos varias posiblidades:

Partimos de la idea, de que para hacer esto, ya tenemos una solución creada y los que deseamos es, realizar una copia de la misma en otro servidor (vServer V7)

Y ahora mismo, que yo recuerde, se me ocurren 3 formas de hacerlo:

  1. Si el servidor de origen esta en la nube y el servidor de destino esta en local, podemos hacer una copia de seguridad e instalar las soluciones manualmente, copiando la carpeta y creando las soluciones con vAdmin y vDevelop.

    Es un método complicado pero sirve en casos puntuales. Esta forma de copiar soluciones es para usuarios avanzados y necesitaría un artículo dedicado exclusivamente a explicar como realizar esta operación, pero eso será en otro momento.

  2. Con vInstallBuilder, como todos conocemos. Haciendo una copia en un archivo .VIN desde el servidor de origen e instalando con vAdmin en el servidor de destino.

    Este es quizá el método más sencillo y más usado por todos, entre otras razones porque es el componente de Velneo V7 destinado a realizar esta tarea.

  3. Con la opción “Importar componentes” de vDevelop, conectando al servidor de origen y copiando soluciones completas.

    Para realizar esta operación, ejecutamos vDevelop y nos conectamos al servidor de destino, luego elegimos el menú Soluciones y la opción Importar componentes, y en este momento se nos piden los datos del servidor de origen, donde están instaladas las soluciones que queremos copiar.

    Después, sólo tenemos que seleccionar las soluciones que queremos importar a nuestro servidor y finalizar el proceso. De este modo, si la solución ya existe en el destino, será modificada y actualizada, y si no existe, simplemente, será copiada a nuestro servidor.

.

PDF Printer    Enviar artculo en formato PDF   
comments: 1 »
oct 17

Reserva ya el “Manual de usuario de vConta”

Posted in formación, tutores

Ahora ya no es ningún secreto,

Ya esta disponible el “Manual de usuario de vConta” para que puedas sacar el mayor partido a la aplicación de contabilidad de vTodo.

Claro que nos surge una pregunta, la primera que todos haceis al conocer la noticia:

Hay un manual de usuario, y vConta tiene 3 versiones:

  • Básica
  • Profesional
  • Empresarial

¿Para que versión es válido el manual?

La respuesta es: “para todas las versiones”

Sea cual sea la versión que has adquirido, el manual se adapta perfectamente, el único inconveniente que puedes encontrar, es que en el manual se hablará de opciones que no estan incluidas en tú versión.

Pero eso tiene fácil solución, solicita la versión empresarial a vTodo y podrás disfrutar de toda la potencia de vConta.

Para todos aquellos que penseis asistir a “Life Is Soft 2012” y querais llevaros algún ejemplar en papel, os recomiendo que hagais la reserva cuanto antes, ya que las unidades disponibles serán limitadas y podrias quedarte sin el.

¿Como debes hacer la reserva?

Envia un email a info@vtodo.es y solicita las copias que necesites, su precio es de 29,90 € I.V.A. incluido (gastos de envío aparte).

Gracias al equipo de vTodo por su apoyo en este proyecto.

Y no olvideis, que aquellos que aún no han adquirido el libro “Cambia el chip con Velneo V7” también pueden reservar una copia impresa para llevarsela puesta en “LIS-2012”

Un abrazo fuerte a todos.

¡Reservalos ya! y llevatelos en LIS-2012

Create PDF    Enviar artculo en formato PDF   
comments: 1 »
sep 5

¿Función o proceso?

En Velneo V7, como en la mayoría de los lenguajes y herramientas de programación, hay problemas que podemos resolverlos de distintas formas y obtener el mismo resultado.

La diferencia no esta en el resultado en si, que de un modo u otro será el mismo, la verdadera diferencia está en usar el método óptimo para llegar a ese resultado.

Y es aqui, donde se nos plantea la siguiente duda, en multitud de ocasiones, para solucionar un problema, podemos usar una “Función” o un “Proceso”.

A fin de cuentas, una “Función” es muy similar a un “Proceso” en muchos aspectos, aunque también tienen algunas diferencias

La función:

  • Permite hasta 10 parámetros de entrada, aunque esa barrera ya la habiamos superado cuando se publicó este articulo: Parámetros en funciones de V7
  • Tiene un parámetro de salida, aunque también habiamos solucionado este problema encadenando los valores (en el mismo artículo).
  • La función no tiene una tabla de origen, y tampoco destino.

El proceso:

  • Podemos usar tantos parámetros como necesitemos, eso si, usando el manejador de objetos para poder pasar y recibir parámetros.
  • Podemos obtener varios valores de retorno.
  • No es necesario indicar todos los parámetros en la llamada, solo aquellos que sean realmente necesarios.
  • El proceso puede ser: sin origen, o con origen y destino en una misma tabla (de tipo ficha o lista) dependiendo de donde lo vayamos a llamar.

Veamos ahora un ejemplo real que podriamos usar para solucionar un problema común:

La función:

El proceso:

Como podemos observar, las dos imagenes representan lo mismo:

Pasamos como parámetros de entrada los campos #ALM (almacén) y #ART (artículo), y comprobamos si existe el registro en la tabla de “Stock”, y si no existe, lo creamos. Al finalizar retornamos el #ID del registro creado (esto no es necesario pero se ha incluido para ver el retorno de valores).

Ademas, la definición es practicamente igual:

  • Las mismas variables en el panel de subobjetos
  • Las mismas instrucciones en el editor central
  • Y el mismo origen, en el panel de propiedades, aunque en el caso del proceso, esto puede cambiar.

Hemos visto como se definen las funciones y los procesos, pero como sería la llamada para ejecutarlos, porque aqui es donde realmente se diferencian:

En el caso de la función, la llamada es asi:

Necesitamos una variable a la cual asignamos el resultado que retorna la función, y despues, llamamos a la función pasandole todos los parámetros que necesita.

En el caso del proceso, la llamada mediante el manejador de objetos es asi:

La llamada mediante el manejador de objetos es un poco más compleja, ya que hay que definir el objeto en el manejador, luego asignar los valores a las variables con SET, después, ejecutar el proceso y, en último lugar, recoger los valores retornados con GET.

A la vista de los ejemplos, podemos ver que el uso de uno u otro método es aconsejable en los siguientes casos:

  • La función es obligatoria cuando necesitemos hacer uso de ella desde un contenido inicial.
  • El proceso es recomendable cuando necesitemos muchos parámetros o vayamos a retornar varios valores.
  • El proceso es obligatorio si queremos ejecutar en 3º plano.
  • El proceso es recomendable cuando los parámetros de entrada no sean obligatorios

Gracias por la visita y hasta pronto.

PDF    Enviar artculo en formato PDF   
comments: 6 »
ago 20

Para que sirven las capas (2ª parte)

Posted in rayaduras

Ahora que ya hemos visto un poco de historia, veamos realmente para que sirve una capa.

A los Celtas y a los Germanos,  como ya dije ayer, les servia para protegerse del frio, eran listos, por fin alguien ha utilizado la moda con un proposito inteligente, aunque muy listos tampoco eran, porque me pongo en su lugar, imaginariamente claro, y en pleno invierno en el norte de europa, hace un frio que pela, y les debia entrar un chorrillo por la entrepierna que te cagas, sin embargo ellos preferian cubrirse la espalda, quizá por comodidad en momentos de urgencia.

En el caso del Aguila Roja y de El Zorro les servia para ocultarse en callejones oscuros, por la noche, claro, porque de dia andaban por los tejados como los gatos negros.

Y en el caso de Superman y Superlópez, pues pa mi que la capa era pa llamar la atención del respetable, y porque eran buenos seguidores de Alonso (Capa roja con logo amarillo como Ferrari, y traje azul con el logo amarillo, como la bandera de Asturias). Aún me sigo preguntando ¿porque llevaban los calzoncillos por fuera? y sobre todo, como podian mear en un momento de prisas, primero se quitaban los calzoncillos y luego se bajaban los pantallones, y la capa ¿para qué?, ¿pa que no les vean el culo?.

Luego aparecio Batman, y aunque no me gusta destrozar el final de las pelis, para los que aún no lo saben, Batman es en realidad Bruce Wayne, y tenia muchos enemigos, pero vamos, la mayoria eran por envidia cochina. Y como tenia pasta, se compro un monton de capas, y hasta podia volar con ella. Pobre hombre, al final averiguaron la localización de su guarida, porque siguieron el rastro de guano que dejaba tras de si.

Para las aplicaciones como Autocad y Photoshop las capas fueron muy importantes, ya que permitian ocultar y visualizar el contenido de cada una de esas capas, con tanto exito, que como no podia ser menos, Harry Pepote les mangó la idea y se hizó con su propia capa de invisibilidad, ahora me ves!, ahora no!. Pero cachondo, si sabemos que estas ahi, si es una peli y te ponen difuminao, torpe, que te estamos viendo aunque lleves la capa.

Mejor era la capa de invisibilidad de Karate Kid con su disfrad de “ducha andante” para pasar inadvertido, asi se puede, engancha a la chorba y ale, vente a la ducha con el chache. Que jodio el pollo, ¿o era grulla?

Luego empezo a ponerse de moda el HTML y también empezarón a utilizar las capas (con etiqueta DIV, como las marcas importantes), y que maravilla, creabas una capa y metias cosas dentro, y luego venia el CSS y la endiñaba a Rubalcaba (a la Izquierda), o a Rajoy (a la Derecha), pero me quede flipando cuando vi que algunas flotaban y pense, ¡coño!, ésta es como la Alfombra de Aladdin.

Porque, ¿que es una alfombra?, es una capa que nos permite ocultar el polvo y las pelusas al barrer, basicamente, sirven para lo mismo que las de Photoshop.

Y para opiniones raras, la de los puristas:

  • Que definen las capas en HTML como porciones de codigo que pueden ser tratadas como un elemento único e independiente y que podemos alterar de diversas formas, moviendola a placer, escribiendo encima o debajo de ella (encima o debajo, esto me gusta), e incluso podemos cambiar el color, hacer transparencia o poner una foto de fondo, pero nada mas lejos de la realidad, no deberiais creer nada de esto, que seguro que es mentira.

La verdad es que antes todo esto me sonaba a chino, no entendia nada hasta que mi amigo Domingo me dio un cachete y me hizo ver que podia revolucionar el mundo de la moda.

Pero nada tan natural como las cebollas, ademas es increible: quitas una capa de la cebolla y adivina que hay debajo, pues otra capa. El otro dia para investigar como era posible y para comprobar si la cebolla tenia mas capas que Photoshop, agarré un cuchillo y parti la cebolla en dos, luego miré la cebolla …

… y me dio tanta pena, que me puse a llorar. Al final no pudé contar las capas, y siempre tendre esa duda. Pero es que me dan tanta pena y me pongo tan sensible con las cebollas.

¿Habrá 3ª parte? 😉

PDF Creator    Enviar artculo en formato PDF   
comments: Comentarios desactivados en Para que sirven las capas (2ª parte)
ago 19

Historia de las capas (1ª parte)

Posted in rayaduras

Historicamente, las capas siempre han tenido mucha importancia, asi que, vamos a hablar de ellas y como influyen en nuestros desarrollos.

La capa ya era usada por los antiguos pueblos Celtas y Germanos para protegerse del frio, y también por los soldados Romanos.

El uso de la capa en España se remonta a varios siglos atras, concretamente a la epoca del Aguila Roja, aunque no fue el único, otros que llegarón después como El Zorro (español afincado en California) e incluso Superman también la usaron, aunque este último copio el diseño de su traje y de la capa del mismisimo Superlópez, claro que los americanos, supieron tunear el traje y darle más estilo, pero no por ello deja de ser plagio.

Luego llegaron las computadoras y éstas tambien querian utilizar capas, ¿como no?, esto mejora enormemente el look, y aplicaciones como Autocad y Photoshop entre las más conocidas, volvierón a poner de moda de ésta prenda.

Despues llego Shrek y por fin pudimos saber cual fue el origen de las capas, si señor, ni Celtas, ni Germanos, tampoco Superman y ni tan siquiera Superlópez, …. las primeras capas las llevaron “Las cebollas”, cierto, lo dijo Shrek y yo me lo creo.

Y si no, haber quien me demuestra lo contrario, ¿quien fue primero? los Celtas o las Cebollas, pues eso.

Mañana la (2ª parte) 😉

PDF    Enviar artculo en formato PDF   
comments: Comentarios desactivados en Historia de las capas (1ª parte)
ago 8

A por medalla olimpica

Posted in off topic

Pues si, también tenemos a una Bolañega en las olimpiadas de Londres 2012.

Se trata de Macarena, jugadora de la selección española de Balonmano.

Vamos a por la medalla, ¡¡¡ánimo!!!

Create PDF    Enviar artculo en formato PDF   
comments: Comentarios desactivados en A por medalla olimpica
jul 3

Sioux: la solución definitiva

Posted in aplicaciones, saas, v7, web

Ya desde hace tiempo que vengo dando vueltas a una idea que no me deja tranquilo.
Es una idea que me persigue como mi propia sombra y llega un momento en que debes enfrentarte a ella y aportar una base para establecer una relación duradera y sólida. A fin de cuentas es tu sombra, y debes saber convivir con ella durante el resto de tu vida.

Despues de muchas pruebas y de haber investigado y desarrollado todo, y superadas las fases inciales decides que no es suficiente, que puede ser mejor, ¡que debe ser mejor!

A veces, solo es necesaria una pizca de inspiración, y ahora es el momento.

SIOUX es la potencia de Apache, unida a la potencia de la base de datos de Velneo V7, y unida a la potencia de nuestra Gestión.

¿Que hemos conseguido?

Pues casi nada, una Gestión que podrá ser ejecutada en Windows, Mac, Linux, iPad, Android, y cualquier otro sistema con tan solo un navegador.

¿Es fácil?

No, no ha sido fácil, como he dicho, llevamos varios años de investigación, y creemos que ahora si, tenemos la solución óptima.

¿Que puede hacer?

Pues todo lo que puedas imaginar.

¿Lo necesitas para tu empresa?

Llama y te prepararé un presupuesto adaptado a vuestras necesidades.

¡¡¡SIOUX es puro SaaS!!!

Edito:

Aqui dejo unas imagenes de la primera versión de SIOUX que realicé:

Es solo una pequeña parte de lo que realmente tiene.

Menús

Listas de registros

Y formularios para edición de registros.

Por ahora no es posible mostrar la nueva versión, estara unos dias en el horno, a fuego lento, pero os mantendre informados.

PDF Printer    Enviar artculo en formato PDF   
comments: 3 » tags:
jun 19

Oferta en funciones: 3 x 1

Estamos de oferta señoras y señores, …

vamos, que me las quitan de las manos, …

Ya solo me quedan 3, lleveselas y pague solo una.

Antes de comprar una oferta, deberiamos saber los que compramos, ¿no?

¿Qué es una función?

En la programación tradicional, en los lenguajes de 3 generación, una función es una porción de código que se separa del resto con el fin de abstraer la programación y evitar usar el mismo código de forma repetitiva. Es decir, si tengo que usar el mismo código en diferentes partes de una aplicación, creamos una función y llamamos a esa función cada vez que la necesitemos.

En Velneo V7, como en el resto de herramientas, tenemos 2 tipos de funciones:

  1. Funciones predefinidas, que son las que incluye la propia herramienta para las tareas más básicas:
    • round()
    • len()
    • choose()
    • currentDate()
    • etc…
  2. Funciones definidas por el usuario, que son aquellas que podemos definir nosotros mediante porciones de código o comandos de instrucción (igual que el usado en los procesos)
    • FUN_USER(param1,param2)

Y en este artículo nos centraremos en las funciones definidas por el usuario y debemos tener claras algunas consideraciones:

  • Las funciones hacen uso de los parámetros y podemos definir funciones que tengan hasta un máximo de 10 parámetros, aunque también podemos definir funciones que no necesitan ningún parámetro
  • El código de una función es el mismo que el usado en los procesos, y en algunos casos, seremos nosotros mismos, los que tengamos que decidir si realizamos una determinada tarea mediante una función o un proceso, ¿qué es mejor?
  • La función retorna un único valor, como resultado de ejecutar el código de la misma.

Ahora que ya hemos aclarado para que sirve una función y como debemos usarla, vamos a plantear el problema, o mejor dicho, los problemas que se nos presentan:

  1. Resulta que, con la salida de la versión 7.10 de Velneo V7, y la posibilidad de crear fórmulas y procesos JavaScript, he caido en la cuenta de que me falta algo, ¿dónde estan las funciones JavaScript?, tenemos fórmulas, tenemos procesos, pero no tenemos funciones.
    • El caso, es que despues de comentarlo con soporte, y de llegar a la conclusión de que no hay una solución clara a este problema que parece ser bastante complejo, y no tendrá solución viable a corto plazo, se me ocurre la siguiente solución, en la que afortunadamente, coindidimos con la respuesta de soporte:
    • No podemos crear funciones en JavaScript, pero hay que ser positivo y ver lo que si podemos hacer. Podemos crear un proceso JavaScript y llamar al proceso desde una función. No es la solución ideal, pero ¡es una solución!.
  2. Luego, de esta pequeña charla, cai en la cuenta de que podiamos llevar esta solución un poco mas alla, y de paso, solucionar el 2º problema. ¡No podemos ejecutar funciones en 3º plano!
    • ¿Cómo que no?, si ya hemos visto, que podemos llamar al proceso desde una función, esta misma solución nos vale para ejecutar las funciones en 3º plano. Para esto, solo hay que crear la función, y del mismo modo, llamamos a un proceso mediante el Manejador de objetos y disparamos el proceso en 3º plano. ¡Otro problema solucionado!
  3. Pero no acaba ahi la cosa, ya que uno de los problemas principales, para el cual se requeria el uso de funciones JavaScript, era poder usarlas desde contenidos iniciales en las fómulas de los campos.
    • Asi que, despues de lo dicho anteriormente, ya deberiais saber la solución. ¡Si!, crear una función que llame a un proceso en V7 o JavaScript, eso ahora da igual. Lo que importa es que con esta solución, en realidad, lo que hacemos es conseguir ejecutar procesos en los contenidos iniciales, que por definición, tampoco es posible. Te lo repito: “Si necesitas ejecutar un proceso desde un contenido inicial, ¡ya es posible!”

De esta forma, y con una única solución, estamos resolviendo 3 problemas que se nos pueden presentar con frecuencia.

Si necesitas ayuda para cualquier proyecto, seguro que podremos llegar a algún acuerdo. Aqui estan mis datos de contacto:

http://www.ascsl.com/about/

PDF Printer    Enviar artculo en formato PDF   
comments: 2 »