Partner über SOAP anlegen - Wie mit dem Nummernkreis umgehen
Die Partner.Nummer ist beim Import ein Pflichtfeld. Muss also vorher irgendwie bekannt sein.
-
matthias.steines
- Beiträge:82
- Registriert:Fr Feb 01, 2019 10:09 am
- Hat sich bedankt: 12 Mal
- Danksagung erhalten: 4 Mal
Wir möchten Ansprech-Partner automatisiert per SOAP-Client anlegen. Dies sind neue Kontakte aus unserem Shopsystem.
Das funktioniert alles gut bis auf ein entscheidendes Detail:
Die Partner-Nummer muss angegeben werden.
Beim manuellen Anlegen in der Anwendung wird eine freie Nummer vom System mittels Nummernkreis ermittelt.
Aber für das Anlegen mittels SOAP-Client haben wir keine Lösung gefunden.
Wir haben versucht, mittels OQL-Anfrage eine freie Partnernummer zu ermitteln aus dem Nummernkreis, was zwar funktioniert, aber das Problem dabei ist, dass der vom Nummernkreis vor berechnete Cache dabei nicht geupdatet wird und es somit beim nächsten manuellen Anlegen in der Anwendung zu einem Fehler kommt, weil die nächste Nummernkreisnummer bereits vom SOAP-Client genutzt wurde...
Als hässlichen Workaround haben wir in der externen Anwendung, welche die per SOAP die Partner anlegt, eine eigene Logik und Aufbau der Partnernummer definiert. D.h. wir haben bei in CEE manuell angelegten Ansprech-Partnern eine fünfstellige Nummer, bei per SOAP eine sechsstellig. So dass sich die beiden Bereich auf absehbare Zeit nicht überschneiden können.
Vor dem Import eines neuen Ansprechpartners bestimmen wir mit MAX(partner:number) die höchste vorhandene Partnernummer und wählen dann MAX+1 als nächste freie Partnernummer.
Hat jemand hier Erfahrung mit dem automatisierten Anlegen von Stammdaten aus anderen System?
Wie geht ihr mit dem Thema Nummernkreis um?
Das funktioniert alles gut bis auf ein entscheidendes Detail:
Die Partner-Nummer muss angegeben werden.
Beim manuellen Anlegen in der Anwendung wird eine freie Nummer vom System mittels Nummernkreis ermittelt.
Aber für das Anlegen mittels SOAP-Client haben wir keine Lösung gefunden.
Wir haben versucht, mittels OQL-Anfrage eine freie Partnernummer zu ermitteln aus dem Nummernkreis, was zwar funktioniert, aber das Problem dabei ist, dass der vom Nummernkreis vor berechnete Cache dabei nicht geupdatet wird und es somit beim nächsten manuellen Anlegen in der Anwendung zu einem Fehler kommt, weil die nächste Nummernkreisnummer bereits vom SOAP-Client genutzt wurde...
Als hässlichen Workaround haben wir in der externen Anwendung, welche die per SOAP die Partner anlegt, eine eigene Logik und Aufbau der Partnernummer definiert. D.h. wir haben bei in CEE manuell angelegten Ansprech-Partnern eine fünfstellige Nummer, bei per SOAP eine sechsstellig. So dass sich die beiden Bereich auf absehbare Zeit nicht überschneiden können.
Vor dem Import eines neuen Ansprechpartners bestimmen wir mit MAX(partner:number) die höchste vorhandene Partnernummer und wählen dann MAX+1 als nächste freie Partnernummer.
Hat jemand hier Erfahrung mit dem automatisierten Anlegen von Stammdaten aus anderen System?
Wie geht ihr mit dem Thema Nummernkreis um?
Hallo Mathias,
ich hoffe, ich verstehe Deine Frage richtig.
Ich habe mal irgendwo gelesen (und nutze es beim Import), dass man statt folgendem Eintrag in der XML:
<number>4711</number>
einfach folgende Zeichenkette eingibst:
<sscc></sscc>
Dann wird eine neue Nummer gemäß Nummernkreis erzeugt.
Ich habe das beim Partner gerade noch einmal ausprobiert und es funktioniert.
Ich hoffe, die Antwort hilft Dir weiter.
Viele Grüße
Tobias
Go to full postich hoffe, ich verstehe Deine Frage richtig.
Ich habe mal irgendwo gelesen (und nutze es beim Import), dass man statt folgendem Eintrag in der XML:
<number>4711</number>
einfach folgende Zeichenkette eingibst:
<sscc></sscc>
Dann wird eine neue Nummer gemäß Nummernkreis erzeugt.
Ich habe das beim Partner gerade noch einmal ausprobiert und es funktioniert.
Ich hoffe, die Antwort hilft Dir weiter.
Viele Grüße
Tobias
-
SWK_TF
- Beiträge:28
- Registriert:Di Sep 17, 2019 8:16 am
- Hat sich bedankt: 1 Mal
- Danksagung erhalten: 4 Mal
Re: Partner über SOAP anlegen - Wie mit dem Nummernkreis umgehen
Hallo Mathias,
ich hoffe, ich verstehe Deine Frage richtig.
Ich habe mal irgendwo gelesen (und nutze es beim Import), dass man statt folgendem Eintrag in der XML:
<number>4711</number>
einfach folgende Zeichenkette eingibst:
<sscc></sscc>
Dann wird eine neue Nummer gemäß Nummernkreis erzeugt.
Ich habe das beim Partner gerade noch einmal ausprobiert und es funktioniert.
Ich hoffe, die Antwort hilft Dir weiter.
Viele Grüße
Tobias
ich hoffe, ich verstehe Deine Frage richtig.
Ich habe mal irgendwo gelesen (und nutze es beim Import), dass man statt folgendem Eintrag in der XML:
<number>4711</number>
einfach folgende Zeichenkette eingibst:
<sscc></sscc>
Dann wird eine neue Nummer gemäß Nummernkreis erzeugt.
Ich habe das beim Partner gerade noch einmal ausprobiert und es funktioniert.
Ich hoffe, die Antwort hilft Dir weiter.
Viele Grüße
Tobias
-
matthias.steines
- Beiträge:82
- Registriert:Fr Feb 01, 2019 10:09 am
- Hat sich bedankt: 12 Mal
- Danksagung erhalten: 4 Mal
Re: Partner über SOAP anlegen - Wie mit dem Nummernkreis umgehen
Danke für die Info, das hilft mir.
Werde das mal ausprobieren und schauen, wie wir das per SOAP machen können.
Matthias
Werde das mal ausprobieren und schauen, wie wir das per SOAP machen können.
Matthias
-
black_devil
- Beiträge:163
- Registriert:Mi Jun 12, 2019 4:40 pm
- Hat sich bedankt: 9 Mal
- Danksagung erhalten: 2 Mal
Re: Partner über SOAP anlegen - Wie mit dem Nummernkreis umgehen
Hi Tobias,
das sind ja ganz neue Informationen.
Habe das gleich jetzt mit einem Artikel probiert und funktioniert - zu mir hat es immer geheißen das gibt es nicht...
Danke für den Input.
Problematisch ist nur noch wenn du den Import von 2 verschiedenen BO's machen willst (z.B. Artikel und danach Lieferantendaten), dann funktioniert das nicht.
das sind ja ganz neue Informationen.
Habe das gleich jetzt mit einem Artikel probiert und funktioniert - zu mir hat es immer geheißen das gibt es nicht...
Danke für den Input.
Problematisch ist nur noch wenn du den Import von 2 verschiedenen BO's machen willst (z.B. Artikel und danach Lieferantendaten), dann funktioniert das nicht.
Viele Grüße,
black_devil
black_devil
-
christian.m
- Beiträge:53
- Registriert:Mi Jun 05, 2019 9:40 am
- Hat sich bedankt: 15 Mal
- Danksagung erhalten: 3 Mal
Re: Partner über SOAP anlegen - Wie mit dem Nummernkreis umgehen
Hallo zusammen,
dieses Problem haben wir auch an einigen Stellen. Folgeimporte auf die durch Comarch vergebene Nummer (z.B. der Import von Partnerbeziehungen), sind so nur umständlich realisierbar.
Wenn man eine Objekt per Soap neu anlegt und die Nummer wie von Tobias beschrieben durch Comarch vergeben lässt, wäre es meines Erachtens nach Ideal, wenn der Webservice eine Rückmeldung mit der vergebenen Nummer zurückgeben könnte, die dann im Quellsystem direkt weiterverarbeitet und für weitere Importe verwendet werden kann. Könnte euch so etwas auch weiterhelfen?
Gruß
Christian
dieses Problem haben wir auch an einigen Stellen. Folgeimporte auf die durch Comarch vergebene Nummer (z.B. der Import von Partnerbeziehungen), sind so nur umständlich realisierbar.
Wenn man eine Objekt per Soap neu anlegt und die Nummer wie von Tobias beschrieben durch Comarch vergeben lässt, wäre es meines Erachtens nach Ideal, wenn der Webservice eine Rückmeldung mit der vergebenen Nummer zurückgeben könnte, die dann im Quellsystem direkt weiterverarbeitet und für weitere Importe verwendet werden kann. Könnte euch so etwas auch weiterhelfen?
Gruß
Christian
- Bambam
- Beiträge:299
- Registriert:Do Mär 21, 2019 8:34 am
- Hat sich bedankt: 1 Mal
- Danksagung erhalten: 38 Mal
Re: Partner über SOAP anlegen - Wie mit dem Nummernkreis umgehen
Hallo Christian,
dieses Problem verfolgt mich schon seit Zalando. Bei jedem Import über Webservice sollte der Business-Key des importieren Objekts zurück geliefert werden. Das würde in vielen Projekten helfen.
dieses Problem verfolgt mich schon seit Zalando. Bei jedem Import über Webservice sollte der Business-Key des importieren Objekts zurück geliefert werden. Das würde in vielen Projekten helfen.
Viele Grüße
Bambam
Bambam
-
SWK_TF
- Beiträge:28
- Registriert:Di Sep 17, 2019 8:16 am
- Hat sich bedankt: 1 Mal
- Danksagung erhalten: 4 Mal
Re: Partner über SOAP anlegen - Wie mit dem Nummernkreis umgehen
Hallo Zusammen,
also ich musste auch mal einige Kunden anlegen und brauchte dafür Kundennummern.
Wenn man das erzeugen direkt aus einer Aktivitätsdefinition macht, kann man mit der Funktion nextNumberRangeNumber die nächste Nummer eines Nummernkreises holen.
Ich hatte mir 2015 eine Funktion geschrieben, die mir X Partner-Nummern aus dem Nummernkreis in eine Datei speichert. Dann konnte ich diese Nummern auch extern verwenden.
Ich hoffe, das hilft Euch weiter.
Viele Grüße
Tobias
also ich musste auch mal einige Kunden anlegen und brauchte dafür Kundennummern.
Wenn man das erzeugen direkt aus einer Aktivitätsdefinition macht, kann man mit der Funktion nextNumberRangeNumber die nächste Nummer eines Nummernkreises holen.
Ich hatte mir 2015 eine Funktion geschrieben, die mir X Partner-Nummern aus dem Nummernkreis in eine Datei speichert. Dann konnte ich diese Nummern auch extern verwenden.
Ich hoffe, das hilft Euch weiter.
Viele Grüße
Tobias
-
black_devil
- Beiträge:163
- Registriert:Mi Jun 12, 2019 4:40 pm
- Hat sich bedankt: 9 Mal
- Danksagung erhalten: 2 Mal
Re: Partner über SOAP anlegen - Wie mit dem Nummernkreis umgehen
Hallo Tobias,
kannst du diese Funktion vielleicht hier posten? Wäre vermutlich für einige hilfreich.
Danke
kannst du diese Funktion vielleicht hier posten? Wäre vermutlich für einige hilfreich.
Danke
Viele Grüße,
black_devil
black_devil
-
SWK_TF
- Beiträge:28
- Registriert:Di Sep 17, 2019 8:16 am
- Hat sich bedankt: 1 Mal
- Danksagung erhalten: 4 Mal
Re: Partner über SOAP anlegen - Wie mit dem Nummernkreis umgehen
Hallo black_devil,
ich versuche es mal. Habe es so angepasst, dass es eigentlich auf jedem System laufen sollte
Aber Vorsicht. Ich bin ja kein waschechter Programmierer
var USER_NAME as String;
var NRCOUNT as Number;
var SYSTEM:=databaseName(event.database);
var NRMAX := 100;
var FILENAME as String;
var INHALT as String;
USER_NAME:=userName(parameters["userGuid"]);
FILENAME:="kstore://"+SYSTEM+"/Export/"+USER_NAME+"/Kundennummern";
NRCOUNT:=0;
while (NRCOUNT<NRMAX)
{
NRCOUNT:=NRCOUNT+1;
INHALT:=INHALT+nextNumberRangeNumber("808")+"\n";
}
writeFile(FILENAME+".csv",INHALT,"ISO-8859-1");
Der Nummernkreis muss natürlich angepasst werden. "808" ist bei uns für Partner allgemein.
Viele Grüße
Tobias
ich versuche es mal. Habe es so angepasst, dass es eigentlich auf jedem System laufen sollte
Aber Vorsicht. Ich bin ja kein waschechter Programmierer
var USER_NAME as String;
var NRCOUNT as Number;
var SYSTEM:=databaseName(event.database);
var NRMAX := 100;
var FILENAME as String;
var INHALT as String;
USER_NAME:=userName(parameters["userGuid"]);
FILENAME:="kstore://"+SYSTEM+"/Export/"+USER_NAME+"/Kundennummern";
NRCOUNT:=0;
while (NRCOUNT<NRMAX)
{
NRCOUNT:=NRCOUNT+1;
INHALT:=INHALT+nextNumberRangeNumber("808")+"\n";
}
writeFile(FILENAME+".csv",INHALT,"ISO-8859-1");
Der Nummernkreis muss natürlich angepasst werden. "808" ist bei uns für Partner allgemein.
Viele Grüße
Tobias