Entradas

Eliminar mensajes Warning en un KB GeneXus

Imagen
Para mejorar tu KB #GeneXus y eliminar todos los mensajes WARNINGS en el Build All, los  paso que yo realizo son: 0) Tener un backup de la KB (export, congelar version o copia) 1) Hacer un Rebuild ALL sin errores, puede tener Warnings.  2) Editar las propiedades del Generador y en  Warning treated as error y poner spc0005 spc0008 spc0023 spc0024 spc0025 spc0043 spc0046 spc0047 spc0047 spc0051 spc0158 spc0136 En esta lista se pueden agregar y quitar dependiendo cuales es la exigencia que pueda tener esa KB. 3) Hacer otro REBUILD ALL y corregir todos los errores nuevos que aparezcan. Testear y subir al server en caso de ser necesario. 4) Ignorar aquellos Warning que no voy a tomar en cuenta en forma global. Editar las propiedades del generador y en  Disabled Warnings poner: spc0096 spc0107 spc0142 spc0038 spc0060 spc0087 La lista de warnings ignorados en forma global del paso anterior, hay que personalizarla para cada KB. La lista anterior, no muestra warnings por indices, pues tienen

Caracteristicas de GeneXus que vale la pena conocer: Background Specification

Imagen
En Genexus 16, pues hacer que cuando se salva un objeto, el mismo se especifique automáticamente, en background.  Esto tiene ventajas y desventajas.  Si tengo procesador suficiente (sobre todo con varios cores) , generalmente acelera el desarrollo, porque cuando largo el build all o un run, ya encuentra todo especificado y generado.  Si tengo un procesador algo limitado, puede hacer más lento, sobre todo si hago salvado de objetos muy frecuentes o genero mucho con patterns.  De cualquier manera, conviene conocerlo: 

Funcionalidades de GeneXus que vale la pena conocer: Properties Data Type

Imagen
  El   Properties   Data Type ( https://wiki.genexus.com/ commwiki/servlet/wiki?31606, Properties %20Data%20Type ) es un tipo de datos que permite manejar en memoria un conjunto de valores de clave y valor.  Tiene los métodos, Set, Clear, Get, Remove, ToJson, FromJson y Count.  Para recorrerlos todos, se puede hacer for & property  in &myProperties        msg(& property .Key)        msg(& property .Value)  endfor Es muy util en varios escenarios, por lo que conviene conocerlo.  Puede servir para hacer acumulados en memoria para guardar los filtros seleccionados por el usuario y muchos mas.  Algunos ejemplos de uso, se puede ver en: https://wiki.genexus.com/commwiki/servlet/wiki?37750,Consuming+JSON+with+GeneXus+Properties+Data+Type

Funcionalidades de GeneXus que vale la pena conocer: DATE Constants.

Imagen
Algunas veces en el código tenemos que poner una fecha como constante. Una alternativa a esta función, es usar el formato #yyyy-mm-dd# , como constante. Por ejemplo:   &InitialDate =# 2007 - 01 - 01 # &DateTime = #2020-01-01 10:00:00# Esta funcionalidad está desde hace varias versiones, pero por algún motivo, no se usa demasiado. He visto que usan ymdtod(2020,01,01) que para mi queda bastante mas confuso. Más información en el siguiente link: Date Constants

Caracteristicas de GeneXus que vale la pena conocer: GXServer Quality Assistant

 En GeneXus 17 Upgrade 2, se va a agregar una funcionalidad que permite mejorar la calidad de nuestro código: GXServer Quality Assistant.  Al momento de subir el código se analiza el mismo y a través de avanzados algoritmos de inteligencia artificial nos da un diagnóstico de la calidad del código que intentamos subir.  Algunos de los mensajes que pude probar: GQA001 - In that state, don't even think about uploading that object. GQA002 - Don't update that object. The code of the same can be improved.  GQA003 - The object you are uploading will have errors in the next 5 days.  GQA004 - We recommend that you monitor it intensively.  GQA005 -  Not much effort was put into programming this object. It is recommended that you put the batteries  GQA006 -  Do you think that with this object you are going to solve a problem? I do not think so.  GQA007 - Your contribution has not been the best, you can and should try harder.  GQA008 -  The quality of the object is worthy of praise  GQA009

Características de GeneXus que vale la pena conocer: Dynamic Transaction (UNION)

Imagen
Problema: Tengo una tabla de Operaciones, que tienen movimientos que son generados por otras operaciones, como pueden ser DUA, Líneas de Duas, Conocimientos, Lineas y se pone como Referencia en la tabla de operaciones.  Como hacer un "integridad referencial" desde una tabla a varias tablas?.  En la tabla de Operaciones, voy a tener unos atributos, LuciaRefTpo y LuciaRefID, que tiene el tipo y el identificado de la referencia.  Esto se puede crear como un  Dynamic   Transaction , que es una transaccion que se le y se hace el Data Provider asociada a la transacción.  Los atributos con que armo la referencia son los campos claves de las demas tablas.  Va a generar una vista en la base de datos, que hace la UNION de la concatenacion de la tablas.  Luego, puede usarse como una tabla normal, con integridad referencial que chequea contra todas las tablas, haciendo que no se puedan grabar Operaciones, que no tengan una referencia valida.  Y también se puede usar como lectura:  for ea

Caracteristicas de GeneXus que vale la pena conocer: Progressive Web Application (PWA)

Imagen
Con GeneXus se pueden hacer aplicaciones web progresivas o PWA. Son una buena opción para desarrollar aplicaciones WEB que se comporten como nativas. Son Responsive, permiten ser usadas aun sin conexión y acceden a varios de los periféricos de las computadoras o celulares.  Hay un buen video que explica que es una  PWA  y otro de como hacerlas con GeneXus.  Tambien hay informacion en el wiki de GeneXus https://wiki.genexus.com/commwiki/servlet/wiki?42601,How%20to%20create%20a%20PWA%20using%20GeneXus https://wiki.genexus.com/commwiki/servlet/wiki?42600,Toc%3AProgressive+Web+Applications+in+GeneXus

Características de Genexus que vale la pena conocer: DataSelectors con USING o IN

Imagen
Los   Data Selectors   con objetos GeneXus que permiten almacenar condiciones (WHERE) y formas de ordenar (ORDER BY) de forma que puedan ser reutilizados en varios objetos.  Tienen varias ventajas:  * El código queda mas fácil de leer y se escribe menos * Encapsulan conceptos, como podría ser DOCUMENTO_ACTIVO (que tuviera un ESTADO <> 'ANU') y podria usarse en todos los lugares donde solo se necesitan los DOCUMENTOS no anulados.  * Centralizan el código, por ejemplo, si se necesita cambiar el concepto de DOCUMENTO_ACTIVO, se cambia solo el data selector y todos los objetos que lo usan, van a ver reflejado el cambio en las condiciones.  Una opción poco conocida de los data selector es que permiten usarse con USING (con lo cual agregan sus condiciones lo que se tenga el for each) o con IN , con el cual se hace una subconsulta para resolver la consulta.  Por ejemplo, si tengo la tabla  Empresa *EmpresaID EmpresaActiva Defino un Data Selector EmpresasActivas con la condición

Características de GeneXus que vale la pena conocer: LocalDB

Imagen
En GeneXus 17 Upgrade 1 , una característica interesante para aquellos desarrolladores que trabajan con muchas bases de conocimiento en su maquina, es que pueden usar LocalDB.  LocalDB es una funcionalidad de SQL Server Express, que esta orientada a desarrolladores.  Que ventaja tiene esto?  Con GeneXus usando LocalDB, la base de datos va ser conectada cuando se abra la base de conocimientos GeneXus y desconectada (detach) luego que la base de conocimiento sea cerrada. Esto hace que el archivo de base de datos no va a estar bloqueado cada en forma permanente y esto va a hacer mucho mas fácil el borrado, movido o clonado de las KB y todo los directorios que usan.  Para quienes usen LocalDB, va a ser mucho mas fácil hacer utilitarios para el manejo de KB.  Además, se puede liberar memoria en las maquinas de desarrollo que hoy es utilizada por SQL Server en mantener las bases de datos conectadas. 

Características Genexus que vale la pena conocer: Custom Builds

Imagen
 Es una forma de hacer comandos dentro de GeneXus que pueda saltarse algunos pasos para hacer más rapido algunos procesos de desarrollo.  Sirve para automatizar algunas tareas repetitivas.  Por ejemplo, puedo hacer un  Custom   Build  para generar todos los SDT (si estoy en .NET).  Puedo usarlo para seleccionar todos los objetos que se contiene 'Cliente' en sus objetos y sólo se generan los SDT cuando ejecute el  Custom   Build .  Para crear y editarlo se hace Tools / Options /  Custom   Builds y si se puede elgir el Scope ( build  all, Rebuild All, Run with this only, etc) y se pueden habilitar varios pasos ( haciendo click en los tres puntitos ...) Aparecen en el menu contextual que se aparece con el boton derecho sobre el objeto:  Más información en:  https://wiki.genexus.com/ commwiki/servlet/wiki?43849, Options+-+ Custom + Build    Esto hay que hacerlo en cada instalación de GeneXus.