Inquiridor
FetchXML não traz ID do registro correto

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);
}- Editado Vinicius Drumond - Dynamics CRM quarta-feira, 30 de março de 2016 21:28
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
-
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?
-
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