Documentación Buscadores y VBScript N. Documento Revisión Nº: Fecha: 1.0 09/02/09 ÍNDICE BUSCADORES Y VBSCRIPT 1 BUSCADORES Imprimir Pasar a predefinido Regenerar SQL. BUSCADORES PREDEFINIDOS VBScript Objetos disponibles 1 5 5 6 6 8 8 Buscadores y VBScript Buscadores y VBScript BUSCADORES Un buscador es una herramienta que nos permite acceder a colecciones de objetos, filtradas en base a criterios fijos o variables, configurables por usuario. Pueden ser personales o compartidos. Se accede a ellos desde la ventana principal de la aplicación, seleccionando “Favoritos” en el panel de exploración. O también desde el panel de Tareas Para explicar cómo se crea un buscador, haremos un ejemplo para listar los clientes de una provincia. Para crear uno nuevo desde el panel de favoritos, seleccionaremos “Agregar” -> “Buscadores” Se abrirá la pantalla de edición de buscadores, donde rellenaremos la colección sobre la cual queremos realizar la búsqueda, y una descripción para el buscador. A continuación pulsaremos el botón “Guardar” Si además queremos que el buscador nos muestre los registros en el panel de inicio, marcaremos el check de Panel de inicio. El campo “Número Registros Alerta”, es para pintar 1 Buscadores y VBScript de rojo el encabezado del buscador en el panel de inicio, si el total de registros devueltos iguala o supera el número especificado. A continuación, nos mostrará 4 secciones. A la izquierda tenemos el panel de propiedades. En el centro veremos las condiciones de filtro, a la derecha los valores que queremos filtrar y debajo nos irá listando las condiciones de búsqueda que vayamos definiendo. Existen distintos tipos de valores: [?]: El buscador solicitará al usuario el valor [Valor]: Se guardará en el buscador el valor deseado. [(Usuario),(Empleado),(Hoy),(Mes Actual),(Año Actual)] El buscador reemplazará estos valores por los correspondientes en cada sesión de usuario. [SQL]: Se guardará en el buscador una subconsulta SQL para filtrar por ella. Se añadirán tantas condiciones como se necesiten, pudiéndose establecer que se tengan que cumplir todas (Operador AND) o bien solo alguna (Operador OR) 2 Buscadores y VBScript Ejemplo: Buscador de Ficha de Cliente por Id. Agregaremos un nuevo buscador, seleccionando el objeto “Clientes”, rellenaremos la descripción y guardaremos. Seleccionaremos la propiedad “Id Cliente”, la Condición “=”, haremos clic en el Valor “?” y luego pulsaremos el operador “Y”. Veremos que se añade un registro en el panel inferior, con el campo, la condición y el valor indicado. Al cerrar la ventana aparecerá un buscador nuevo con un Id. Seguido de la descripción. Al ejecutarlo, el buscador abrirá este formulario de entrada de datos, donde rellenaremos el valor deseado (el Id Cliente). 3 Buscadores y VBScript Finalmente, pulsando “Aceptar”, obtendremos el resultado del buscador en una nueva pestaña de la pantalla principal. Ejemplo: Buscador de Clientes con varias condiciones 4 Buscadores y VBScript Agregaremos un nuevo buscador, seleccionando el objeto “Clientes”, rellenaremos la descripción y guardaremos. Seleccionaremos la propiedad “Provincia”, la Condición “=” y en [Valor] introduciremos “Valencia” Seleccionaremos la propiedad “Tipo”, la Condición “=” y en [Valor] seleccionaremos “Nacional” Observamos como para el valor se despliega una lista de valores. Esto es configurable mediante el Admon. Seleccionaremos la propiedad “Bloqueado” (*), la condición “EN” y el valor “[SQL]”. En la subconsulta escribiremos lo siguiente: SELECT DISTINCT IdCliente From datepart(yyyy,fechafact)=datepart(yyyy,getdate()) facturas_cli_cab where Guardaremos. (*) Si no encuentra la propiedad, se puede añadir mediante el ADMON. Con estos pasos obtendremos un buscador que nos mostrará todos los clientes de la provincia de Valencia, no bloqueados, a los que se les ha facturado en el año en curso. Imprimir Imprime el resultado de la búsqueda Pasar a predefinido Coloca al buscador en la gestión de buscadores y scripts predefinidos. Primeramente debemos asignar permisos, para establecer qué usuarios o grupo de usuarios pueden acceder al buscador. Si asignamos el grupo de seguridad “Grupo Ahora”, estará accesible para todos los usuarios de la aplicación. Por defecto viene seleccionado. Una vez asignada la seguridad, saldrá un mensaje de éxito, y el buscador estará disponible. 5 Buscadores y VBScript Regenerar SQL. En ocasiones, los scripts dejan de funcionar correctamente porque se realizan cambios en la configuración de las colecciones, como puede ser el modificar la vista. Este botón nos permite recompilar la consulta para establecer el correcto funcionamiento. BUSCADORES PREDEFINIDOS En ocasiones queremos que un buscador esté accesible para otros usuarios de la aplicación. Para esto se hizo la gestión de Buscadores y Scripts predefinidos. Un administrador puede crear scripts o buscadores y ponerlos como predefinidos. Para acceder basta con seleccionar desde el panel de favoritos, Agregar -> Buscadores predefinidos Saldrá un formulario con un árbol de buscadores, categorizado por colecciones. El usuario debe seleccionar el buscador que quiera y pulsar “Aceptar” para tenerlo disponible en su panel. 6 Buscadores y VBScript Si el usuario que añade el buscador, pertenece al grupo de seguridad de administradores, podrá establecer seguridad, o eliminar buscadores de este repositorio. 7 Buscadores y VBScript VBScript VBScript es un lenguaje de programación interpretado por el Windows Scripting Host, con una sintaxis muy parecida a Visual Basic. Mediante la inclusión de los objetos propios de la aplicación, nos permite el acceso a toda la información, así como la ejecución de código personalizado. Para crear uno nuevo, seleccionaremos “Agregar” -> “Scripts” Objetos disponibles gCn: Objeto conexión. A través de el se tiene acceso a la base de datos. Obj: Objeto Objetos. A través de el se tiene acceso a las colecciones y objetos de la aplicación Iitem: Representa un objeto de la aplicación instanciado A continuación se muestra un resumen de las principales propiedades y métodos Objet o gCn Nombre Descripción Ejemplo DameValorCampo Obtiene el valor de un campo de tabla/vista de bbdd. Retorna un objeto de tipo Collection al que se le puede añadir objetos o variables. Es útil cuando queremos ejecutar una Stored Procedure y necesitamos pasarle parámetros. Ejecuta un procedimiento almacenado en la BBDD, enviando los parámetros en una colección. Devuelve un booleano Variable = gcn.DameValorcampo(“Select RazonSocial From Clientes_Datos Where IdCliente = ‘00000’”) Set lCol = gcn.DamenewCollection lCol.Add 1 lCol.Add “esta es la descripción” DameNewCollecti on EjecutaStoreCol EsAdmonUser Set lCOlParam = gcn.DameNewCollection lColParam.add “00001” Gcn.EjecutaStoreCol(“NombreProceso”,lC olParam) Variable = gcn.EsAdmonUser 8 Buscadores y VBScript ExecuteSQL IdDelegacion IdDepartamento IdEmpleado IdEmpresa OpenResultSet Obj DameColeccion DameObjeto Iitem indicando si el usuario actual pertenece al grupo Desarrollo Ejecuta una instrucción SQL en la base de datos Obtiene la delegación donde se ha logueado el usuario Obtiene el departamento donde se ha logueado el usuario. Obtiene el Id Empleado del usuario Obtiene la empresa donde se ha logueado el usuario. Obtiene un conjunto de registros de BBDD Obtiene una colección de objetos con un criterio Obtiene un objeto en concreto DameObjStr Obtiene objeto Imprimir Imprime el objeto Modificado Indica si el objeto ha sido modificado Indica si el objeto es nuevo (no se ha grabado en BBDD) Nos da acceso a la Colección de objetos dependientes del objeto Devuelve o establece el valor de las distinas propiedades (campos) del objeto Muestra el objeto en pantalla Guarda el objeto en BBDD Nuevo Objetos Propiedades Show Update un nuevo Gcn.ExecuteSql “INSERT INTO Conta_Subcuentas(IdEjercicio,Subcuenta, Descrip) VALUES (1,’70000000’,’Ventas’)” Variable = gcn.IdDelegacion Variable = gcn.IdDepartamento Variable = gcn.IdEmpleado Variable = gcn.Idempresa Set lRecordset gcn.OpenResultSet(“Select Clientes_Tipos”) * = From Set lCol = gcn.Obj.DameColeccion("Facturas","WHE RE IdCliente = ‘00010’”,,False) Set lFactura=gcn.Obj.DameObjeto(“Facturas_ Deudores”,”Where IdFactura = 1”) Set lArticulo = gcn.obj.DameObjStr(“Articulo”) Set lFactura=gcn.Obj.DameObjeto(“Facturas_ Deudores”,”Where IdFactura = 1”) lFactura.Imprimir Variable = lFactura.Modificado Variable = lFactura.Nuevo lFactura.Objetos(“Factura_Deudor_Lineas ”) lFactura.Propiedades(“DescripcionFact”)= ”Ejemplo descripción” lFactura.Show lFactura.Update 9 Buscadores y VBScript Ejemplo: Buscador VBScript de Facturas por Año y descripción de cliente. Crearemos un nuevo script e introduciremos el siguiente código. Sub Main() frmAux.Descargar lDescCliente=InputBox("Introduzca la descripción de cliente:") If len(lDescCliente)=0 Then exit sub end If lFecha=InputBox("Introduzca el año:") If len(lFecha)=0 Then exit sub end If Set lCol=Gcn.Obj.DameColeccion("Facturas","WHERE IdFactura IN (SELECT IdFactura from Facturas_Cli_Cab a1 inner join clientes_datos a1.idcliente=a2.idcliente WHERE a2.cliente like '%" & lDescCliente & DATEPART(yyyy,a1.FechaFact)= " & lFecha & ")",,False) If lCol is Nothing then Msgbox "No existen vbExclamation,"Atención" Else lcol.show End If facturas para esa descripción de cliente DISTINCT a2 on "%' AND y año.", End Sub El resultado de este script serán dos pantallas donde nos preguntará la descripción del cliente y el año, y como resultado nos mostrará en una nueva ventana la colección de facturas correspondiente. Ejemplo: Mantenimiento VBScript de Efectos Sub Main() frmAux.descargar Set lFrm = ceesi_apoyo.GetFormByName("frmMantenimientos") With lFrm.Grid("Cartera Cliente") .Agregar = False .Editar = False .Eliminar = False .CargaObjetos = False .EditarPorObjeto = False .AgregaColumna .AgregaColumna .AgregaColumna .AgregaColumna .AgregaColumna .AgregaColumna .AgregaColumna .AgregaColumna .AgregaColumna "IdDoc", 0, "IdDoc", True "IdFactura", 0, "IdFactura", True "NumFactCliente", 800, "NumFact", True "IdCliente", 800, "IdCliente", True "Cliente", 4000, "Cliente", True "Tipo", 800, "Tipo", True "IdEstado", 800, "Estado", True "FechaVencimiento", 1000, "Fecha Vto", True "FechaCobro", 1000, "Fecha Cobro", True 10 Buscadores y VBScript .AgregaColumna "Observaciones", 2000, "Observaciones", True .AgregaColumna "ImporteTotal", 1000, "Importe", True,,,"#,##0.00" .Campo("NumFactCliente").Coleccion="Facturas" .Campo("NumFactCliente").ColeccionWhere="WHERE IdFactura=@IdFactura" .Campo("IdCliente").Coleccion="Clientes" .Campo("IdCliente").ColeccionWhere="WHERE IdCliente=@IdCliente" .From = "vClientes_Efectos" .Orden="Orden" .Where = "” .Refresca = True End With lFrm.form.Width=13600 lFrm.Form.Caption = "Efectos clientes" lFrm.MuestraFiltro("Efecto Cliente") = True lFrm.Carga , True, 4 End Sub Con En este ejemplo obtenemos un mantenimiento rapido de efectos de cartera, pudiendo desde el mismo acceder a las facturas o las fichas de los clientes. Ejemplo: Generación de factura de acreedor mediante VBScript Sub Main() frmAux.Descargar Set lFrm = ceesi_apoyo.getformbyname("frmMantenimientos") Set lFra = gcn.Obj.DameObjStr("Factura_Acreedor") lIdProveedor = InputBox("Indique Proveedor:") If Len(lIdProveedor)= 0 Then Exit Sub End If lImporte = InputBox("Indique Importe:") If Len(lImporte) = 0 Then Exit Sub End If lCuenta = InputBox("Indique Cuenta Contable:") If Len(lCuenta) = 0 Then Exit Sub End If lIdContacto = gcn.damevalorcampo("SELECT TOP 1 IdContacto FROM Prov_Contactos WHERE IdProveedor = '" & lIdProveedor & "'") lFra.Propiedades("IdProveedor") = lIdProveedor lFra.Propiedades("IdContactoF") = lIdContacto lFra.Propiedades("NumFactProv") = 1 lFra.Propiedades("SerieFactura") = 0 lFra.Update Set lLinea = lFra.Objetos("Factura_Acreedor_Lineas").Add 11 Buscadores y VBScript lLinea.Propiedades("IdIva") = 0 lLinea.Propiedades("BaseEuros") = lImporte lLinea.Update Set lDesglose = lfra.objetos("Factura_Acreedor_Desgloses").Add lDesglose.Propiedades("Subcuenta") = lCuenta lDesglose.Propiedades("ImporteEuros") = lImporte lDesglose.Update lFra.Update lFra.Show End Sub El resultado de este código será la generación de una factura de acreedor introduciendo el IdProveedor, el importe y la cuenta contable. Nos la mostrará para continuar editándola. 12