TheRegisterIn ¿getId?


([N1] rid0406) #1

Hola de nuevo,
Estoy haciendo un alta desde JavaScript a una tabla de Velneo y entiendo que funciona así:
theRoot.beginTrans(“Alta Registro”);
theRegisterIn.setField(1, theRoot.varToString(“NAME”));
theRegisterIn.setField(2, theRoot.varToString(“LASTNAME”));
theRoot.commitTrans();

Hasta aquí funciona correctamente ya que estoy en una ficha de la tabla

Lo que necesito ahora es el ID del registro que se crea después del alta, he intentado con
theRegisterIn.fieldToInt(0); o theRegisterIn.fieldToInt(“ID”);
Pero ambas me sacan 0, el problema es que lo necesito justo después de hacer el alta para asignarlo a una variable y en la documentación no doy con el código especifico.

No se si tendré que crearme otro Manejador de Evento JS justo después de este que recorra todos los campos y me muestre los IDs, si fuese así, entonces cual es el código para obtener el ID del Registro en cuestión.

Gracias por la ayuda
Att Daniel.


([N1] wikan) #2

No se si te está funcionado. Si acaso estás haciendo una modificación del registro entrante al proceso theRegisterIn

Tendrías que crear un nuevo VRegister

`var registro = new VRegister(theRoot);
registro.setTable(<el idRef de tabla>);

aquí los setField()

registro.addRegister(); // Te falta la orden de alta.
theRoot.commitTrans();

Con esto si estarías creando un registro nuevo.


([N3] pacosatu) #3

Hola Daniel.

Por lo que cuentas, entiendo que estás usando un Manejador JS dentro de un formulario, entonces el código sería el siguiente:


// theRegisterIn es el registro nuevo del formulario
var oForm = theRoot.dataView()
theRegisterIn.setField(1,theRoot.varToString("NAME"));
theRegisterIn.setField(2,theRoot.varToString("LASTNAME"));
oForm.saveRegister()  // Damos de Alta el registro nuevo del formulario
alert(theRegisterIn.fieldToInt("ID"))

No necesitas abrir transacción porque la función oForm.saveRegister() ya se encarga de hacerlo, equivale al comando “Interfaz: Guardar ficha en alta o modificación”.

Si en lugar de un Manejador de evento fuera un Proceso JS entonces sí necesitas abrir transacción:


// theRegisterIn es un registro nuevo que viene del formulario o de otro proceso mediante "Crear nueva Ficha en memoria"
theRoot.beginTrans("Alta ficha desde el API")
theRegisterIn.setField(1,theRoot.varToString("NAME"));
theRegisterIn.setField(2,theRoot.varToString("LASTNAME"));
theRegisterIn.addRegister()  // Damos de Alta el registro nuevo
theRoot.commitTrans()
alert(theRegisterIn.fieldToInt("ID"))

Pruébalo
Saludos
Paco Satué


([N1] rid0406) #4

Muchas gracias a ambos, efectivamente Paco como estoy en un manejador de evento no me hace falta el commitTrans y con el .saveRegister() me saca justo después el “ID”

Gracias por la ayuda