Se desea que el ERP sea capaz de ejecutar acciones (apertura de formularios, ejecución de procesos, etc) a partir de un protocolo de URL especifico.
Una vez formada la cadena con la URL, para ejecutarla es necesario:
- Tener el ERP abierto y correctamente logueado.
- Lanzar la URL por cualquier navegador o por el explorador de Windows (que usará el navegador por defecto
Versión 4:
Importante
Para poder utilizar esta funcionalidad es necesario que el cliente esté trabajando con el entorno TechFun.
La dirección URL deberá tener el siguiente formato:
erp://[tokenbasededatos]/[cadenab64]
Versión 5:
La dirección URL deberá tener el siguiente formato:
erp5://[tokenbasededatos]/[cadenab64]
Para obtener el token de base de datos del usuario podemos utilizar la siguiente consulta:
SELECT object_id('ahora_sesion')
Ejemplo de URL:
erp://628197288/SU1QUklNSVJPQkpFVE98W3siQ29sZWNjaW9uIjoiQ2xpZW50ZXMiLCJpZERvYyI6MDAwMDF9XXxDbGllbnRlfENsaWVudGVz
- [tokenbasededatos]: Es el object_id de la tabla ahora_sesion de la base de datos desde donde se genera la dirección.
- [cadenab64]: Serán los datos de la petición representados en una cadena base 64.
Impresión de un objeto
IMPRIMIROBJETO|Herencia|HijoDefecto|Objeto
- Herencia: Se debe construir un objeto con formato JSON con dos propiedades: Coleccion e IdDoc.
- HijoDefecto: hijo defecto del objeto. Cliente
- Objeto: Clientes
IMPRIMIROBJETO|[{"Coleccion":"NombreColeccion","idDoc":valoridDoc}]|HijoDefecto|Coleccion
IMPRIMIROBJETO|[{"Coleccion":"Clientes","idDoc":1}]|Cliente|Clientes
IMPRIMIROBJETO|[{"Coleccion":"Facturas","idDoc":1}]|Factura|Facturas
Acceder a un objeto
- Objeto: Clientes
- IdDoc: IdDoc = 100
- QueryFinal: SELECT iddoc _iddoc_, ''+ISNULL(CAST(Cliente AS VARCHAR(200)), '')+' - '+ISNULL(CAST(IdCliente AS VARCHAR(200)), '')+'' _cadenadescrip_, IdCliente, Cliente, Nif, DescripFormaPago, Ciudad, NumTelefono, NumFax, E_Mail From VDLG_CLIENTES
- Where (Si no hay Where por defecto se pondrá ‘IdDoc >= 1’)
- NuevaVentana: true o false. Indica si se abre una nueva ventana de VB6 o se carga el objeto sobre la anterior
- Herencia: Indica si el objeto proviene de un objeto padre para heredar las propiedades. Si no proviene se deja el parámetro vacío
- GroupBy: sirve para las flechas de navegación de los formularios, al cambiar de objeto seguir el orden de la colección. Si no contiene el groupby se deja el parámetro vacío.
- OrderBy: sirve para las flechas de navegación de los formularios, al cambiar de objeto seguir el orden de la colección. (ORDER BY IdCliente asc)
- FinalQueryCampos: Query con campos parseados iddoc y _cadenadescrip_. En la versión de prueba probar poniendo el mismo valor que el parámetro QueryFinal de arriba. Si es necesario se implementará la funcionalidad que hace Techfun
- Arbol: por defecto poner noarbol
ABRIROBJETO|Clientes|IdDoc=2658|SELECT iddoc _iddoc_, ''+ISNULL(CAST(Cliente AS VARCHAR(200)), '')+' - '+ISNULL(CAST(IdCliente AS VARCHAR(200)), '')+'' _cadenadescrip_, IdCliente, Cliente, Nif, DescripFormaPago, Ciudad, NumTelefono, NumFax, E_Mail From VDLG_CLIENTES|IdDoc >= 1|false|[{"Coleccion":"Clientes"}]||ORDER BY IdCliente asc|SELECT iddoc , ''+ISNULL(CAST(Cliente AS VARCHAR(200)), '')+' - '+ISNULL(CAST(IdCliente AS VARCHAR(200)), '')+'' , IdCliente, Cliente, Nif, DescripFormaPago, Ciudad, NumTelefono, NumFax, E_Mail From VDLG_CLIENTES|noarbol
Abrir un colección
- Objeto: Clientes
- IdDoc: IdDoc = 1,723
ABRIRCOLECCION|Clientes|idDoc IN (1,723)
Ejecución de un proceso asociado al objeto (Menú contextual)
EJECUTAMENUOBJETO|herencia||Objeto|id
- Herencia: Mismo formato del parámetro herencia de arriba: {“Coleccion”: “Clientes”, “IdDoc”: 100}
- Objeto: Nombre del objeto (Clientes)
- Id: Id del menú que se debe ejecutar.
-- Ver las opciones de menú de un Objeto
SELECT Distinct Cmn.Caption, Cmp.IdProceso, Cmp.Estado, Cmp.Orden,Cmn.IdTecla
FROM CEESI_Menus Cmn
INNER JOIN CEESI_Menu_Procesos Cmp ON Cmn.IdMenu = Cmp.IdMenu
INNER JOIN CEESI_Procesos Cpr ON Cmp.IdProceso = Cpr.IdProceso
INNER JOIN vCeesi_menu_Objeto cmo ON cmp.IdMenu=cmo.IdMenu AND cmp.Objeto=cmo.Objeto
WHERE Cmp.Objeto='nombredelObjeto'
ORDER BY Cmp.Orden, Cmp.IdProceso
EJECUTAMENUOBJETO|[{"Coleccion":"Facturas","IdDoc":1}]||Facturas|62
EJECUTAMENUOBJETO|[{"Coleccion":"Facturas","IdDoc":1}]||Facturas|63
Versión 4:
Ejecución de un Visual Basic Script
Importante
Válido para ejecutar cualquier bloque de código de VBScript. OJO NO INVOCAR AL
‘frmAux.Descargar’ PORQUE FALLARÁ LA EJECUCIÓN:
VBSCRIPT|CodigoScript|
VBSCRIPT|Sub Main() MsgBox "Test" End Sub|
Versión 5:
Ejecución de un Script de C#
CSCRIPT|CodigoScript
CSCRIPT|using AhoraCore; using AhoraOCX; using AhoraSistema; using static AhoraCore.VBA.Interaction; using static AhoraCore.VbMsgBoxResult; using static AhoraCore.VbMsgBoxStyle; using System; namespace AhoraScriptsVacia { public class Script_Auto : AhoraOCX.AhoraBaseScript { public void Main() { MsgBox("PRUEBA LANZADA"); } } }
Importante
Si se lanza el enlace por el navegador y NO FUNCIONA (no devuelve error, simplemente no hace nada) comprobar que la ruta del registro de Windows apunta al AhoraERP.exe correcto, en la siguiente ruta de registro:
Equipo\HKEY_LOCAL_MACHINE\SOFTWARE\Classes\ERP5\shell\open\command
Este es el valor a comprobar. Modificar para que apunte a su ejecutable:
¿Le ha sido útil este artículo?
¡Qué bien!
Gracias por sus comentarios
¡Sentimos mucho no haber sido de ayuda!
Gracias por sus comentarios
Sus comentarios se han enviado
Agradecemos su esfuerzo e intentaremos corregir el artículo