Capítulo 8. Objeto CurrentContext

Detalles de uso:
getFilaFormula
public int getFilaFormula()
Retorna el código de la fila (strcodren) de la iteración actual de la fórmula (variable) en ejecución
 //Se puede usar de las siguientes formas en su fórmula javascript
 
//Como llamado de un método
 var fila = CurrentContext.getFilaFormula();
 
 //Como si fuera una propiedad
var fila = CurrentContext.filaFormula;
 
 
Returns:
int
<title>·         getBloqueFormula</title>
public int getBloqueFormula()
Retorna el código del bloque (strcounca) de la iteración actual de la fórmula (variable) en ejecución
 //Se puede usar de las siguientes formas en su fórmula javascript
 
 //Como llamado de un método
 var bloque = CurrentContext.getBloqueFormula();
 
 //Como si fuera una propiedad
var bloque = CurrentContext.bloqueFormula;
 
 
Returns:
int
<title>·         getFormatoFormula</title>
public int getFormatoFormula()
retorna el código del formulario (strcodfor) de la iteración actual de la fórmula (variable) en ejecución
 //Se puede usar de las siguientes formas en su fórmula javascript
 
 //Como llamado de un método
 var formato = CurrentContext.getFormatoFormula();
 
 //Como si fuera una propiedad
var formato = CurrentContext.formatoFormula;
 
 
Returns:
int
<title>·         getCurrentBloque</title>
public com.macroproyectos.conexiondb.StrBloque getCurrentBloque()
Retorna un objeto que representa el bloque de la iteración actual de la fórmula (variable) en ejecución
 //Se puede usar de las siguientes formas en su fórmula javascript
 
 //Como llamado de un método
 var bloque = CurrentContext.getCurrentBloque();
 
 //Como si fuera una propiedad
var bloque = CurrentContext.currentBloque;
 
 //las Siguientes son las propiedades del objeto recibido en el ejemplo:
  
    // bloque.strnomunca representa el nombre del bloque
    // bloque.strfecini representa la fecha inicial configurada, puede ser null
    // bloque.strfecfin representa la fecha final configurada, puede ser null
    // bloque.strCodigo representa el codigo de la cuenta (catalogos)
    // bloque.strTipoCuenta información del tipo de cuenta (catalogos)
    // bloque.strTipoDestinacion información del tipo de destinación (catalogos)
     
 
Returns:
Bloque
<title>·         getArea</title>
public int getArea()
Retorna el código area de la entidad (strcodare) que se está procesando (contexto)
 //Se puede usar de las siguientes formas en su fórmula javascript
 
 //Como llamado de un método
 var area = CurrentContext.getArea();
 
 //Como si fuera una propiedad
var area = CurrentContext.area;
 
 
Returns:
int
<title>·         setArea</title>
public void setArea(int area)
Sobreescribe el area de la entidad que se está procesando en el contexto
 //Se puede usar de las siguientes formas en su fórmula javascript
 
 //Como llamado de un método asigna el area 100
 CurrentContext.setArea(100);
 
 //Como si fuera una propiedad asigna el area 100
CurrentContext.area=100; 
 

El cambio de area solo debe usarse en un evento de cargue de formulario.
Parameters:
area -
<title>·         getCodPer</title>
public int getCodPer()
Retorna el código de la periodicidad (strcodper de la tabla str_ctl_codigo_txs) del informe que se está procesando
 //Se puede usar de las siguientes formas en su fórmula javascript
 
 //Como llamado de un método
 var periodicidad = CurrentContext.getCodPer();
 
 //Como si fuera una propiedad
var periodicidad = CurrentContext.codPer;
 
 
Returns:
int
 
<title>·         getCotiIn</title>
public int getCotiIn()
Retorna el código del informe (strcotiin) que se está procesando
 //Se puede usar de las siguientes formas en su fórmula javascript
 
 //Como llamado de un método
 var informe = CurrentContext.getCotiIn();
 
 //Como si fuera una propiedad
var informe = CurrentContext.cotiIn;
 
 
Returns:
int
 
<title>·         getNit</title>
public java.lang.String getNit()
Retorna el nit de la entidad (strnitso) del informe que se está procesando
 //Se puede usar de las siguientes formas en su fórmula javascript
 
 //Como llamado de un método
 var nit = CurrentContext.getNit();
 
 //Como si fuera una propiedad
var nit = CurrentContext.nit;
 
 
Returns:
String
<title>·         getRazonSocial</title>
public java.lang.String getRazonSocial()
Retorna la razón social de la entidad del informe que se está procesando
 //Se puede usar de las siguientes formas en su fórmula javascript
 
 //Como llamado de un método
 var nombre = CurrentContext.getRazonSocial();
 
 //Como si fuera una propiedad
var nombre = CurrentContext.razonSocial;
 
 
Returns:
String
<title>·         getSecuencia</title>
public double getSecuencia()
Retorna la secuencia de codigo_txs
 //Se puede usar de las siguientes formas en su fórmula javascript
 
 //Como llamado de un método
 var sec = CurrentContext.getSecuencia();
 
 //Como si fuera una propiedad
var sec = CurrentContext.secuencia;
 
 
Returns:
double
<title>·         getContextVars</title>
public java.util.HashMap<java.lang.String,java.lang.Object> getContextVars()
Retorna el mapa de variables globales del contexto
Las variables globales pueden usarse entre diferentes fórmulas javascript
 //Se puede usar de las siguientes formas en su fórmula javascript
 
 //Propiedad para asignar un valor
CurrentContext.contextVars.valorGlobal=1;
 
 //Para leer un valor, Si la variable no existe regresa null
var global = CurrentContext.contextVars.valorGlobal;
 
 

NOTA: Se debe tener en cuenta el orden de ejecución de las fórmulas.
Returns:
Object
<title>·         getBloqueFromCode</title>
·         public int getBloqueFromCode(java.lang.String codFor,
                    java.lang.String codigo)
Busca el código del bloque (strcounca) dado el código del formulario y el codigo de la cuenta (catálogos)
 //Se puede usar de las siguientes formas en su fórmula javascript
 
 
 //Para buscar el bloque en el Formulario 100 de la cuenta 1.1.2.3
var bloque = CurrentContext.getBloqueFromCode("100","1.1.2.3");
 
 

NOTA: Si no encuentra un bloque con los elementos parametrizados, regresa -1.
Parameters:
codFor -
codigo -
Returns:
int
getListBloquesDiligenciables
public java.util.List<com.macroproyectos.conexiondb.StrBloque> getListBloquesDiligenciables(java.lang.String codFor)
Devuelve una lista de los bloques diligenciables de un formulario
 //Se puede usar de las siguientes formas en su fórmula javascript
 
 
 //Para buscar la lista de bloques diligenciables en el Formulario 100
var listaBloques = CurrentContext.getListBloquesDiligenciables("100");
//El resultado es un arreglo de Objetos bloques, como el descrito en el método getCurrentBloque
  
 
Parameters:
codFor - código del formulario
Returns:
Lista
<title>·         println</title>
public void println(java.lang.Object msg)
Imprime el valor del indicado en la consola de la aplicación 
 //Se puede usar de las siguientes formas en su fórmula javascript
 
 CurrentContext.println("Este es un mensaje de prueba");
 
 

Si la fórmula tiene código 100, el resultado sería el siguiente:
Formula<100> : Este es un mensaje de prueba

Este mensaje se puede ver en la consola de STORMServer y en la consola de STORMUser.
Parameters:
msg -
<title>·         getMatriz</title>
·         public com.macroproyectos.utils.MatrizDispersa getMatriz(java.lang.String codFor,
                                                java.lang.String counca)
Lee la matriz de datos reportados dado un formato (strcodfor) bloque (strcounca) 
 //Se puede usar de las siguientes formas en su fórmula javascript
 
 //Para leer la matriz de datos del formulario 100, bloque 1
var datos = CurrentContext.getMatriz("100","1");
 
  if(datos ==null)
    {
    //No lo encontró
    }
  else
     {
    //se valida que trae datos...
    
     //Los datos en el Objeto matriz se pueden leer o escribir de la siguiente Forma
      var celda = datos.getCell(1,2);
      //Se lee el dato de la fila 1, columna (strcodcol) 2
     
      //se escribe un dato en la fila 1 , columna (strcodcol) 3 el valor leído de columna (strcodcol) 2 , concatenado con una cadena.
      datos.setCell(1,3,"Valor de columna2:"+ celda);
     
      //otros metodos
      //datos.getCountRows(); // devuelve el número total de filas (incluye 999999)
     
     }  
 

Si no es encontrada una matriz de datos, el método devuelve null.
Parameters:
codFor -
counca -
Returns:
Matriz de datos
<title>·         newMap</title>
public java.util.Map<java.lang.String,java.lang.ObjectnewMap()
Crea un hashmap en blanco, se usa como objeto en las fórmulas javascript, que permite agrupar diferentes propiedades.
 //Se puede usar de las siguientes formas en su fórmula javascript
 
 var obj = CurrentContext.newMap();
 
  //agregando propiedades al objeto creado
  obj.a=1;
  obj.b=2;
  obj.c=3;
 
  //leyendo propiedades personalizadas del objeto creado
  var a = obj.a;
 
Returns:
Object
<title>·         formatNumber</title>
public java.lang.String formatNumber(java.lang.Object o)
Aplica un formateo numérico al parámetro numérico recibido ###,##0.00
 //Se puede usar de las siguientes formas en su fórmula javascript
 
 var a = CurrentContext.formatNumber(100000.2236);
var b = CurrentContext.formatNumber("1000");
 
 CurrentContext.println("Valor de a: "+ a);
CurrentContext.println("Valor de b: "+ b);
 
 
Si la fórmula tiene código 100, el resultado sería el siguiente:
Formula<100> : Valor de a: 100,000.22
Formula<100> : Valor de b: 100,000.00

NOTA: Si el valor no es válido , genera error.
Parameters:
o -
Returns:
String
<title>·         executeUpdate</title>
·         public int executeUpdate(java.lang.String sql,
·                         java.lang.Object... arguments)
                  throws java.lang.Exception
Ejecuta una instrucción update , regresa el número de registros afectados (Soló aplica en STORMServer)
Trabaja con la misma conexión de base de datos que valida el informe, (Misma transacción);
Los cambios solo se ven reflejados , si el procesamiento es OK.
Recibe un SQL y sus argumentos (opcionales)
 // Se puede usar de las siguientes formas en su fórmula javascript
 // Si se desea actualizar por ejemplo el nombre de la entidad, por medio de una formula
CurrentContext.executeUpdate("update str_grl_entidades set strnomsoc=? where strnitso=?",CELDA_NOMBRE,CurrentContext.getNit());
// CELDA_NOMBRE es una celda cualquiera
// CurrentContext.getNit() , Lee el Nit, ver referencia de la función
// En la consulta SQL los parámetros deben especificarse con el signo (?) y no por medio de concatenar valores, para evitar inyección de SQL 
 // Deben ir en el mismo orden que se colocó en la consulta
 

Deben ser muy cuidadosos con las actualizaciones que se coloquen, un WHERE incompleto, podría generar desastres.
Parameters:
sql -
arguments -
Returns:
int
Throws:
java.lang.Exception
<title>·         executeQuery</title>
·         public java.util.List<java.lang.Object[]> executeQuery(java.lang.String sql,
·                                                       java.lang.Object... arguments)
                                                throws java.lang.Exception
Ejecuta una instruccion select , regresa los registros encontrados en una lista de arreglos (Soló aplíca en STORMServer)
Recibe un SQL y sus argumentos (opcionales)
 //Se puede usar de las siguientes formas en su fórmula javascript
 // Si se desea Consultar datos de la entidad que reporta (tabla str_grl_entidades)
var entidad = CurrentContext.executeQuery ("select strnitso, strnomsoc str_grl_entidades where strnitso=? ", CurrentContext.getNit());
//CurrentContext.getNit() , Lee el Nit, ver referencia de la función
// En la consulta SQL los parámetros deben especificarse con el signo (?) y no por medio de concatenar valores, para evitar inyección de SQL 
 // Deben ir en el mismo orden que se colocó en la consulta
 
   if(entidad.size()>0){
//verificar que leyo el registro
var arEnt = entidad.get(0);
// El arreglo de datos viene en el mismo orden que lo especificado en la consulta.
// strnitso , strnomsoc
var nitso = arEnt[0];
var nomsoc = arEnt[1];
        }
// El ámbito de las variables definidas con var llega hasta donde se mantengan las llaves.  
 
Deben ser muy cuidadosos con las consultas que se coloquen, un WHERE incompleto, podría generar traer mucha información y tumbar el sistema.
Parameters:
sql -
arguments -
Returns:
List
Throws:
java.lang.Exception
<title>·         getErrors</title>
public int getErrors()
Retorna el número de errores encontrados en el procesamiento actual.
 //Se puede usar de las siguientes formas en su fórmula javascript
 
 //Como llamado de un método
 var errors = CurrentContext.getErrors();
 
 //Como si fuera una propiedad
var errors = CurrentContext.errors;
 
 
Returns:
int
<title>·         getConsecutivo</title>
public long getConsecutivo()
Retorna el consecutivo de txs
 //Se puede usar de las siguientes formas en su fórmula javascript
 
 //Como llamado de un método
 var errors = CurrentContext.getConsecutivo();
 
 //Como si fuera una propiedad
var errors = CurrentContext.consecutivo
 
 
Returns:
long
<title>·         PK</title>
public void PK(java.lang.Object... columnas)
Valida si la combinación de columnas son únicas en la matriz de datos, debe usarse una fórmula Fija 
*
 //Se puede usar de las siguientes formas en su fórmula javascript
 
 //Verificar que las columnas con código (strcodcol) 3,4,8,12 sean unicas
  CurrentContext.PK(3,4,8,12);
 //Los mensajes de error  de los elementos Repetidos encontrados , se agregan al archivo de respuesta
// C6E00006: SE ENCONTRARON DATOS REPETIDOS EN LAS FILAS (Lista de filas repartidas encontradas)
// Mostrando además la información asociada (Formulario, bloque, fila, codigodeformula, tipodeformula)   
 
 
Parameters:
columnas -
<title>·         stringIsNumber</title>
public boolean stringIsNumber(java.lang.String content)
Retorna true si en el parámetro solo se encuentran valores numéricos
 //Se puede usar de las siguientes formas en su fórmula javascript
 
 //aca se validan si los valores son numéricos y el resultado se imprime en pantalla
CurrentContext.println("eval 534346464: "+ CurrentContext.stringIsNumber("534346464"));
CurrentContext.println("eval 5m34346464: "+ CurrentContext.stringIsNumber("5m34346464"));
//Ver referencia de la función CurrentContext.println
 

Si la fórmula tiene código 100, el resultado sería el siguiente:
Formula<100> :eval 534346464: true
Formula<100> :eval 5m34346464: false
 
Parameters:
content -
Returns:
boolean
 
<title>·         stringIsCharsNumbers</title>
public boolean stringIsCharsNumbers(java.lang.String content)
Retorna true si en el parámetro solo se encuentran valores numéricos y letras
 //Se puede usar de las siguientes formas en su fórmula javascript
 
 //acá se validan si los valores son numéricos con caracteres y el resultado se imprime en pantalla
CurrentContext.println("eval string num 5m34346464: "+ CurrentContext.stringIsCharsNumbers("5m34346464"));
        CurrentContext.println("eval string num ñ5m34346464: "+ CurrentContext.stringIsCharsNumbers("ñ5m34346464"));
CurrentContext.println("eval string num Añ5m34346464: "+ CurrentContext.stringIsCharsNumbers("Añ5m34346464"));
CurrentContext.println("eval string num NAñ5m34346464: "+ CurrentContext.stringIsCharsNumbers("ÑAñ5m34346464"));
CurrentContext.println("eval string null: "+ CurrentContext.stringIsCharsNumbers(null));
//Ver referencia de la función CurrentContext.println
 

Si la fórmula tiene código 100, el resultado sería el siguiente:
Formula<100> :eval string num 5m34346464: true 
Formula<100> :eval string num ñ5m34346464: true 
Formula<100> :eval string num Añ5m34346464: true 
Formula<100> :eval string num NAñ5m34346464: true 
Formula<100> :eval string null: true
 
Parameters:
content -
Returns:
boolea