Funcionalidades Especiales
Este apartado describe algunas funciones de HansaWorld Enterprise que se pueden usar como herramientas para la definición de muchos informes. Puedes usar estas funciones en tus condiciones de impresión (botón [Imprimir Si]), en el campo ‘Fórmula’ de las ventanas de diálogo ‘Selección’, ‘Código’ y ‘Fórmula’. El nombre de estas funciones respeta el uso de mayúsculas y minúsculas, así que debes tomar en cuenta eso.
Las descripciones en es página contienen franjas “Código:” de ejemplo, las cuales usan el siguiente formato:
- variable1 = function(variable2,variable3);
La función procesará los contenidos del a variable2 y variable3 y copiará el resultado a la variable1. Por ende, podrás usar la variable1 para cualquier cálculo en el informe.
En todos los casos, puedes reemplazar la franja de ejemplo con una Fórmula en la solapa ‘Diseño’. Así:
- function(variable2,variable3)
El resultado será un informe más veloz que utiliza menos variables por cuanto no necesitas declarar la variable1. Esto será ventajoso cuando todo lo que desees mostrar sea solo el resultado de la función. Sin embargo, esto es menos flexible ya que no podrás usar el resultado de la función (es decir, los contenidos de la variable1) en ninguna otra parte del informe.
En una franja de tipo “Código:”, el resultado de la función se coloca en la variable. En una Fórmula, el resultado de la función se coloca en un elemento dentro de la diagramación del informe. Algunas funciones no devuelven ningún resultado a una variable de la misma forma. Sólo usarás estas funciones en una franja de tipo “Código:”. Sigue leyendo para ver distintos ejemplos.
- blank(field or variable), nonblank(field or variable)
- blank devuelve “verdadero??? si el campo o variable está vacío. nonblank devuelve “verdadero” si el campo o variable no está vacío. Puedes también usar!blank en lugar de nonblank.
- El siguiente ejemplo de una condición de impresión, muestra efectivamente todos los Contactos sin ningún Nro. de Fax:
- blank(vrContact.Fax)
Si el campo o variable es un número, blank devolverá “verdadero” si el campo o variable está vacío; o devolverá “falso” si el campo o variable contiene 0 o 0.00. nonblank devolverá “falso” si el campo o variable está vacío; o devolverá “verdadero??? si contiene 0 o 0.00.
- blankval
- Puedes utilizar blankval para vaciar una variable decimal. Esto puede resultar ventajoso cuando quieres insertar un espacio en el informe en lugar de que aparezca simplemente 0.00 would be printed. El siguiente ejemplo de Código configura una variable decimal a blankval si la anterior contenía 0.00:
- if(vdTestVar==0.00) then begin vdTestVar= blankval; end;
blankval no vaciará una variable de tipo “integer” pero configurará la variable en 0.
- No puedes realizar un testeo de blankval. Por ejemplo, no puedes usar la siguiente condición de impresión para mostrar todos los Contactos donde el Límite de Crédito de Ventas es inexistente:
- vrContact.CreditLimit==blankval
Esta condición de impresión mostrará todos los Contactos en donde el Límite de Crédito de Ventas sea inexistente y aquellos Contactos en donde el Límite de Crédito de Ventas sea 0.00. Si necesitas testear que un campo o variable está en blanco (en nuestro ejemplo, para mostrar todos los Contactos donde el Límite de Crédito Vtas. esté en blanco pero no 0.00), debes usar !blank o nonblank en la condición de impresión:
- nonblank(vrContact.CreditLimit)
Si necesitas testear 0.00 (es decir, para mostrar todos los Contactos donde el Límite de Crédito Vtas. es 0.00 pero no está en blanco), debes usar la siguiente condición de impresión:
- (vrContact.CreditLimit == 0.00) y (nonblank(vrContact.CreditLimit))
- CurrentDate
- Utiliza CurrentDate para mostrar la fecha actual en un informe; o usa la fecha actual en una fórmula o cálculo.
- El siguiente Código de ejemplo colocará la fecha actual dentro de la variable específica para fechas; la cual luego puede mostrarse o usarse en cualquier otra parte del informe:
- vdDate = CurrentDate;
La fecha aparecerá en el informe usando el formato especificado en las diferentes opciones (seteos) referentes al Formato de Fecha y Número. Este es un formato numérico (ej. 01/01/2007). Si deseas mostrar la fecha en palabras, entonces usa las funciones GetDateMonthInWords, GetMonthName o MonthShortName las cuales se describen más abajo.
- El siguiente ejemplo de una condición de impresión hará que se muestren todos aquellos Contactos que fueron modificados de último durante el día en que se produjo el informe:
- vrContact.DateChanged == CurrentDate
- CurrentTime
- Usa CurrentTime para mostrar la hora actual en un informe; o usa la hora actual en una fórmula o cálculo.
- El siguiente ejemplo de Código colocará la hora actual dentro de una variable específica para la hora; la cual luego puede mostrarse o usarse en cualquier otra parte del informe:
- vtTime = CurrentTime;
La hora se mostrará en el informe usando el formato HH:MM:SS.
- CurrentUser
- Usa CurrentUser para mostrar las iniciales de la Persona que está actualmente conectado en el sistema (es decir, el usuario que produce el informe); o usa las iniciales de tal persona en una fórmula o cálculo.
- El siguiente Código de ejemplo colocará las iniciales (de la Persona) dentro de una variable de tipo “string”; la cual luego puede ser mostrada o usada en cualquier otra parte del informe:
- vsUser = CurrentUser;
El siguiente ejemplo de una condición de impresión hará que se muestren todos aquellos Contactos cuyo Vendedor sea el usuario actual:
- vrContact.SalesMan == CurrentUser
Para lograr el mismo resultado de manera más veloz, usa CurrentUser en el campo ‘Fórmula’ de la ventana de diálogo ‘Selección’:
- SetInSet(string variable,string field), SetInSet2(string variable,string field)
- Estas dos funciones te permiten encontrar un valor único (el valor en la variable de tipo “string”) dentro de los campos que pueden albergar varios valores como ser Objetos, Clasificaciones de Contacto y Clasificaciones de Ítems (también Personas y Cc en Actividades). Por favor, abre aquí para detalles y ejemplos.
- ValToString(number,type,thousands separator,decimal separator,rounding)
- Usa esta función para convertir un número (ej. una variable o campo de tipo “integer” o “decimal” o un número) en un elemento de tipo “string”. Por favor, abre aquí para detalles y ejemplos.
- DateToString(date,date format)
- Usa esta función para convertir una fecha (ej. una variable o campo de fecha; o una fecha) en un elemento de tipo “string”. Por favor, abre aquí para detalles y ejemplos.
- TimeToString(time)
- Usa esta función para convertir una hora (ej. una variable o capo de hora; o una hora) en un elemento de tipo “string”. Por favor, abre aquí para detalles y ejemplos.
- GetDay(date), GetMonth(date), GetYear(date)
- Estas funciones devuelven como “integers” datos como el número de día, número de mes y número de año respectivamente desde una fecha. GetYear siempre devuelve una “integer” de cuatro dígitos que siempre incluye el siglo sin importar los ajustes de la opción Formato de Fecha y Número de Empresa.
- El siguiente ejemplo de una condición de impresión hará que se muestren todos aquellos Contactos que fueron modificados de último durante el primer día de un mes:
- GetDay(vrContact.DateChanged) == 1
El siguiente ejemplo de Código colocará el día de la Fecha Inicio de una Actividad dentro de una variable de tipo “integer”; la cual luego podrá ser mostrarse o usarse en cualquier otra parte del informe:
- viDay = GetDay(vrAct.TransDate);
El siguiente ejemplo de una condición de impresión hará que se muestren todos aquellos Contactos que fueron modificados de último durante el 2007:
- GetYear(vrContact.DateChanged) == 2007
Este ejemplo de una condición de impresión hará que se muestren todos aquellos Contactos que fueron modificados de último en el año actual:
- GetYear(vrContact.DateChanged) == GetYear(CurrentDate)
- GetDateMonthInWords(date,string variable)
- Esta función copia una fecha en un formato que incluye el nombre del mes y la colocará en una variable de tipo “string”. Por ejemplo, si la fecha actual es 27/09/2007, este Código colocará "27 Septiembre 2007" dentro de vsDate:
- GetDateMonthInWords(CurrentDate,vsDate);
El nombre del mes estará en el Idioma local de tu sistema HansaWorld Enterprise.
- No podrás usar GetDateMonthInWords en una Fórmula diseñada desde la solapa ‘Diseño’.
- GetMonthName(language,date,string variable)
- Esta función copia el nombre del mes de una fecha usando el Idioma específico y la coloca en una variable de tipo “string”. Por ejemplo, si la fecha actual es 27/09/2007, este Código colocará "Septiembre " dentro de vsMonth:
- GetMonthName("ENG",CurrentDate,vsMonth);
Este Código colocará la traducción apropiada del mes dentro de vsMonth dependiendo del Idioma de la Factura en cuestión:
- GetMonthName(vrInvoice.LangCode,vrInvoice.InvDate,vsMonth);
El nombre del mes en el Idioma especificado será tomado de la opción ‘Días y Meses’ (módulo Sistema). Si esta opción no contiene el nombre respectivo del mes en el Idioma especificado, el nombre del mes estará en el Idioma local de tu sistema HansaWorld Enterprise. Si no deseas especificar un Idioma (ej. si quiere omitir la opción ‘Días y Meses’ y siempre usar el Idioma local, el primer parámetro deberá ser un conjunto vacío de comillas:
- GetMonthName("",vrInvoice.InvDate,vsMonth);
No puedes usar GetMonthName en una Fórmula insertada desde la solapa ‘Diseño’.
- MonthShortName(date)
- Esta función devuelve el nombre abreviado del mes (de la fecha respectiva) como un elemento de tipo “string”. Por ejemplo, si la fecha actual es 27/09/2007, este Códgo colocará "Sep" dentro de vsMonth:
- vsMonth = MonthShortName(CurrentDate);
El nombre abreviado del mes siempre tendrá tres caracteres y estará en el Idioma local de tu sistema HansaWorld Enterprise.
- DateDiff(date2,date1)
- Esta función devuelve como un elemento “integer”, el número días entre la fecha2 y la fecha1. Si la fecha1 es posterior a la fecha2, el resultado será negativo. El siguiente Código de ejemplo coloca la edad de una Factura (basada en su Fecha de Vencimiento) cuando el informe es producido dentro de una variable de tipo “integer”:
- viAge = DateDiff(CurrentDate,vrInvoice.PayDate);
El siguiente ejemplo de una condición de impresión hará que se muestren todas aquellas Facturas con más de 30 días de antigüedad (basadas en sus fechas):
- DateDiff(CurrentDate,vrInvoice.InvDate)
Si deseas usar una fecha actual para la función, pon la función dentro de comillas como si fuese un elemento de tipo “string”. Esto se aplica a cada función con parámetro de fecha:
- DateDiff("01/01/2008",vrInvoice.InvDate);
- TimeToSeconds(time,long integer)
- Usa esta función para convertir una hora a segundos. Por ejemplo, 00:00:00 será convertido a 0 segundos; 23:59:59 será convertido a 86399 segundos. El siguiente Código de ejemplo convertirá la Hora Inicio de una Actividad en segundos y colocará tal dato en la variable vlSeconds:
- TimeToSeconds(vrActivity.StartTime,vlSeconds);
Si deseas convertir la hora actual a segundos, pon la función dentro de comillas como si fuese un elemento de tipo “string”. Esto se aplica a cada función con parámetro de hora:
- TimeToSeconds("23:59:59",vlSeconds);
No podrás usar HoraASegundos en una Fómula insertada desde la solapa ‘Diseño???.
- SecondsToTime(long integer,time)
- Usa esta función para convertir un número de segundos a una hora respectiva. El siguiente Código de ejemplo convierte la Hora Inicio de una Actividad a segundos; si agregas una hora, la convierte nuevamente a una hora:
- TimeToSeconds(vrActivity.StartTime,vlSeconds); vlSeconds = vlSeconds + 3600; SecondsToTime (vlSeconds,vtTime);
No puedes utilizar SecondsToTime en una Fómula insertada desde la solapa ‘Diseño’.
- TimeDiffInSeconds(time1,time2)
- Esta función devuelve, como un elemento “long integer”, el número de segundos entre la hora1 y la hora2. Si la hora2 es posterior a la hora1, la función asume que se trata de dos momentos en un mismo día. Si la hora1 es posterior a la hora2, la función asume que la hora2 es del día siguiente. Por ejemplo, si la hora1 es 10:00:00 y la hora2 es 09:00:00, la función te dará 82800 (23 horas expresadas en segundos). El siguiente Código de ejemplo coloca la hora extraída a fin de completar una Actividad. Lo hace usando una variable de tipo “long”:
- vlElapsed = TimeDiffInSeconds(vrAct.StartTime, vrAct.EndTime);
Si fuese el caso que la hora1 y hora2 corresponderán a dos días distintos, podrás utilizar HoursDiff (ver más adelante) para que el resultado sea la diferencia entre la hora1 y la hora2 expresado en un número de horas. Alternativamente, puedes usar DateDiff para calcular el número de días, substraer uno si la hora1 es posterior a la hora2, convertir el resultado a segundos y agregar este resultado al resultado de TimeDiffInSeconds.
- TimeDiff(time1,time2)
- Esta función es similar a TimeDiffInSeconds, pero te da como resultado, una hora.
- HoursDiff(date1,time1,date2,time2)
- Esta función te muestra a modo de decimales, el número de horas entre la hora1 y la hora2 tomando en cuanta la fechas. Por ejemplo, si la diferencia entre las dos horas es 3 horas 30 minutos, HoursDiff te dará como resultado 3.5. El siguiente Código de ejemplo coloca la hora extraída para completar una Actividad dentro de una variable de tipo “decimal”:
- vdElapsed = HoursDiff(vrAct.TransDate, vrAct.StartTime,vrAct.EndDate,vrAct.EndTime);
- AddTime2(time,long integer)
- Usa esta función para agregar un número de minutos a una hora. El resultado se reflejará como una hora. El siguiente Código de ejemplo agregar una hora a la hora actual:
- vtTime = AddTime2(CurrentTime,60);
- Left(string1,number)
- Esta función devuelve como un elemento de tipo ???string”, los caracteres iniciales de string1. Por ejemplo, si el número es tres, Left dará como resultado los tres primeros caracteres de string1. El siguiente Código de ejemplo coloca los dos primeros caracteres de la fecha actual dentro de una variable de tipo “string” (si estás usando el formato dd/mm/aaaa con ceros iniciales, se colocará la fecha dentro de la variable “string”):
- vsDay = Left(CurrentDate,2);
- Right(string1,number)
- Esta función devuelve como un elemento de tipo “string”, los últimos caracteres de string1. Por ejemplo, si el número es tres, Right dará como resultado los últimos tres caracteres de string1. El siguiente Código de ejemplo coloca los últimos cuatro caracteres de la fecha actual dentro de la variable ???string” (si estás usando el formato dd/mm/aaaaa con ceros iniciales, se colocará el año dentro de la variable “string”):
- vsYear = Right(CurrentDate,4);
|