Sprawdzenie ilości utworzonych dzisiaj kont (account) niezależnie od CRM-a

Posted by admin | Javascript SOAP | poniedziałek 3 sierpień 2009 11:26

Poniżej znajduje się kod który umożliwia sprawdzenie w dzisiejszym dniu jakie konta zostały dodane do CRM-a bez potrzeby nawet otwierania CRM-a.

Całą poniższą zawartość kopiujemy do jednego pliku HTML, warunkiem jest to by być zalogowanym do CRM-a. Należy zmienić adresy serwera oraz nazwę organizacji.

<html>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=windows-1252″>
<title>Access CRM Web Services</title>
<SCRIPT language=”JavaScript”>
  function AccessCRMWebServices()
  {
    // Tutaj należy zmienić adres serwera CRM 4.0   

var serverUrl = “http://191.168.1.5:5555/mscrmservices/2007“;
    var xmlhttp = new ActiveXObject(”Microsoft.XMLHTTP”);
 xmlhttp.open(”POST”, serverUrl + “/crmservice.asmx”, false);
 xmlhttp.setRequestHeader(”Content-Type”, “text/xml; charset=utf-8″)
 xmlhttp.setRequestHeader(”SOAPAction”, “http://schemas.microsoft.com/crm/2007/WebServices/RetrieveMultiple“)
 xmlhttp.send(”<?xml version=’1.0′ encoding=’utf-8′?>”+”\n\n”+”<soap:Envelope”+
 ’ xmlns:soap=”http://schemas.xmlsoap.org/soap/envelope/”‘+
 ’ xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”‘+
 ’ xmlns:xsd=”http://www.w3.org/2001/XMLSchema”>’+
‘  <soap:Header>’ +
‘    <CrmAuthenticationToken xmlns=\”http://schemas.microsoft.com/crm/2007/WebServices\”>’ +
‘      <AuthenticationType xmlns=\”http://schemas.microsoft.com/crm/2007/CoreTypes\”>0</AuthenticationType>’ +
‘      <OrganizationName xmlns=\”http://schemas.microsoft.com/crm/2007/CoreTypes\”>nazwa_organizacji</OrganizationName>’ +
‘      <CallerId xmlns=\”http://schemas.microsoft.com/crm/2007/CoreTypes\”>00000000-0000-0000-0000-000000000000</CallerId>’ +
‘    </CrmAuthenticationToken>’ +
‘  </soap:Header>’ +
‘  <soap:Body>’ +
‘    <RetrieveMultiple xmlns=\”http://schemas.microsoft.com/crm/2007/WebServices\”>’ +
‘      <query xmlns:q1=\”http://schemas.microsoft.com/crm/2006/Query\” xsi:type=\”q1:QueryExpression\”>’ +
‘        <q1:EntityName>account</q1:EntityName>’ +
‘        <q1:ColumnSet xsi:type=\”q1:AllColumns\” />’ +
‘        <q1:Distinct>false</q1:Distinct>’ +
‘        <q1:Criteria>’ +
‘          <q1:FilterOperator>And</q1:FilterOperator>’ +
‘          <q1:Conditions>’ +
‘            <q1:Condition>’ +
‘              <q1:AttributeName>createdon</q1:AttributeName>’ +
‘              <q1:Operator>Today</q1:Operator>’ +
‘            </q1:Condition>’ +
‘          </q1:Conditions>’ +
‘        </q1:Criteria>’ +
‘      </query>’ +
‘    </RetrieveMultiple>’ +
‘  </soap:Body>’ +
‘</soap:Envelope>’)

 

 

var result = xmlhttp.responseXML;
 var entityNodes= result.selectNodes(”//RetrieveMultipleResult/BusinessEntities/BusinessEntity”);

 

for (var i = 0; i < entityNodes.length; i++) {
var entityNode = entityNodes[i];
var accountid = entityNode.selectSingleNode(”q1:accountid”);
var name = entityNode.selectSingleNode(”q1:name”);

//Po pobraniu wyświetlamy nazwę konta oraz link prowadzący do edycji konta

document.writeln(”<a href=\”http://192.1168.1.5:5555/sfa/accts/edit.aspx?id=” + accountid.text + “\” target=\”new\”><font size=\”1px\”" + “name=\”verdana\”>” + name.text + “</font></a><hr>”);
}
}

</SCRIPT>
</head>
<body bgcolor=”#eff3f7″>
    <script language=”JavaScript” type=”text/javascript”>
      AccessCRMWebServices() ;
    </script>
</body>
</html>

 

Automatyczne tworzenie kontaktu powiązanego z kontem

Posted by admin | Javascript SOAP | czwartek 30 lipiec 2009 23:34

Czasem może się przydać szybkie utworzenie kontaktu poprzez kliknięcie jakiegos przycisku na głównej formie konta, np. jeśli firma jest nazwana imieniem i nazwiskiem.

Poniższy kod wystarczy podpiąć np pod jakieś zdarzenie na głównej formie konta i po kliknięciu go mamy gotowy utworzony kontakt.

// Tutaj pobieramy GUIDA konta
var entityId =  document.all.crmFormSubmitId.value;
// Tutaj jego nazwę
var nazwa = document.all.name.value;

// Nazwę rozbijamy na dwie części imię i nazwisko, które wykorzystamy do automatycznego utworzenia kontaktu skojarzonego z kontem
var tab = nazwa.split(” “);
var imie;
var nazwisko;

for(indeks in tab){
if (indeks==0){
 imie=tab[indeks];
}
 
if (indeks==1){
 nazwisko=tab[indeks];
}
if (indeks>1) break;

// Zapytanie tworzące nowy kontakt skojarzony z kontem na podstawie dostarczonego GUIDA konta jego nazwy, oraz rozbitej nazwy konta na imię i nazwisko
var xml = “<?xml version=’1.0′ encoding=’utf-8′?>”+
“<soap:Envelope xmlns:soap=’http://schemas.xmlsoap.org/soap/envelope/’”+
” xmlns:xsi=’http://www.w3.org/2001/XMLSchema-instance’”+
” xmlns:xsd=’http://www.w3.org/2001/XMLSchema’>”+
“  <soap:Header>” +
“    <CrmAuthenticationToken xmlns=\”http://schemas.microsoft.com/crm/2007/WebServices\“>” +
“      <AuthenticationType xmlns=\”http://schemas.microsoft.com/crm/2007/CoreTypes\”>0</AuthenticationType>” +
“      <OrganizationName xmlns=\”http://schemas.microsoft.com/crm/2007/CoreTypes\”>nazwa_organizacji</OrganizationName>” +
“      <CallerId xmlns=\”http://schemas.microsoft.com/crm/2007/CoreTypes\”>00000000-0000-0000-0000-000000000000</CallerId>” +
“    </CrmAuthenticationToken>” +
“  </soap:Header>” +
“<soap:Body>”+
“<Create xmlns=’http://schemas.microsoft.com/crm/2007/WebServices’>”+
“<entity xsi:type=’contact’>”+
“<parentcustomerid name=\”"+nazwa+”\” type=\”account\”  >”+entityId+”</parentcustomerid>”+
“<firstname>” + imie + “</firstname>”+
“<lastname>” + nazwisko + “</lastname>”+
“</entity>”+
“</Create>”+
“</soap:Body>”+
“</soap:Envelope>”;
// Przygotowujemy odpowiednie nagłówki xmlHttp i wysyłamy zapytanie.
var xHReq = new ActiveXObject(”Msxml2.XMLHTTP”);
xHReq.Open(”POST”, “/mscrmservices/2007/CrmService.asmx”, false);
xHReq.setRequestHeader(”SOAPAction”,”http://schemas.microsoft.com/crm/2007/WebServices/Create“);
xHReq.setRequestHeader(”Content-Type”, “text/xml; charset=utf-8″);
  xHReq.setRequestHeader(”Content-Length”, xml.length);
xHReq.send(xml);
// Pobieramy wyniki
var resultXml = xHReq.responseXML;

// Sprawdzamy błędy.
var errorCount = resultXml.selectNodes(’//error’).length;
if (errorCount != 0)
{
 var msg = resultXml.selectSingleNode(’//description’).nodeTypedValue;
 alert(msg);
}

else
{
alert(”Kontakt utworzono.”);
}

Pobieranie danych z entity contact za pomocą Javascript SOAP

Posted by admin | Javascript SOAP | środa 29 lipiec 2009 22:38

// Tutaj definiujemy URL gdzie znajduje się Web Service, w przypadku wywoływania tego przykładu nie z poziomu MS CRM musimy jeszcze podać całą ścieżkę do serwera np. http://192.168.10.10:5555/mscrmservices/2007/crmservice.asmx
var serverUrl = “/mscrmservices/2007/crmservice.asmx”;

// Ustawiamy żądanie XMLHTTP
var xmlhttp = new ActiveXObject(”Microsoft.XMLHTTP”);
xmlhttp.open(”POST”, serverUrl, false);
xmlhttp.setRequestHeader(”Content-Type”, “text/xml; charset=utf-8″)

// Ustawiamy poprawną akcję SOAP w nagłówku, w tym przypadku Retrieve ponieważ chcemy otrzymać w wyniku jeden kontakt o danym GUID

xmlhttp.setRequestHeader(”SOAPAction”, “http://schemas.microsoft.com/crm/2007/WebServices/Retrieve“)

// Tutaj definiujemy główne zapytanie
// Zmieniamy organization_name pomiędzy Tagami <OrganizationName> na prawidłową wartość

// Zmieniamy wartość pomiędzy tagami <id> na prawidłową wartość

var message =
[
  "<?xml version='1.0' encoding='utf-8'?>",
  "<soap:Envelope xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd='http://www.w3.org/2001/XMLSchema'>",
  "  <soap:Header>",
  "    <CrmAuthenticationToken xmlns='http://schemas.microsoft.com/crm/2007/WebServices'>",
  "      <AuthenticationType xmlns='http://schemas.microsoft.com/crm/2007/CoreTypes'>0</AuthenticationType>",
  "      <OrganizationName xmlns='http://schemas.microsoft.com/crm/2007/CoreTypes'>organization_name</OrganizationName>",
  "      <CallerId xmlns='http://schemas.microsoft.com/crm/2007/CoreTypes'>00000000-0000-0000-0000-000000000000</CallerId>",
  "    </CrmAuthenticationToken>",
  "  </soap:Header>",
  "  <soap:Body>",
  "    <Retrieve xmlns='http://schemas.microsoft.com/crm/2007/WebServices'>",
  "      <entityName>contact</entityName>",
  "      <id>b07be4aa-f87b-dc11-8276-0003ff8a2b47</id>",
  "      <columnSet xmlns:q1='http://schemas.microsoft.com/crm/2006/Query' xsi:type='q1:ColumnSet'>",
  "        <q1:Attributes>",
  "          <q1:Attribute>fullname</q1:Attribute>",
  "        </q1:Attributes>",
  "      </columnSet>",
  "    </Retrieve>",
  "  </soap:Body>",
  "</soap:Envelope>"
].join(”");

// Wysyłamy zapytanie do CRM API przez web service i otrzymujemy odpowiedź
xmlhttp.send(message);
var result = xmlhttp.responseXML.xml;

// Tworzymy nowy dokument DOM i ładujemy tam odpowiedź XML
var doc = new ActiveXObject(”MSXML2.DOMDocument”);
doc.async = false;
doc.loadXML(result);

// Wyszukujemy fullname to chcemy wyciągnąć i wyświetlić
var returnNode = doc.selectSingleNode(”//fullname”);
if( returnNode != null )
{
  // Jeśli znajdziemy tę wartość wyświetlamy ją
  alert( returnNode.text );
}