es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

D365 CustomJS – Actualizar campo con campo AutoNumber al guardar.

Tengo un campo de Autonumber llamado ‘ID’ que genera un ID para un registro. Quiero establecer el campo de Nombre Principal llamado ‘ID_Nombre’ con esto. Actualmente estoy utilizando el siguiente código JS:

function setName(executionContext) {

    formContext = executionContext.getFormContext();

    var name = formContext.getAttribute("id").getValue();
    formContext.getAttribute("id_name").setValue(name);

}

Muy simple. Obtengo el valor de ‘ID’, lo asigno a una variable llamada “name” y luego establezco el valor de ‘ID_Nombre’ con esa variable. Esto activa el evento OnSave.

Esto funciona bien al editar un registro. El problema es que esto no funciona al crear un nuevo registro. Supongo que esto se debe a que en el momento en que se activa el evento OnSave, el campo de Autonumber ‘ID’ aún no ha generado un valor que se pueda utilizar, por lo que ID_Nombre se establece como vacío. Por supuesto, al editar, ID tiene un valor porque el registro ya se ha enviado, por lo que no hay problemas. ¿Hay alguna forma de solucionar este problema?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Sí, hay una manera de abordar este problema. Puede usar el evento OnLoad para verificar si el campo de autonumeración ‘ID’ tiene un valor o no. Si tiene un valor, entonces establezca el campo de nombre principal ‘ID_Name’ en este valor. Si no tiene un valor, simplemente deje en blanco el campo de nombre principal ‘ID_Name’.

    Aquí hay una versión actualizada de la función:

    function setName(executionContext) {
    
        formContext = executionContext.getFormContext();
    
        var id = formContext.getAttribute("id").getValue();
        var id_name = formContext.getAttribute("id_name");
    
        if (id) {
            id_name.setValue(id);
        } else {
            id_name.setValue(null);
        }
    }
    

    Agregue el código anterior en el script existente y debería funcionar correctamente.

Comments are closed.