[gelöst] Daten aus anderer Entität übernehmen

11. April 2010 23:37

Hallo,

ich versuche via JScript Daten eines Benutzerdefinierten Feldes aus der Entität "Auftrag" in die Entität "Auftrag(Produkt) zu übernehmen. Das habe ich nach Beispielen, welche ich hier im Forum gefunden habe gestaltet. Aber irgendwo muß sich ein Fehler eingeschlichen haben den ich leider nicht finde. Hier das Script, vielleicht hat ja einer von euch eine Idee..

Code:
if (crmForm.all.is_zwischenspeicher.DataValue != null)
{

   var myId = crmForm.all.is_zwischenspeicher.DataValue[0].id;
   

   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\">" +
   GenerateAuthenticationHeader() +
   " <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>SalesOrder</q1:EntityName>" +
   "        <q1:ColumnSet xsi:type=\"q1:ColumnSet\">" +
   "          <q1:Attributes>" +
   "            <q1:Attribute>is_zwischenspeicher</q1:Attribute>" +
   "          </q1:Attributes>" +
   "        </q1:ColumnSet>" +
   "        <q1:Distinct>false</q1:Distinct>" +
   "        <q1:PageInfo>" +
   "          <q1:PageNumber>1</q1:PageNumber>" +
   "          <q1:Count>50</q1:Count>" +
   "        </q1:PageInfo>" +
   "        <q1:Criteria>" +
   "          <q1:FilterOperator>And</q1:FilterOperator>" +
   "          <q1:Conditions>" +
   "            <q1:Condition>" +
   "              <q1:AttributeName>salesorderid</q1:AttributeName>" +
   "              <q1:Operator>Equal</q1:Operator>" +
   "              <q1:Values>" +
   "                <q1:Value xmlns:q2=\"http://microsoft.com/wsdl/types/\" xsi:type=\"q2:guid\">" + myId + "</q1:Value>" +
   "              </q1:Values>" +
   "            </q1:Condition>" +
   "          </q1:Conditions>" +
   "        </q1:Criteria>" +
   "      </query>" +
   "    </RetrieveMultiple>" +
   "  </soap:Body>" +
   "</soap:Envelope>" +
   "";


    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);

   if(xmlHttpRequest.status == 200)
    {

      var resultXml = xmlHttpRequest.responseXML;

      var entityNodes = resultXml.selectNodes("//RetrieveMultipleResult/BusinessEntities/BusinessEntity");

     
     
         var new_numberNode = resultXml.selectNodes("q1:is_zwischenspeicher");
if (numberNode.length == 1)
{
var new_number = numberNode[0].text;
         //alert(new_number);
     

crmForm.all.is_zwischenspeicher.DataValue = new_number;

}
}
}
Zuletzt geändert von akira2012 am 25. April 2010 22:47, insgesamt 1-mal geändert.

Re: Daten aus anderer Entität übernehmen

12. April 2010 08:15

mach mal ein alert(xmlHttpRequest.status); um zu schauen, ob der Status 200 ist?
Wenn du da schon eine andere Zahl hast, dann stimmt mit der Abfrage XML etwas nicht!

Re: Daten aus anderer Entität übernehmen

12. April 2010 23:35

Hallo,

ich habe einen alert versucht der allerdings ins leere lief. Nach langwieriger Prüfung habe ich festgestellt das bereits die erste IF Abfrage ins leere läuft. Ehrlich gesagt hab ich den Teil mit der ID Wohl nicht so recht verstanden.

Also ich habe jetzt ein Lookup Feld welches ich in das Formular "Auftrag(Produkte) eingefügt habe. Dieses verweißt auf die Entität "Auftrag". Es soll also ein Wert aus der Entität Auftrag in die Entität Auftrag(Produkt) übernommen werden. Wenn ich aber jetzt (abgesehen vom Script) das Formular in der Normalen Ansicht öffne dann sehe ich, wenn ich auf die Lupe neben meinem Lookup Feld klicke, alle Aufträge. Allerdings nicht den Wert den ich eigentlich haben wollte...

Also um konkret zu werden...

Code:
if (crmForm.all.is_zwischenspeicherid.DataValue != null)
prüft ob das Lookupfeld Daten enthält. Ich weiß nur nicht welche Daten geprüft sind. Da bei diesem Lookup Feld bei Zuordnungen eine ganze Menge steht...

Achja in der Entität Auftrag heißt das Feld das überprüft werden soll is_zwischenspeicher.

Kann mir irgendwer erklären wie wo was geprüft wird? Ein Link in dem das wirklich verständlich erklärt wird würde auch reichen. Auch wenn mir individuelle Antworten lieber wären.. :-P

Danke erstmal bis hier - auch wenn es nicht den Eindruck macht, aber.. ich mache Fortschritte! :mrgreen:

Re: Daten aus anderer Entität übernehmen

13. April 2010 08:57

Ich befürchte, dass in dem Feld noch nichts steht.

Wann wird den dein Script ausgeführt? Hast du es auch bei "OnChange" in den Eigenschaften des Feldes is_Zwischenspeicher angelget?
Oder wird es beim "OnLoad" des allg. Formulars gestartet? Dann steht nämlich noch kein Wert in dem Feld.

Erläutere mal bitte den genauen Ablauf.

Du öffnest das Formular Auftrag(Produkt) und möchtest einen neuen Datensatzanlegen?
Du füllst das Feld is_Zwischenspeicher aus?

Re: Daten aus anderer Entität übernehmen

13. April 2010 23:39

Also... ^^

Ich lege einen Auftrag an. In diesem Auftrag dann ein Produkt. Aus dem "Auftrag(Produkt)" heraus wird mit einem Workflow ein Feld aus dem "Auftrag" mit den Daten eines Feldes aus "Auftrag(Produkt)" aktualisiert. Ich weiß das klingt jetzt komisch aber.. jetzt soll wenn ich später nochmal das "Auftrag(Produkt)" öffne, einfach automatisch das Lookupfeld is_zwischenspeicherid in "Auftrag(Produkt)" mit dem Werten des Feldes is_Zwischenspeicher "Auftrag" gefüllt werden. Klingt komisch ist aber so. Und nun würde mich interessieren wie ich nun die direkte Verbindung mit dem Feld Is_zwischenspeicher in "Auftrag" und is_zwischenspeicherid in Auftrag(Produkt) hinbekomme. Das mit dem Workflow kannst du vernachlässigen. Geh einfach mal davon aus das ich das Feld is_zwischenspeicher ausfülle...

Gruß

Re: Daten aus anderer Entität übernehmen

14. April 2010 11:05

akira2012 hat geschrieben:Also... ^^

Ich lege einen Auftrag an. In diesem Auftrag dann ein Produkt. Aus dem "Auftrag(Produkt)" heraus wird mit einem Workflow ein Feld aus dem "Auftrag" mit den Daten eines Feldes aus "Auftrag(Produkt)" aktualisiert. Ich weiß das klingt jetzt komisch aber.. jetzt soll wenn ich später nochmal das "Auftrag(Produkt)" öffne, einfach automatisch das Lookupfeld is_zwischenspeicherid in "Auftrag(Produkt)" mit dem Werten des Feldes is_Zwischenspeicher "Auftrag" gefüllt werden. Klingt komisch ist aber so. Und nun würde mich interessieren wie ich nun die direkte Verbindung mit dem Feld Is_zwischenspeicher in "Auftrag" und is_zwischenspeicherid in Auftrag(Produkt) hinbekomme. Das mit dem Workflow kannst du vernachlässigen. Geh einfach mal davon aus das ich das Feld is_zwischenspeicher ausfülle...

Gruß


Ich stehe auf dem Schlauch und checke es einfach nicht.
Wie sind die Entitäten Auftrag und Produkt verknüpft?
Hast du Lookup Feld im Auftrag (parentproductid oder so)?

Entität Auftrag:
Hier gibt es ein Feld is_zwischenspeicher (lookup)
Mit welcher Entitä ist dieses Feld verknüpft?

Entität Produkt:
Hier gibt es ein Feld is_zwischenspeicher (lookup) welches den gleichen Wert bekommen soll, wie in dem vorhergehenden Auftrag.

Re: Daten aus anderer Entität übernehmen

14. April 2010 11:09

Hallo,

mal eine dumme Frage. Dier ist schon klar, das du im Mapping zwischen Order und Order Produkt einsellen kannst, welche Felder der Order in das Order Produkt automatisch übernommen werden sollen, diese FUnktion reicht dir nicht.

Re: Daten aus anderer Entität übernehmen

14. April 2010 18:55

Hallo,

ehrlich gesagt NEIN das wusste ich nicht. Heute ist das Buch angekommen das ich mir bestellt hab (Arbeiten mit CRM) vielleicht kann mich das ja aufklären. Mapping sagt mir grad noch nicht viel... Vielleicht kannst du mir ja auch einen kurzen Link dazu anbieten. Es tut mir leid wenn ich euch mit meinen Anfängerproblemen auf die Nerven gehe. Hoffe nach dieser Lektüre ist das überflüssig. Ich brauche halt nur grade diese Änderung schnellstmöglich.

Re: Daten aus anderer Entität übernehmen

14. April 2010 19:41

Hallo,

kein Problem. Ich habe zwar keinen Link, kann es dir aber gerne eben erklären.
Du gehst auf Einstellungen/Anpassungen und wählst im rechten Bereich den Punkt Entitäten anpassen aus.
Dann gehst du zum Auftrag. öffnest diese und gehst im linken Bereich auf den Link 1:n Beziehungen.
Dort wählst du die BEziehung zwischen dem Auftrag und Auftrag (Produkt) aus.
Dann gehst du auf Zuordnungen, hier kannst du jetzt definieren, welche Felder vom Auftrag in das Aufrtagsdetail übernomen werden sollen.

Re: Daten aus anderer Entität übernehmen

14. April 2010 23:41

Danke für die schnelle Antwort. Habe mich mit den Zuordnungen auseinander gesetzt. Leider ist es nicht das was ich möchte. Die Zuordnungen treten ja nur bei der Erstellung des neuen Datensatzes in Kraft. Ich möchte aber das das Feld in der Entität SalesOrderDetail "is_zwischenspeicher" automatisch aktulisiert wird wenn diese bearbeitet wird. Und das mit dem Wert is_zwischenspeicher aus der Entität SalesOrder.

Re: Daten aus anderer Entität übernehmen

22. April 2010 22:03

Hallo. Ich habe jetzt alles soweit geschafft. Das Buch und eure Verweise haben sehr geholfen. Danke euch!