En ocasiones podemos necesitar sumar los elementos de una de las columnas de una tabla, ocurre por ejemplo cuando en el formulario se ingresan cantidades individuales asociadas a diferentes elementos en una tabla y luego se quiere conocer el valor total.

Para realizar esta suma, debemos configurar las acciones en los eventos addIterationremoveIterationchangeIteration de la tabla.

En primer lugar, definimos las variables para el nombre de la tabla, los nombres de las columnas que vamos a sumar y el campo en el que mostraremos el resultado de la suma. Es importante destacar que si vamos a configurar esta suma en una tabla que está dentro de un fragmento, debemos usar [[]] para referirnos a los elementos contenidos en el fragmento y que posteriormente serán invocados desde un formulario. El ejemplo que mostraremos a continuación se ha definido para una tabla dentro de un fragmento, si la tabla está en un formulario, basta con eliminar los [[]].

// -----------------------------------------------------------------------------------------
// Codigo: Sumar 1 columna de una tabla que está dentro de un fragmento 
// Incorporar este código en los eventos addIteration, changeIteration y removeIteration de la tabla
// -----------------------------------------------------------------------------------------
var nombreTabla = "[[tabla-ejemplo]]";
var nombreColumnaSumar1= "importe";
var nombreCampoSuma1= "[[total-importe]]";

CODE


El siguiente paso es obtener los valores de la columna que vamos a sumar e inicializar las variables que vamos a usar para los cálculos.

var valores1 = wf.obtenerValor(nombreColumnaSumar1, nombreTabla);
var i = 0;
var r1 = 0;
CODE


A continuación recorremos la columna y sumamos los valores contenidos en cada fila. En la suma que mostraremos en el ejemplo veremos que se están sumando valores con cifras decimales por lo que usamos parseFloat, para sumas con valores enteros usaremos parseInt.

// Iteraciones para Columna Calulada
for (i = 0; i<valores1.length;i++){

// Iteraciones para Columnas a sumar
    if (!isNaN(parseFloat(valores1[i]))) {
         r1= r1 + parseFloat(valores1[i]);
    }
}
CODE


Por último, mostramos el resultado en el campo que hayamos definido para ese propósito.

// Si se quiere mostrar la suma final redondeada a dos decimales:
var resultado = parseFloat(r1).toFixed(2);
wf.modificarValor(nombreCampoSuma1, resultado);
CODE