| 
  • If you are citizen of an European Union member nation, you may not use this service unless you are at least 16 years old.

  • You already know Dokkio is an AI-powered assistant to organize & manage your digital files & messages. Very soon, Dokkio will support Outlook as well as One Drive. Check it out today!

View
 

Utilizar un javascript para presentar un campo  con subcampos repetibles

Page history last edited by Guilda Ascencio 13 years, 5 months ago

El lenguaje de formatos de CDS/Isis no brinda opciones para presentar campos con subcampos repetibles, a menos que se utilizen los modos MDU y MHU, que nos insertan delimitadores pre-definidos para separar los subcampos.

 

Se incluye aquí un sencillo script que puede colocarse en cualquier formato de salida cuando se desee presentar un campo, repetible o no, que posea en su interior, subcampos repetibles. Insertado en el lugar donde va el campo nos produce el efecto deseado:

 

'<script>
campo="'v16+|$$$|'"
occ=campo.split("$$$")
limite=occ.length
for (ix_occ=0;ix_occ<limite;ix_occ++){
    campo=occ[ix_occ]
    c=campo.split("^")
    total=c.length-1
    for (ix=0;ix<=total;ix++){
        if (c[ix]!=""){
            document.writeln(c[ix].substr(1))
            if (ix!=total)
                document.writeln(" -- ")
        }
    }
    document.writeln("<br>")
}
</script>
'

 

Explicación:

Todo el script tiene que agregarse como si fuera un literal incondicional, es decir, encerrado entre apóstrofes (').

campo="'vxx+|$$$|'"
Inserta el campo a formatear, separando las ocurrencias con $$$  (xx=tag del campo)
occ=campo.split("$$$")
Convierte el campo en un arreglo
limite=occ.length
Obtiene el número de elementos del arreglo
for (ix_occ=0;ix_occ<limite;ix_occ++){
Recorre los elementos del arreglo (ocurrencias del campo repetible)
campo=occ[ix_occ]

Obtiene un elemento del arreglo (ocurrencia)

c=campo.split("^")
Genera un arreglo donde cada subcampo es una fila
total=c.length-1
Determina el número de subcampos (se cuenta desde 0)
for (ix=0;ix<=total;ix++){ Recorre las filas del arreglo (subcampos)
if (c[ix]!=""){ Revisa a ver si la fila no está vacía (como la ocurrencia del campo viene en la forma ^a ... ^b, la primera fila está vacía porque no tiene nada que la preceda)
document.writeln(c[ix].substr(1)) Si la fila no está vacía la coloca en la página
if (ix!=total)
   document.writeln(" -- ")
Si no es el último subcampo, coloca un delimitador en la página
document.writeln("<br>") Terminó de procesar los subcampos de una ocurrencia. Por lo tanto, inserta el separador de las ocurrencias

 

Sustituya los delimitadores " -- " y "<br>"  por aquellos que correspondan a la presentación que Ud. está preparando. No olvide colocar las comillas.

 

Puede incluir este script tantas veces como campos con subcampos repetibles quiera presentar.

 

Para usuarios avanzados.

Este script puede ser una función que reciba el valor a presentar y devuelva el valor formateado. En este caso, incluya en el formato www/prologoact.pft la función que prepara la salida e incluya donde así lo necesite la llamada a la función.

 

Ejemplo:

Incluya en prologoact.pft la siguiente función:

 

'<script>

function FormatearSubcamposRepetibles(campo,sep_sc,sep_occ){

     resultado=""   
     occ=campo.split("$$$")
     limite=occ.length

     for (ix_occ=0;ix_occ<limite;ix_occ++){
         campo=occ[ix_occ]
         c=campo.split("^")
         total=c.length-1
         for (ix=0;ix<=total;ix++){
             if (c[ix]!=""){
                 resultado+=c[ix].substr(1)
                 if (ix!=total)
                     resultado+=sep_sc
             }
         }
         resultado+=sep_occ
     }

          return resultado

}
</script>
'

 

y en la pft con el formato, cada vez que desee presentar un campo con subcampos repetibles, incluya:

'<script>

salida=FormatearSubcamposRepetibles("'vxx+|$$$|'"," -- ","<br>")

document.writeln(salida)

</script>

'

Se envían como parámetros el campo, el delimitador a colocar entre los subcampos y el delimitador con el cual separar las ocurencias.

 

Si este formato va a ser utilizado en el IAH y se utiliza el llamado de la función FormatearSubcamposRepetibles, recuerde entonces incluir el Script con la función en el formato ahhead.php localizado en la carpeta htdocs/iah/scripts.

 

 

Comments (0)

You don't have permission to comment on this page.