Optimizar carga de formularios


([N4] SyP) #1

Estoy optimizando la carga de un formulario que en cloud tardaba entre más de 5 seg.
Es un fomulario con muchos subformularios. Todos están optimizados con las búsquedas en 3º plano… Usando el monitor de vClient, lo único que hacía era leer unas variables en disco para mostrar una información u otra. He cambiado las condiciones de visibilidad poniendo en lugar de variables campos enlazados y ha mejorado bastante.

Ahora las preguntas, ¿Hay alguna forma de condicionar la visibilidad de las columnas de una rejilla que no sea con variables?, ya que los campos si que puedo condicionar su visiblidad a un valor de una tabla enlazada, pero las columnas de una rejilla no.

Para probar, he quitado todas las rejillas que tenían columnas condicionadas y se gana un poco más, pero aun así sigue tardando un par de segundos. ¿Alguna idea más?

Gracias


([N4] eic) #2

Hola.

Imagino que, además de que las búsquedas estén en 3º plano, tendrás también optimizado el tema de que las rejillas de los subformularios no se carguen hasta que se muestren. No tiene pinta de que sea así, pues si no, no te tardaría tanto tiempo.

Si estás trabajando con 7.22.1, tienes una opción en los controles de vista de datos llamada “Modo de carga”, que debes indicar como “Al mostrar la primera vez”.


([N4] SyP) #3

Gracias por la respuesta. Estoy en la versión 7.22.1 y todos los subformularios con rejilla tienen el modo de carga “Siempre que se muestra”. Los que llevan búsqueda, la tienen realizada en 3P (los que no es cargar un histórico)

Si que es cierto que hay muchos subformularios, pero tampoco me cuadra. Tras quitar las variables globales, tarda entre 1 y 2 segundos y con el monitor de vClient no veo ninguna transacción.


([N2] Esfero) #4

As comprobado los mensajes del vAdmin??, si tienes algún problema con un índice de una tabla que esteas utilizando el resultado puede ser ese, una carga muy lenta.

Prueba también a poner un mensaje en los procesos de carga de los formularios para comprobar cuales se están disparando en la carga inicial, ese modo de carga, por las pruebas que he realizado, puede realizar cargas que no esperamos. Por ejemplo, si utilizas el control por JavaScript para que se habrá un formulario solo una vez, este modo de carga provoca la recarga de todos los formularios que tengamos abiertos y lógicamente tengan este tipo de carga establecido.
El problema surge por cómo tenemos que leer los formularios abiertos desde JavaScript. El control de formulario abierto y este modo de carga son a día de hoy incompatibles, vamos si quieres que tu aplicación funcione a una velocidad adecuada.


([N4] SyP) #5

Muchas gracias por la información.
A ver si saco un hueco y hago las pruebas y te digo como ha ido.


([N3] Servinfor) #6

Por curiosidad aunque supongo lo has tenido en cuenta, no habrás puesto alguna fórmula en las rejillas, ni colores, que retarden la carga, si metes alguna formula que sea de contenido inicial, no de fórmula o incluso creas un proceso que que un campo numerico coja el valor del campo formula y muestras el campo numerico


([N4] SyP) #7

Gracias. No hay campos fórmula. Tengo pendiente de realizar la prueba que comentó Esfero, que se me había pasado.


([N4] SyP) #8

He realizado la prueba de poner un mensaje en el post-ini de cada formulario que se usa en el artículo y al abrir el formulario de artículos, que contiene 17 formularios entre sub-formularios y sub-sub-formularios muestra los 17 mensajes.
He probado a poner dos separadores con una condición de visibilidad y un botón de información extendida (uno con 2-3 sub y el otro con todos), pero en ese caso carga todos los subformularios de ambos separadores.
Lo que no hace es cargar las listas (comprobado también por mensajes).
En local funciona bien, pero en cloud le cuesta un par de segundos.

Si se os ocurre alguna solución, la probaremos.

Gracias


([N4] sergioinfortic) #9
He probado a poner dos separadores con una condición de visibilidad y un botón de información extendida (uno con 2-3 sub y el otro con todos), pero en ese caso carga todos los subformularios de ambos separadores.

Eso es muy cachondo, me pasó también.

Prueba a en lugar de crear 2 separadores con condiciones para el tema de informacion básica/exendida a:

  • 1 control pila de formularios
  • Contiene sólo el formulario de información básica
  • Botón de Más datos
  • El botón quita la información básica y la sustituye por el formulario que contiene todas las fichas en un separador
var formulario = theRoot.dataView();
var separador = formulario.control( "PILA_PRIN" );

// Quita los formularios
var posicionInsercionTab = separador.findForm("ERP_app/ART_M_GEN");
if ( posicionInsercionTab != -1 )
	{
		separador.removeForm( posicionInsercionTab );
	};

// Inserta más datos
var numSubForm_Mas = separador.findForm("ERP_app/ART_M_MAS_DAT");
if ( numSubForm_Mas = -1 )
{
	separador.insertForm( 0, "vERP_NRK_app/ART_M_MAS_DAT");
};