none
[CRM 2011] Referenciar Arquivo JS de outro arquivo JS RRS feed

  • Pergunta

  • Olá pessoal! Vou procurar detalhar ao máximo a minha situação, para que possam me ajudar a resolver o meu problema.

    Criei um botão na Ribbon do meu formulário Linha de Contrato chamado Encerrar Linha de Contrato. O botão só fica habilitado para o clique quando somente um registro da Linha de Contrato é selecionando.

    Ao clicar, o botão chama a minha função JavaScript (vide código abaixo) que com o ID da Linha de Contrato selecionada, executa uma query (ODAta Query) e abre outro formulário, Hora de Linha de Contrato que está relacionada com a Linha de Contrato.

    Até aqui, tudo ocorre perfeitamente, o problema é que minha função JavaScript precisa utilizar o arquivo jquery1.4.1vsdoc (este arquivo pode ser encontrado facilmente em uma pesquisa) para executar o $.ajax

    Como disse, esse é o problema, referenciar o jquery14.1vsdoc, já tentei de várias maneiras:

    • Colocando ambos na biblioteca do formulário
    • Usando <reference path="jquery1.4.1vsdoc.js" /> de mil maneiras, com caminho absoluto, relativo, nome informado pelo CRM na importação, nome original e etc.

    O curioso, é que quando eu coloco ambos arquivos na biblioteca do formulário e chamo a minha função (sem a query e com ID fixo) no Load da página, ele executa corretamente.

    Bom! Para não perder mais tempo unifiquei os dois arquivos .JS e funcionou perfeitamente, porém creio que não seja uma boa prática, pois caso precise alterar o arquivo base terei que fazer em todos os arquivos que estão utilizando.

    Conto com ajuda de vocês.

    function OpenHoraLinhaContrato(selectedIdLinhaContrato) {
    
        if (selectedIdLinhaContrato != null && selectedIdLinhaContrato != "" && typeof (selectedIdLinhaContrato) != "undefined") {
    
            var idLinhaContrato = selectedIdLinhaContrato[0];
            idLinhaContrato = idLinhaContrato.replace("{", "");
            idLinhaContrato = idLinhaContrato.replace("}", "");
    		
            var serverUrl = "http://" + window.location.host + "/" + Xrm.Page.context.getOrgUniqueName();
            var ODATA_ENDPOINT = "/XRMServices/2011/OrganizationData.svc";
            var query = "/new_horadelinhadecontratoSet?$select=new_horadelinhadecontratoId&$filter=new_contractdetailid/Id eq guid' " + idLinhaContrato + "'";
    
            var urlQuery = serverUrl + ODATA_ENDPOINT + query;
    
            $.ajax(
            {
                type: "GET",
                async: false,
                contentType: "application/json; charset=utf-8",
                datatype: "json",
                url: urlQuery,
                beforeSend: function (XMLHttpRequest) {
                    XMLHttpRequest.setRequestHeader("Accept", "application/json");
                    XMLHttpRequest.setRequestHeader("Content-Type", "application/json; charset=utf-8");
                },
                success: function (data, textStatus, HmlHttpRequest) {
    
                    var idHoraLinhaContrato = data.d.results[0].new_horadelinhadecontratoId;
                    Xrm.Utility.openEntityForm("new_horadelinhadecontrato", idHoraLinhaContrato);
    
                },
                error: function (XmlHttpRequest, textStatus, errorThrown) {
                    alert("Não foi possível encerrar esta Linha de Contrato.");
                }
            });
    
        }
        else {
            alert("Não foi possível encerrar esta Linha de Contrato.");
        }
    }



    Vanderlei Santana

    quarta-feira, 24 de julho de 2013 21:30

Respostas

Todas as Respostas