none
Campo numerico personalizado RRS feed

  • Pregunta

  • Buenos dias amigos, realicé unos campos personalizados en la entidad cuenta, para realizar unos calculos matematicos, el sistema me hace el calculo correcto, solo que cuando necesito cambiar ese calculo, por algun motivo, el me lo hace, pero si guardo y cierro el formulario y lo vuelvo a abrir, me aparece los calculos anteriores y no los actualizados que ya habia realizado, porque no me almacena los valores nuevos, sigue conservando los viejos, esto solo pasa con los campos numericos, con los string no, estos si los actualiza correctamente, cualquier ayuda es bienvenida.

    Gracias

    jueves, 20 de diciembre de 2012 15:05

Respuestas

  • Hola Cesar1027, el problema puede ocurrir también si el campo que no se actualiza esta de solo lectura (readonly).

    Esto es así porque el CRM solo envía para modificar por defecto los campos que están "dirty" (IsDirty()) y activados. Si ese campo esta desactivado, puedes forzarle al CRM que lo envie siempre (o cuando este "Dirty") con la funcionalidad Xrm.Page.getAttribute("new_calificacion").setSubmitMode("always");

    un saludo,


    Demian Adolfo Raschkovan Blog: http://crmtoall.blogspot.com

    jueves, 20 de diciembre de 2012 16:00
    Moderador
  • mmm me imagino que el error esta en el campo new_calificacion, no? Me imagino que este código está en el Onchange de una campos, no?


    Puedes hacer una prueba de poner un valor X, el que sea. Luego cierras abres y dinos que pasa.

    Salu2 Atilin | http://www.dexrm.com

    • Marcado como respuesta Cesar1027 jueves, 20 de diciembre de 2012 16:03
    jueves, 20 de diciembre de 2012 15:56
  • La funcionalidad de getIsDirty() te devuelve "true" si el campo se ha modificado y "false" si no se ha modificado.

    Para utilizarlo bien, deberías en el evento "OnSave" hacer lo siguiente:

    if (Xrm.Page.getAttribute("new_calificacion").getIsDirty()) //si el campo se ha modificado

    {

       Xrm.Page.getAttribute("new_calificacion").setSubmitMode("always"); //forzamos el envío del campo para que se guarde.

    }

    un saludo


    Demian Adolfo Raschkovan Blog: http://crmtoall.blogspot.com

    jueves, 20 de diciembre de 2012 16:33
    Moderador

Todas las respuestas

  • Hola Cesar,

    La actualización de esos campos, lo haces mediante un workflow y/o plugin?


    Salu2 Atilin | http://www.dexrm.com

    jueves, 20 de diciembre de 2012 15:12
  • Gracias Atilio, lo hago por medio de JavaScript (Recurso Web)

    if (total!=null) // por si cambia el puntaje y va hay un total
    {
    var plazo = Xrm.Page.getAttribute("new_porcentajedeplazo").getValue();
    var interes = Xrm.Page.getAttribute("new_porcentajedeinteres").getValue();

    var economica = Xrm.Page.getAttribute("new_porcentajedecapacidadeconomica").getValue();

    var anterior = Xrm.Page.getAttribute("new_calificacion").getValue();
    Xrm.Page.getAttribute("new_calificacionanterior").setValue(anterior);
    var tmp=(plazo*interes*economica)*0.5+(plazo+interes+economica)/3*0.5;
    Xrm.Page.getAttribute("new_calificacion").setValue(tmp);

    }

    jueves, 20 de diciembre de 2012 15:38
  • mmm me imagino que el error esta en el campo new_calificacion, no? Me imagino que este código está en el Onchange de una campos, no?


    Puedes hacer una prueba de poner un valor X, el que sea. Luego cierras abres y dinos que pasa.

    Salu2 Atilin | http://www.dexrm.com

    • Marcado como respuesta Cesar1027 jueves, 20 de diciembre de 2012 16:03
    jueves, 20 de diciembre de 2012 15:56
  • Hola Cesar1027, el problema puede ocurrir también si el campo que no se actualiza esta de solo lectura (readonly).

    Esto es así porque el CRM solo envía para modificar por defecto los campos que están "dirty" (IsDirty()) y activados. Si ese campo esta desactivado, puedes forzarle al CRM que lo envie siempre (o cuando este "Dirty") con la funcionalidad Xrm.Page.getAttribute("new_calificacion").setSubmitMode("always");

    un saludo,


    Demian Adolfo Raschkovan Blog: http://crmtoall.blogspot.com

    jueves, 20 de diciembre de 2012 16:00
    Moderador
  • Gracias por su pronta respuesta Atilio, pero el problema que tenia era el que mencionaba Demian, el campo lo tenia de solo lectura, por tal motivo no me actualizaba, pero muchas gracias!

    Demian gracias a Vos tambien por tu ayuda, ahora una consulta, no me queda muy claro el concepto de Dirty y en que momento pongo esa linea de codigo que mencionas y para que sirve exactamente, me interesa mucho!

    Gracias colegas!


    • Editado Cesar1027 jueves, 20 de diciembre de 2012 16:06
    jueves, 20 de diciembre de 2012 16:05
  • La funcionalidad de getIsDirty() te devuelve "true" si el campo se ha modificado y "false" si no se ha modificado.

    Para utilizarlo bien, deberías en el evento "OnSave" hacer lo siguiente:

    if (Xrm.Page.getAttribute("new_calificacion").getIsDirty()) //si el campo se ha modificado

    {

       Xrm.Page.getAttribute("new_calificacion").setSubmitMode("always"); //forzamos el envío del campo para que se guarde.

    }

    un saludo


    Demian Adolfo Raschkovan Blog: http://crmtoall.blogspot.com

    jueves, 20 de diciembre de 2012 16:33
    Moderador
  • Que exito Demian, lo que necesitaba, me funcionó perfecto, muchas graciasss!!! Igual a vos Atilio!
    jueves, 20 de diciembre de 2012 17:12