CRM 2011: Получение объекта с помощью Javascript

Я работаю над некоторыми настройками CRM 2011 Online, и мне нужно получить сущность с помощью javascript.

Нужная мне сущность будет основана на значении идентификатора другого поля (сущности «Контакт») - этот идентификатор контакта я могу получить нормально.

Я хочу создать настраиваемую сущность. На основе идентификатора контакта может быть несколько совпадений, поэтому я просто хочу получить первое в списке (порядок не важен)

Пока что я рассмотрел несколько способов сделать это ...

  • OData - Мне не удалось найти достаточно примеров того, какие выражения запросов я могу создать, также я не знаю, можно ли / как заставить эту работу работать для настраиваемых сущностей

  • FetchXML - я могу создать хороший запрос FetchXML, используя встроенный в "расширенном поиске" тоже и были бы счастливы вызвать это из javascript, если кто-нибудь может помочь? Я нашел один многообещающий ответ здесь , но я не мог видеть, как устанавливаются возвращаемые данные «результатов» (функция Service.Fetch)

  • Запрос SOAP - Первое, что я попробовал, - это похожий метод, который я мог сделали в CRM 4, но это, похоже, не работает. Хотя запрос выполняется, мои данные результатов кажутся пустыми. Это все, для чего у меня есть код, поэтому, если кто-то может обнаружить проблему с приведенным ниже кодом, это было бы здорово.

РЕДАКТИРОВАТЬ : я обнаружил некоторые избыточные данные запроса (я удалил открывающие теги ссылки, но оставил закрывающие теги) - после удаления этого я теперь получаю данные результата XML ... однако предложение where, похоже, не применяется (просто получите список всех сущностей)

    var xml = "" + 
    "" + 
    GenerateAuthenticationHeader() +
    "" + 
    "" + 
    "" + 
    "new_vehicle" + 
    "" + 
    "" + 
    "new_vehicleid" +
    "new_primarydriver" +
    "statuscode" +
    "new_registration" +
    "" + 
    "" + 
    "false" + 

    "" + 

                     "" +
                     "new_primarydriver" +
    "Equal" +
    "" +
    "" +
    customerID +
    "" + 

    "" +

    "" +
    "";


    var xmlHttpRequest = new ActiveXObject("Msxml2.XMLHTTP");

    xmlHttpRequest.Open("POST", "/mscrmservices/2007/CrmService.asmx", false);
    xmlHttpRequest.setRequestHeader("SOAPAction", "http://schemas.microsoft.com/crm/2007/WebServices/RetrieveMultiple");
    xmlHttpRequest.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
    xmlHttpRequest.setRequestHeader("Content-Length", xml.length);
    xmlHttpRequest.send(xml);

    var result = xmlHttpRequest.responseXML.xml;
    var doc = new ActiveXObject("MSXML2.DOMDocument");
    doc.async = false;
    doc.loadXML(result);

    var id = doc.selectSingleNode("//new_vehicleid");
    var registration = doc.selectSingleNode("//new_registration");

    if(id == null)
       return null;

    var vehicle = new Array();
                     value[0] = new Object();
                     value[0].id = id;
                     value[0].name = registration;
                     value[0].entityType = "new_vehicle";

    return vehicle;

Извините за большой пост с кодом, но, надеюсь, кто-нибудь, кто лучше разбирается в этом, может помочь

14
задан Community 23 May 2017 в 12:10
поделиться