Bueno, pues decía (por descuido con la cuenta de mi compañero Victor) haber encontrado solución a mi problema de ralentización. Pero no observé que la base de datos informaba de (posible) error redundante por meter en la fórmula de contenido inicial de los campos el campo a modificar. Aunque parecía funcionar bien en el uno a uno (tocar un registro en formulario) sobre la rejilla avanzada era insufrible de lenta.
Seguí esta tarde un poco más a locura total. Quitando la vista de datos, desactivando y activando eventos, quitando todas las conexiones de evento … ¡ y seguía ralentizando !
Suponía que el fallo estaba en la base de datos y ya encontré dónde.
Para todos aquellos que usamos vERP os diré que la función POR_IVA de la plantilla vERP causa MI problema. Aunque está en la B.D. de vERP no la utilizan, a no ser en el ecosistema.
El caso es que si la retiro de los dos campos fórmula que la llamaban va normal, rápido. Quizá en 3P no se note pero en el interfaz del usuario y rejillas penaliza una barbaridad.
Y da igual si tengo montones de conexiones y de eventos y variables globales en memoria. Eso no era la causa en mi caso.
Contenido del campo fórmula #POR_IVA:
fun:POR_IVA@cntt_dat.dat(#ART.REG_IVA_VTA, #EMP, currentDate())
Contenido del campo fórmula #PRE_PVP:
round(#PRE_NET*(1+(fun:POR_IVA@cntt_dat.dat(#ART.REG_IVA_VTA, #EMP, currentDate())/100)),#EMP.DEC_IMP)
Código dentro de la fórmula POR_IVA de la B.D.:
// Rem ( Devuelve el % de IVA según parámetros )
Cargar lista ( EMP_M@cntt_dat, ID, EMP, , , )
Recorrer lista solo lectura
Set ( POR_IVA, choose( FCH < #EMP.FCH_CHG_IVA,
choose(REG_IVA=“G”, #POR_IVA_GEN_ANT,
choose(REG_IVA=“R”, #POR_IVA_RED_ANT,
choose(REG_IVA=“S”, #POR_IVA_SUP_ANT,
choose(REG_IVA=“E”, #POR_IVA_ESP_ANT,
0)))),
choose(REG_IVA=“G”, #POR_IVA_GEN,
choose(REG_IVA=“R”, #POR_IVA_RED,
choose(REG_IVA=“S”, #POR_IVA_SUP,
choose(REG_IVA=“E”, #POR_IVA_ESP,
0)))),
) )
Set dato de retorno ( POR_IVA )
Ehm. Solo falta ver si encuentro cómo hacer que funcione mejor.
Edit: Conseguí hacer funcionar rápido el formulario eliminando el campo fórmula #POR_IVA y reemplazándolo por una variable cargada durante el post inicializado. La rejilla mejoró un poquito por haber eliminado el campo #POR_IVA. Pero poquito para ser rejilla avanzada.