ID automatisch generieren lassen?

24. März 2010 14:02

Guten Tag!

ich teste momentan verschiedene Möglichkeiten, die Verwaltung unserer Kundendaten zu vereinfachen. Bisher ist noch keine explizite Software verwendet worden, ich starte also ziemlich von 0 an.
In der letzten Zeit habe ich mich etwas näher mit Microsoft CRM beschäftigt und probiere gerade an der Online-Testphase ein paar Dinge aus, die wir benötigen würden.
Bei der Suche nach einigen Tipps und Problemlösungen bin ich nun auf dieses Forum gestossen - in der Hoffnung hier einige Tipps und Anregungen für spezielle Problemstellungen zu finden.

Nun bin ich auf eine (wahrscheinlich) simple Sache gestossen:
Beim Anlegen eines Produktes gibt das System ja die Eingabe einer ID als erforderlich vor.
Da wir intern bisher für Produkte keine Nummern in dem Sinne benutzen, gibt es auch noch keine Vorgabe bezüglich einer ID.
Ich würde diese ID nun gerne automatisch generieren lassen und wenn möglich, auch in einem von uns noch festzulegenden bestimmten Format (als Beispiel: PRD-00000).

Wie kann ich dies realisieren?

Eine weitere Frage wäre noch: Könnte man in dieser ID den Inhalt eines Feldes in einem Produkt wiedergeben? Wenn ich also z.B. einen Fernseher als Produkt hinterlege, dass dann in der Produkt-ID an einer Stelle ein Kürzel für dieses Produkt auftaucht? Sodass die ID dann so (oder so ähnlich) aussieht: PRD-TV-00000.

Gruß,
hoomel
Zuletzt geändert von hoomel am 25. März 2010 17:09, insgesamt 2-mal geändert.

Re: ID automatisch generieren lassen?

24. März 2010 14:20

Hallo!

Meines Wissens gibt es für Produkte keine automatische Nummerierung. Die Entitäten, für die man sowas einstellen kann, findest Du unter dem gleichnamigen Punkt unter Einstellungen/Verwaltung.

Wenn Du sowas zwingend benötigst, wirst Du wohl selbst was programmieren müssen.

Gruß,
Daniel

Re: ID automatisch generieren lassen?

25. März 2010 11:24

Hallo,

danke für die schnelle Antwort.

Da ich noch neu bin im Bereich Microsoft CRM, wo würde ich bei der Programmierung einer solchen automatischen Nummerierung ansetzen?

Und kann ich eine solche Anpassung überhaupt auf dem Online-Test von Microsoft ausprobieren?

Gruß,
hoomel

Re: ID automatisch generieren lassen?

25. März 2010 11:36

Hab das mal für die Angebotsnummer gemacht.
Die Angebotsnummer beginnt hier immer mit 840
Die Attribute "meine_angebotsnummer und my_counter" müssen natürlich erstellt werden.

var serverUrl = 'http://AKSRV120/mscrmservices/2006';
if (crmForm.all.meine_angebotsnummer.DataValue == null)
{

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/2006/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:Body>" +
" <query xmlns:q1='http://schemas.microsoft.com/crm/2006/Query' xsi:type='q1:QueryExpression' xmlns='http://schemas.microsoft.com/crm/2006/WebServices'>"+
" <q1:EntityName>quote</q1:EntityName>"+
" <q1:ColumnSet xsi:type='q1:ColumnSet'>"+
" <q1:Attributes>"+
" <q1:Attribute>mein_counter</q1:Attribute>"+
" </q1:Attributes>"+
" </q1:ColumnSet>"+
" <q1:Criteria>"+
" <q1:FilterOperator>And</q1:FilterOperator>"+
" <q1:Conditions>"+
" <q1:Condition>"+
" <q1:AttributeName>mein_counter</q1:AttributeName>"+
" <q1:Operator>Like</q1:Operator>"+
" <q1:Values>"+
" <q1:Value xsi:type='xsd:string'>840%</q1:Value>"+
" </q1:Values>"+
" </q1:Condition>"+
" </q1:Conditions>"+
" </q1:Criteria>"+
" <q1:Orders>"+
" <q1:Order>"+
" <q1:AttributeName>mein_counter</q1:AttributeName>"+
" <q1:OrderType>Descending</q1:OrderType>"+
" </q1:Order>"+
" </q1:Orders>"+
" <q1:PageInfo>" +
" <q1:Count>1</q1:Count><q1:PageNumber>1</q1:PageNumber>" +
" </q1:PageInfo>" +
" </query>"+
" </soap:Body>"+
" </soap:Envelope>");

var result = xmlhttp.responseXML.xml;
var Ergebnis = result.search(/<BusinessEntities>/);
if (Ergebnis != -1)
{
var BEs= result.split('<BusinessEntities>');
var BEe = BEs[1].split('<BusinessEntity');
var BE = BEe[1].split('mein_counter');
knumber = BE[1].substring(BE[1].indexOf('>') + 1,BE[1].indexOf('<'));
knumber = String(parseInt(knumber)+1);
crmForm.all.mein_counter.DataValue = ('00000000').substring(0, 8 - knumber.length ) + knumber;

crmForm.all.meine_angebotsnummer.DataValue = crmForm.all.mein_counter.DataValue;
crmForm.all.mein_counter.ForceSubmit = true;
}
}

Re: ID automatisch generieren lassen?

25. März 2010 13:01

Hallo,

wie und wo muss ich jetzt dieses JScript von Smeagul ausführen?

Ich hatte zunächst an ein relativ simples OnLoad-Skript gedacht, aber dein Post scheint mir von außerhalb auf das CRM zuzugreifen?

Ein OnLoad-Skript hatte ich testweise schon mal ausprobiert, indem ich versucht habe, einfach nur eine Zahl in das Feld einzutragen, doch beim Aufruf des Formulars passiert leider gar nichts.

Dies hier steht im OnLoad-Feld in den Formularoptionen:

Code:
crmForm.all.productnumber.DataValue = 12;


Ich hätte zwar nicht gedacht, dass man in einem solchen Skript einen Fehler nicht finden kann, aber irgendwie passiert nichts in dem Feld ID , wenn ich in Produkte auf "Neu" klicke und das Formular geladen ist.
Habe ich es mir wohl zu einfach gemacht?

Gruß,
hoomel

Re: ID automatisch generieren lassen?

25. März 2010 13:17

Ich hab das Script im OnSave eingebunden!

Und im Feld mein_counter die Anfangsnummer hinterlegen!

Re: ID automatisch generieren lassen?

25. März 2010 13:41

Hallo,

haben nun dieses Skript im OnSave hinterlegt und mein_angebotsnummer und mein_counter umbenannt in new_productnumber und new_counter, um nicht alles umstellen zu müssen.auch für das qoute habe ich product eingesetzt, damit ich mich in der richtigen Entität befinde.

Wie kann ich jetzt new_counter mit der Anfangsnummer belegen? Muss ich das im Skript tun?
Und dann noch ein Frage zu "var serverUrl = 'http://AKSRV120/mscrmservices/2006';" : Hier muss ich doch wohl auch die Angabe auf mein CRM anpassen oder?

Ausserdem muss ich wohl etwas Grundlegendes falsch machen, da ja selbst das oben angegebene simple Skript bei mir nichts bewirkt? Woran könnte das liegen?

Gruß,
hoomel

[Edit:] Ich habe gerade herausgefunden, dass das Schreiben des Wertes "12" in das Feld "productnumber" in der Vorschaufunktion funktioniert, nicht aber, wenn ich ein reales Produkt neu erstellen will.

Re: ID automatisch generieren lassen?

25. März 2010 16:38

'http://AKSRV120/ ist der Name meines Webservers. also hier deinen Webserver eintragen!

Den new_counter einfach im Formular anzeigen lassen und den Anfangswert eingeben!

Re: ID automatisch generieren lassen?

25. März 2010 16:56

Hallo,

da ich bei deinem Code ein wenig das sprichwörtliche Brett vorm Kopf hatte, habe ich mich mal selbst herangewagt.
Folgendes habe ich jetzt als onLoad-Befehl in der Produkt-Entität:
Code:
if(crmForm.all.new_counter.DataValue != null)
{
var current_id = crmForm.all.new_counter.DataValue;
current_id = String(parseInt(current_id)+1);
crmForm.all.productnumber.DataValue = "PRD-" + current_id;
crmForm.all.new_counter.ForceSubmit = true;
window.alert("ID erfolgreich gesetzt!");
}
else
{
crmForm.all.new_counter.DataValue = "10000"
crmForm.all.productnumber.DataValue = "PRD-" + crmForm.all.new_counter.DataValue;
crmForm.all.new_counter.ForceSubmit = true;
window.alert("ID erfolgreich gesetzt!");
}


Allerdings wird bei einem zweiten neu angelegten Produkt die gleiche ID eingetragen, die auch im ersten steht.
Gehe ich dann auf Speichern, wird allem Anschein nach das onLoad-Ereignis erneut ausgeführt, die ID korrekt inkrementiert und dann der Fehler ausgegeben, der eine doppelte ID reklamiert. Nach Bestätigen des Fehlers kann ich das neue Produkt ohne Probleme speichern.
Was übersehe ich hier noch?

Gruß,
hoomel