# Funciones remotas

En una fórmula es posible establecer una llamada a una [función](/velneo-vdevelop/proyectos-objetos-y-editores/de-aplicacion-y-datos/funcion.md) de cualquier proyecto de cualquier seridor.

Tendremos que escribirlo directamente en la fórmula, siguiendo la sintaxis siguiente:

`rfc:idFuncion(dominioIP, idInstancia, usuario, contraseña, parámetros)`

Donde:

**rfc**: acrónimo de Remote Function Call. Es un dato fijo. Es un prefijo que indica al calculador de fórmulas que se trata de una llamada a una función remota.

**idFuncion**: identificador de la función a ejecutar.

![](/files/-M7D79EpXu_cm8pz5KlQ)

**dominioIP**: dominio o IP de la máquina donde está instalado el Velneo vServer y el número de puerto.

En el caso de [Velneo Web](/velneo-vclient-web.md) el puerto que tenemos que especificar es el **puerto de wss** (*websockets*) del servidor, esto es, el puerto del servidor, pero acabado en nueve. Por ejemplo, si el puerto de escucha del servidor es el 690 en la configuración de la llamada a una función remota en Velneo Web el puerto que debemos especificar es el 699.

Para facilitar la programación en el caso de que vayamos a ejecutar la aplicación en los dos entornos, (escritorio/Web) podemos hacer uso de la función [getPlatform](/velneo-vdevelop/scripts/lenguajes/javascript/clases/vsysinfo.md#getplatform) de la clase [VSysInfo](/velneo-vdevelop/scripts/lenguajes/javascript/clases/vsysinfo.md) de la API de Velneo para JavaScript. Ejemplo:

```
If ( /*JAVASCRIPT*/theApp.sysInfo().getPlatform() === VSysInfo.PlatformWASM; )
	Set ( PUERTO, 699 )
Else
	Set ( PUERTO, 690 )
Set ( RES, rfc:MI_FUNCION("vatps://midominio.com:" + PUERTO, "MI_APP", "velneo", "1234", "") )
Mensaje ( "Respuesta: "  + RES, Información, ,  )

```

**idInstancia**: identificador de la instancia. Podremos obtenerlo haciendo doble clic sobre la definición de [instancia](/velneo-vadmin/gestion-de-aplicaciones/instancias.md) en [Velneo vAdmin](/velneo-vadmin/que-es-velneo-vadmin.md). Debe ser el identificador de la instancia del proyecto en el que se encuentre declarada la función. Si, por ejemplo, instanciamos un proyecto de aplicación que hereda uno de datos en el que tenemos declarada una función, al definir la llamada a la misma el identificador será el de la instancia del proyecto de datos y no la del de aplicación.

![](/files/-M7D79Eqi0fy0l1E1ofg)

usuario: nombre de un usuario que tenga permisos de acceso a la instancia donde está definida la función. El usuario debe tener permisos de acceso explícitos al proyecto que contiene la función. No es suficiente con que tenga permisos de ejecución de un proyecto que lo herede.

contraseña: del usuario anterior. Si ese usuario no tiene contraseña este parámetro será resuelto "".

parámetros: si la función tiene declarado más de un parámetro, éstos irán separados por comas.

`rfc:GET_USER_SESION_NUMBER("vatp://localhost:85", "GESTION", "velneo", "", "carlos@gmail.com", "ib3zax1")`


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://doc.velneo.com/velneo-vdevelop/proyectos-objetos-y-editores/editores/asistente-de-formulas/funciones-remotas.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
