# ¿Como puedo cargar el plural de una tabla en JS?

**URL:** <https://foros.velneo.com/t/como-puedo-cargar-el-plural-de-una-tabla-en-js/10909>\
**Category:** Velneo\
**Created:** [7 Diciembre, 2021 08:34 UTC](https://foros.velneo.com/t/como-puedo-cargar-el-plural-de-una-tabla-en-js/10909 "2021-12-07T08:34:23Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![fran\_garcia](https://avatars.discourse-cdn.com/v4/letter/f/df705f/32.png) [@fran\_garcia](https://foros.velneo.com/u/fran_garcia)\
**Post date:** [7 Diciembre, 2021 08:34 UTC](https://foros.velneo.com/t/como-puedo-cargar-el-plural-de-una-tabla-en-js/10909/1 "2021-12-07T08:34:23Z")

</div>

Buenas, estoy intentando dar de alta una serie de registros a traves de un JSON que me envian, la cosa es que debo de cargar sus plurales para insertar sus sub-registros. Lo que tengo es esto y no se como debería de cargarlos para insertarlos a continuación.

```auto
var body = theRequest.body();
var res = JSON.parse(body);

var traspasos = res[0].transfer;

for (var i = 0; i<traspasos.length;i++)
{

	theRoot.beginTrans("Alta");
	var registro = new VRegister( theRoot );
	registro.setTable("prueba_dat/TRASPASOS");
	registro.setField("FECHA", traspasos[i].date);
	registro.setField("EAN", traspasos[i].ean);
	registro.setField("ORIGEN", traspasos[i].origin);
	registro.setField("DESTINO", traspasos[i].destination);
	registro.setField("QTY",traspasos[i].qty);
	registro.addRegister();
	theRoot.commitTrans();
}

```

---

<div class="post-metadata">

**Author:** ![pacosatu](https://yyz1.discourse-cdn.com/flex035/user_avatar/foros.velneo.com/pacosatu/32/5131_2.png) [@pacosatu](https://foros.velneo.com/u/pacosatu)\
**Post date:** [7 Diciembre, 2021 09:37 UTC](https://foros.velneo.com/t/como-puedo-cargar-el-plural-de-una-tabla-en-js/10909/2 "2021-12-07T09:37:40Z")

</div>

Hola fran\_garcia.

Ahora dispones de un conjunto de [funciones](https://doc.velneo.com/velneo-vdevelop/proyectos-objetos-y-editores/editores/asistente-de-formulas/funciones-estandar/funciones-json) y [comandos](https://doc.velneo.com/velneo-vdevelop/proyectos-objetos-y-editores/de-aplicacion-y-datos/proceso/base-de-datos/fichas#crear-o-modificar-ficha-desde-json) para la gestión de cadenas en formato JSON.

Si ya dominas la gestión de las tablas Velneo, lo de importar datos desde JSON será un juego de niños.

Saludos  
Paco Satué

---

<div class="post-metadata">

**Author:** ![fran\_garcia](https://avatars.discourse-cdn.com/v4/letter/f/df705f/32.png) [@fran\_garcia](https://foros.velneo.com/u/fran_garcia)\
**Post date:** [7 Diciembre, 2021 11:36 UTC](https://foros.velneo.com/t/como-puedo-cargar-el-plural-de-una-tabla-en-js/10909/3 "2021-12-07T11:36:03Z")

</div>

Buenas pacosatu.

Si he mirado esas funciones nativas de JSON, esas las uso para otro tipo de fines, antes de hacer lo que comento en el post, probé con esas funciones pero no me dieron resultado y opté por JS, lo que pretendo realizar es capturar una respuesta de un body (En este caso es formato JSON y me la envian en el raw de POSTMAN). Es decir, hacer la función de como si yo fuera una API a la que le pasan datos, el problema es que esos registros dependen de otras tablas como por ejemplo: Un pedido y las lineas de ese pedido. Y busco la forma de poder cargar su plural para ir insertando las lineas dentro de ese pedido. Desconozco si mediante funciones nativas se puede hacer lo que comento, pero creo que no.

---

<div class="post-metadata">

**Author:** ![pacosatu](https://yyz1.discourse-cdn.com/flex035/user_avatar/foros.velneo.com/pacosatu/32/5131_2.png) [@pacosatu](https://foros.velneo.com/u/pacosatu)\
**Post date:** [7 Diciembre, 2021 13:37 UTC](https://foros.velneo.com/t/como-puedo-cargar-el-plural-de-una-tabla-en-js/10909/4 "2021-12-07T13:37:56Z")

</div>

Hola fran\_garcia.

Mediante la clase [VProcess](https://doc.velneo.com/velneo-vdevelop/scripts/lenguajes/javascript/clases/vprocess) puedes combinar perfectamente código **javascript** de tu API webservice con el código **nativo** de Velneo, en el que todo lo relacionado con la gestión de tablas es muy sencillo de programar.

Pásale al proceso nativo el JSON y que sean los comandos nativos de Velneo los que procesen los datos.

Dices:

> … el problema es que esos registros dependen de otras tablas como por ejemplo: Un pedido y las lineas de ese pedido. Y busco la forma de poder cargar su plural para ir insertando las lineas dentro de ese pedido. Desconozco si mediante funciones nativas se puede hacer lo que comento, pero creo que no.

No entiendo nada de lo que quieres hacer, pero hablas de registros relacionados, de cargar plurales, de insertar líneas dentro del pedido … y todo eso es lo que precisamente Velneo nativo hace muy bien.

Saludos  
Paco Satué

---

<div class="post-metadata">

**Author:** ![fran\_garcia](https://avatars.discourse-cdn.com/v4/letter/f/df705f/32.png) [@fran\_garcia](https://foros.velneo.com/u/fran_garcia)\
**Post date:** [9 Diciembre, 2021 16:39 UTC](https://foros.velneo.com/t/como-puedo-cargar-el-plural-de-una-tabla-en-js/10909/5 "2021-12-09T16:39:52Z")

</div>

Buenas pacosatu.

Perdón si no me he explicado bien, aún soy novato con esto de Veleno, lo que quiero hacer es insertar una serie de registros que recibo desde un JSON. He estado mirando lo que me comentaste y he probado a hacer lo siguiente:

Por un lado mi JavaScript:

```auto
importClass("VProcess");
var json = theRequest.body();
var prer = JSON.parse(json);
var proceso = new VProcess(theRoot);
proceso.setProcess("prueba_app/RECOGIDA_JSON");
proceso.setVar("JSON",JSON.stringify(prer));
proceso.exec();

```

Y por otro lado mi proceso Velneo a que llamo desde mi JavaScript pasandole el JSON que recibo:

```auto
Rem ( RECOGEMOS EL JSON )
Set ( JSON_SIZE, jsonGetArrayItem(JSON, 0) )
Set ( VENTAS_SIZE, jsonGetValue(JSON_SIZE, "ventas") )
Set ( VENTAS, jsonGetArrayLength(VENTAS_SIZE) )
For ( X, 0, X<VENTAS, 1 )
Set ( VENTAS_LINEA, jsonGetArrayItem(VENTAS_SIZE, X) )
Crear nueva ficha en memoria ( ficha, VENTAS@prueba_dat )
Modificar campo ( ARTICULO, jsonGetValue(VENTAS_LINEA, "articulo") )
Modificar campo ( CANTIDAD, jsonGetValue(VENTAS_LINEA, "cantidad") )
Modificar campo ( CENTRO, jsonGetValue(VENTAS_LINEA, "centro") )
Modificar campo ( DESCUENTO, jsonGetValue(VENTAS_LINEA, "descuento") )
Modificar campo ( FECHA, jsonGetValue(VENTAS_LINEA, "fecha") )
Modificar campo ( IMPORTE, jsonGetValue(VENTAS_LINEA, "importe") )
Modificar campo ( NETO, jsonGetValue(VENTAS_LINEA, "neto") )
Modificar campo ( PRECIO, jsonGetValue(VENTAS_LINEA, "precio") )
Modificar campo ( TIPO, jsonGetValue(VENTAS_LINEA, "tipo") )
Alta de ficha ( ficha )

```

Los registros se insertan correctamente, pero tardan unos 9 segundos mientras que con JavaScript tarda segundo y medio los 2000 que son. No se si estoy poniendo alguna instrucción repetida o es posible optimizar más esto.

---

<div class="post-metadata">

**Author:** ![pacosatu](https://yyz1.discourse-cdn.com/flex035/user_avatar/foros.velneo.com/pacosatu/32/5131_2.png) [@pacosatu](https://foros.velneo.com/u/pacosatu)\
**Post date:** [9 Diciembre, 2021 17:04 UTC](https://foros.velneo.com/t/como-puedo-cargar-el-plural-de-una-tabla-en-js/10909/6 "2021-12-09T17:04:26Z")

</div>

Hola fran\_garcia.

No es necesario pedir perdón, faltaría más.  
Ya irás aprendiendo con el tiempo que para dar una buena respuesta es imprecindible hacer bien la pregunta.

Ahora que has puesto el ejemplo, está clarísimo lo que quieres hacer y además has entendido perfectamente la forma de usar el API y los comandos nativos de manera simultánea.

Quizás el retardo de 9 segundos se deba a que el proceso se ejecuta en 1º plano. Pásale el parámetro VProcess.RunInServer (2) a la función exec() para ejecutarlo en 3º plano.

Luego puedes probar también con el comando [Modificar campos desde JSON](https://doc.velneo.com/velneo-vdevelop/proyectos-objetos-y-editores/de-aplicacion-y-datos/proceso/base-de-datos/fichas#modificar-campos-desde-json) para modificar todos los campos de la Ficha en una sola línea de Código.

Prueba también a cargar en la variable local JSON el valor theRequest.body() directamente, sin ejecutar previamente un parse() y después un stringify()

Pruébalo.

Saludos  
Paco Satué

---

<div class="post-metadata">

**Author:** ![fran\_garcia](https://avatars.discourse-cdn.com/v4/letter/f/df705f/32.png) [@fran\_garcia](https://foros.velneo.com/u/fran_garcia)\
**Post date:** [9 Diciembre, 2021 21:47 UTC](https://foros.velneo.com/t/como-puedo-cargar-el-plural-de-una-tabla-en-js/10909/7 "2021-12-09T21:47:26Z")

</div>

Buenas pacosatu.

Al final he tirado por tus recomendaciones y he ido limpiando código y optimizando lo más posible.

Se me ha quedado tal que así:

Mi JavaScript:

```auto
importClass("VProcess");
var proceso = new VProcess(theRoot);
proceso.setProcess("prueba_app/RECOGIDA_JSON");
proceso.setVar("JSON",theRequest.body());
proceso.exec();
/* no me ejecuta el proceso
proceso.exec(VProcess.RunInServer(2));
*/

```

Mi Proyecto de Velneo:

```auto
Set ( VENTAS, jsonGetValue(jsonGetArrayItem(JSON, 0), "ventas") )
Cargar lista ( VENTAS@prueba_dat, ID, , , , )
Crear o modificar ficha desde JSON ( toUpper(VENTAS), Solo alta, VENTAS@prueba_dat, ID, , )
Libre

```

El proceso de Velneo mediante esa instrucción ha mejorado su tiempo de ejecución, en primer plano ha pasado de los 9 segundos que comentaba a 1,3 segundos en ingresar 3423 registros. El problema de esa instrucción es que debo de tener las claves del JSON en Mayúsculas (por eso lo del Upper).

Una cosa que no me ha funcionado ha sido la siguiente:

```auto
proceso.exec(VProcess.RunInServer(2));

```

No sé si la he puesto correctamente, pero directamente no se me ejecutaba el proceso.

Te doy las gracias por tu tiempo tomado en contestar y leer, Velneo es algo totalmente nuevo para mi que acabo de salir mis estudios, estoy acostumbrado a otro tipo de cosas y viendo esto aún tengo muchos fallos y mucho que aprender.

---

<div class="post-metadata">

**Author:** ![pacosatu](https://yyz1.discourse-cdn.com/flex035/user_avatar/foros.velneo.com/pacosatu/32/5131_2.png) [@pacosatu](https://foros.velneo.com/u/pacosatu)\
**Post date:** [9 Diciembre, 2021 23:23 UTC](https://foros.velneo.com/t/como-puedo-cargar-el-plural-de-una-tabla-en-js/10909/8 "2021-12-09T23:23:42Z")

</div>

Hola fran\_garcia.

Me alegro que vayas avanzando y espero que pronto le pilles el gusto a Velneo. Te aseguro que en gestión de datos de una manera LifeIsSoft es una herramienta imbatible.

La función exec() tiene como primer parámetro el plano de ejecución que se indica usando la [Enumeración VProcess.RunInServer](https://doc.velneo.com/velneo-vdevelop/scripts/lenguajes/javascript/clases/vprocess#enumeraciones) cuyo valor es la constante 2.

Puedes usar _proceso.exec(VProcess.RunInServer)_ o _proceso.exec(2)_ para ejecutar en 3º plano.

En los comandos nativos sobra el Cargar lista y el Índice ID ya que solo haces Altas.

```auto
Set ( VENTAS, jsonGetValue(jsonGetArrayItem(JSON, 0), "ventas") )
Crear o modificar ficha desde JSON ( toUpper(VENTAS), Solo alta, VENTAS@prueba_dat, , , )

```

Pruébalo.

Saludos  
Paco Satué
