business process that receives parameters from a client module "400 (Bad Request)" on call to execute
Dear colleagues,
If have a couple of process calls in a client module, very similar, one works and the another ones fails before to call the process getting a "400 (Bad Request)" error
Here is the code, the first one fails:
OnGeneraDetalleContratoBtnClick: function() {
// Guarda el registro, por si hubo cambios
this.save();
const RunProcessRequest = Ext.create( "Terrasoft.RunProcessRequest", {
// El nombre del Proceso
"schemaName": "NdosCreaDetalleContrato",
// Parámetros de entrada
"parameterValues": {
"NdosGrupoEconomicoID": this.get( "NdosGrupoEconomico" ),
"NdosContratoID": this.get( "Id")
},
// Parámetros de Salida - True => Hay sucursales
"resultParameterNames": [
"NdosReturn"
]
} );
// Ejecuta el proceso
console.log( RunProcessRequest );
// THIS gets error "400 (Bad Request)" here in the execute //ERROR ERROR HERE HERE
RunProcessRequest.execute(function(response) {
// Si OK, actualiza el valor en funcion de la salida
if (response.isSuccess()) {
// Actualiza la cantidad de meses que dura el contrato
if ( response.resultParameterValues[ "NdosReturn" ] === true ) {
// Tiene sucursales, inhablitita el boton...
this.set( "NdosDetalleContratoGenerado", true );
}
}
}, this );
},
This another wroks fine and are (as I saw identical!!)
// Jalcon - NoCode-Services - 20240110 -
// Cambia alguna de las fechas del Contrato, debe ajustar la duración en meses del mismo
updateDuracionContratoMeses: function() {
const runProcessRequest = Ext.create("Terrasoft.RunProcessRequest", {
// El nombre del Proceso
"schemaName": "Jfl_MesesEntreDosFechas",
// Parámetros de entrada
"parameterValues": {
"NdosFechaInicial": this.get( "NdosFechaInicio" ),
"NdosFechaFinal": this.get( "NdosFechaFinContrato" )
},
// Parámetros de Salida
"resultParameterNames": [
"NdosCantidadDeMeses"
]
});
// Ejecuta el proceso
runProcessRequest.execute(function(response) {
// Si OK, actualiza el valor en funcion de la salida
if (response.isSuccess()) {
// Actualiza la cantidad de meses que dura el contrato
this.set( "NdosMesesDuracionContrato", response.resultParameterValues[ "NdosCantidadDeMeses" ] );
// Si el contrato ya tiene importe, cctualiza el importe del Contrato
if( this.get( "NdosImporteMensualContrato" ) > 0 ) {
this.set( "NdosMontoContrato", this.get( "NdosImporteMensualContrato" ) * this.get( "NdosMesesDuracionContrato" ) );
}
}
}, this);
}
This is part of the error, console log
POST https://XXXXXX.creatio.com/0/ServiceModel/ProcessEngineService.svc/RunProcess 400 (Bad Request)
all-combined.js?v=8.1.1.3635:41 Error al enviar solicitud
estado de respuesta: 400 (Bad Request)
url de solicitud: ../ServiceModel/ProcessEngineService.svc/RunProcessSome ideas? please help
regards,
Julio Falcón
Like
Hi Julio,
Just guessing, is "NdosGrupoEconomico" a lookup? The parameter is named with an Id, so assuming it is. If that is the case, you need to get it's value, right now it's sending the entire object from the lookup.
For example (note, the .value at the end):
"NdosGrupoEconomicoID": this.get("NdosGrupoEconomico").valueHowever, if it's possible that the lookup can be blank, might be a good idea to check for that as well.
Ryan
Hi Julio,
Just guessing, is "NdosGrupoEconomico" a lookup? The parameter is named with an Id, so assuming it is. If that is the case, you need to get it's value, right now it's sending the entire object from the lookup.
For example (note, the .value at the end):
"NdosGrupoEconomicoID": this.get("NdosGrupoEconomico").valueHowever, if it's possible that the lookup can be blank, might be a good idea to check for that as well.
Ryan
Hello Julio,
Can you please share the RunProcess request body (from the network tab in the console)? We can compare it to the successful calls and see the difference. Additionally you need to check if both retrieved values (using this.get getters) are strings.
Ryan Farley,
Thanks Ryan, you are right. Fortunately I had already found my mistake... almost a beginner's mistake :-(