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.
Si el usuario que añade el buscador, pertenece al grupo de seguridad de administradores, podrá establecer seguridad, o eliminar buscadores de este repositorio.
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
Objeto | Nombre | Descripción | Ejemplo |
gCn | DameValorCampo | Obtiene el valor de un campo de tabla/vista de bbdd. | Variable = gcn.DameValorcampo(“Select RazonSocial From Clientes_Datos Where IdCliente = ‘00000’”) |
| DameNewCollection | 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. | Set lCol = gcn.DamenewCollection lCol.Add 1 lCol.Add “esta es la descripción” |
| EjecutaStoreCol | Ejecuta un procedimiento almacenado en la BBDD, enviando los parámetros en una colección. | Set lCOlParam = gcn.DameNewCollection lColParam.add “00001” Gcn.EjecutaStoreCol(“NombreProceso”,lColParam) |
| EsAdmonUser | Devuelve un booleano indicando si el usuario actual pertenece al grupo Desarrollo | Variable = gcn.EsAdmonUser |
| ExecuteSQL | Ejecuta una instrucción SQL en la base de datos | Gcn.ExecuteSql “INSERT INTO Conta_Subcuentas(IdEjercicio,Subcuenta,Descrip) VALUES (1,’70000000’,’Ventas’)” |
| IdDelegacion | Obtiene la delegación donde se ha logueado el usuario | Variable = gcn.IdDelegacion |
| IdDepartamento | Obtiene el departamento donde se ha logueado el usuario. | Variable = gcn.IdDepartamento |
| IdEmpleado | Obtiene el Id Empleado del usuario | Variable = gcn.IdEmpleado |
| IdEmpresa | Obtiene la empresa donde se ha logueado el usuario. | Variable = gcn.Idempresa |
| OpenResultSet | Obtiene un conjunto de registros de BBDD | Set lRecordset = gcn.OpenResultSet(“Select * From Clientes_Tipos”) |
|
|
|
|
Obj | DameColeccion | Obtiene una colección de objetos con un criterio | Set lCol = gcn.Obj.DameColeccion("Facturas","WHERE IdCliente = ‘00010’”,,False) |
| DameObjeto | Obtiene un objeto en concreto | Set lFactura=gcn.Obj.DameObjeto(“Facturas_Deudores”,”Where IdFactura = 1”) |
| DameObjStr | Obtiene un nuevo objeto | Set lArticulo = gcn.obj.DameObjStr(“Articulo”) |
ShowMsgBox | Muestra mensaje modal | If gcn.obj.showMsgBox ("¿Confirma que desea buscar el proveedor?",vbYesNo + vbDefaultButton2 + vbQuestion, "Confirmación") = vbyes Then gcn.obj.showMsgBox lVar,vbInformation,"Cadena que usted introdujo" End If | |
|
|
|
|
Iitem | Imprimir | Imprime el objeto | Set lFactura=gcn.Obj.DameObjeto(“Facturas_Deudores”,”Where IdFactura = 1”) lFactura.Imprimir |
| Modificado | Indica si el objeto ha sido modificado | Variable = lFactura.Modificado |
| Nuevo | Indica si el objeto es nuevo (no se ha grabado en BBDD) | Variable = lFactura.Nuevo |
| Objetos | Nos da acceso a la Colección de objetos dependientes del objeto | lFactura.Objetos(“Factura_Deudor_Lineas”) |
| Propiedades | Devuelve o establece el valor de las distinas propiedades (campos) del objeto | lFactura.Propiedades(“DescripcionFact”)=”Ejemplo descripción” |
| Show | Muestra el objeto en pantalla | lFactura.Show |
| Update | Guarda el objeto en BBDD | lFactura.Update |
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 DISTINCT IdFactura from Facturas_Cli_Cab a1 inner join clientes_datos a2 on a1.idcliente=a2.idcliente WHERE a2.cliente like '%" & lDescCliente & "%' AND DATEPART(yyyy,a1.FechaFact)= " & lFecha & ")",,False) If lCol is Nothing then Msgbox "No existen facturas para esa descripción de cliente y año.", vbExclamation,"Atención" Else lcol.show End If 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 "IdDoc", 0, "IdDoc", True .AgregaColumna "IdFactura", 0, "IdFactura", True .AgregaColumna "NumFactCliente", 800, "NumFact", True .AgregaColumna "IdCliente", 800, "IdCliente", True .AgregaColumna "Cliente", 4000, "Cliente", True .AgregaColumna "Tipo", 800, "Tipo", True .AgregaColumna "IdEstado", 800, "Estado", True .AgregaColumna "FechaVencimiento", 1000, "Fecha Vto", True .AgregaColumna "FechaCobro", 1000, "Fecha Cobro", True .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 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.