none
FetchXML não traz ID do registro correto RRS feed

  • Pergunta

  • Preciso de uma ajuda....

    Desenvolvi um JavaScript que pega os valores de 2 campos de uma entidade customizada e insere em outra.

    Usei o um FetchXml para pegar esses valores dos campos, porém o Fetch não está trazendo o ID correto. O mais estranho que fiz a mesma coisa em outra entidade e deu certo.

    Estou usando a biblioteca da Codeplex a "CrmFetchKit" no modo Síncrono.

    Poderia me ajudar?

    Segue JS:

    function atualizaValoresRecursoApontamento() {

        Xrm.Page.data.entity.attributes.get("itbr_valorhorarecurso").setSubmitMode("always");
        Xrm.Page.data.entity.attributes.get("itbr_valormensalrecurso").setSubmitMode("always");

        var idRecursoAponta = Xrm.Page.data.entity.getId();
        var fetchXMLremuneracao = [
        '<fetch version="1.0" output-format="xml-platform" mapping="logical" distinct="false">',
        '<entity name="itbr_remuneracao">',
        '<attribute name="itbr_remuneracaoid" />',
        '<attribute name="itbr_valormensal" />',
        '<attribute name="itbr_salriomensal" />',
        '<attribute name="itbr_recurso" />',
        '<order attribute="itbr_recurso" descending="false" />',
        '<filter type="and">',
        '<condition attribute="itbr_salriomensal" operator="not-null" />',
        '<condition attribute="itbr_recurso" operator="eq" uitype="equipment" value="' + idRecursoAponta + '" />',
        ' </filter>',
        '</entity>',
        '</fetch>'].join("");

        var valorhora;
        var valormensal;

        var entities = CrmFetchKit.FetchSync(fetchXMLremuneracao);

            if (entities.length > 0) {
                valorhora = entities[0].attributes["itbr_valorrecurso"].value;
                valormensal = entities[0].attributes["tbr_valormensalrecurso"].value;
            }

            else (valorhora == null && valormensal == null)
            {
                Xrm.Page.getAttribute("itbr_valorhorarecurso").setValue(null);
                Xrm.Page.getAttribute("itbr_valormensalrecurso").setValue(null);
            }
            //atualiza valores no apontamento
            Xrm.Page.getAttribute("itbr_valorhorarecurso").setValue(valorhora);
            Xrm.Page.getAttribute("itbr_valormensalrecurso").setValue(valormensal);
    }


    quarta-feira, 30 de março de 2016 21:24

Todas as Respostas

  • Boas Vinicius,

    O código parece bem. Tenta validar o nome dos campos. A query retorna algum dado ou dá algum erro?

    Espero ter ajudado.
    Se respondi a sua pergunta por favor marque como resposta e\ou como útil.


    Pedro Azevedo Crm Specialist 4.0\2011

    • Sugerido como Resposta Azevedo PedroMVP quinta-feira, 31 de março de 2016 11:16
    quinta-feira, 31 de março de 2016 11:16
  • Pedro,

    Obrigado pela resposta.

    Então, não ocorre nenhum erro. Eu coloquei um alert() em baixo do "var entities = CrmFetchKit.FetchSync(fetchXMLremuneracao);", ele deveria retornar um "Object", mas não está retornando errado.

    Depois disso eu coloquei um alert() em baixo do "var fetchXMLremuneracao = [", e verifiquei que o  ID do registro que está retornando não existe.

    Não sei mais o que fazer..... já mudei o Fetch diversas vezes cheguei até mudar a biblioteca "CrmFetchKit" para a XrmServiceToolkit e também não tive evolução sobre isso.

    O que mais posso fazer?

    quinta-feira, 31 de março de 2016 13:57
  • Boas Vinicius,

    Não é preciso usar o XrmServiceToolkit, o seu código está correto. O que você obtém nestas linhas:

    valorhora = entities[0].attributes["itbr_valorrecurso"].value;
    valormensal = entities[0].attributes["tbr_valormensalrecurso"].value;

    Uma boa maneira é você simular esta query na Pesquisa Avançada, ou seja, você abre a pesquisa avançada, coloca na entidade itbr_remuneracao, configuras as colunas e colocas o filtro, aqui como não consegues colocar o guid, escolhes mesmo o RecursoAponta. Aí vês se o resultado é o mesmo, depois podes fazer download do FetchXml e comparar com o teu.

    Espero ter ajudado.
    Se respondi a sua pergunta por favor marque como resposta e\ou como útil.


    Pedro Azevedo Crm Specialist 4.0\2011

    • Sugerido como Resposta Azevedo PedroMVP quinta-feira, 31 de março de 2016 22:48
    quinta-feira, 31 de março de 2016 22:47