FAQ/Export/Technik
Aus ITscope GmbH - Wissensbasis
1 Wie beschneide ich die Länge der exportierten Felder?
Bei Zahlen: Verwenden Sie die Javascript-Funktion toFixed:
Beispiel: Beschränken auf 2 Nachkommastellen:
var price = Xpath.eval("its:priceCalc($pcId, $suppliers)/calcPrice"); price.toFixed(2);
Bei Zeichenketten: String-Operationen aller Art finden Sie hier: [1].
2 Wie kann ich einen Preisvergleich der Bezugsquellen auf Basis der ITscope-ID durchführen?
Häufig stehen Shopbetreiber vor dem Problem, daß sie zwar die Produkte mit den ITscope-IDs in den Shop importieren, aber bei verkaufter Ware kommt die Frage auf, wie man nun zu diesem Produkt die Bezugsquellen erfährt.
Dazu gibt es dann 2 Möglichkeiten:
1) im MarketViewer nach der ID suchen: dies geht mittels Eingabe von "puid:1249081000" in das Suchfeld, wobei 1249081000 die Artikel-ID ist.
2) Über den HTML-Webservice den Lieferantenvergleich direkt in das Shop-Backend einbauen (alternativ die XML-Variante verwenden und für die Anzeige selbst sorgen).
Beispiellinks dazu erhalten Sie, wenn Sie im MarketViewer per Rechsklick auf ein Produkt gehen und "Kopiere als Webservice-Link" auswählen. Den so in die Zwischenablage kopierten Link können Sie mit Strg + V in den Browser einfügen und erhalten so eine HTML-Ansicht aller Lieferanten.
3 Was tun bei Lieferanten, die nicht gelistet sind?
Wir benötigen in diesem Fall eine Preisliste von Ihrem Lieferanten.
Anforderungen dafür:
1) Sie muß maschinenverarbeitbar sein (also kein formatiertes PDF oder Word, sondern CSV, TXT, Excel, XML)
2) Sie muß automatisch aktualisierbar sein (FTP, HTTP) oder zumindest regelmäßig per Email aktualisiert werden.
Sind diese Anforderungen erfüllt, können wir diesen Lieferanten innerhalb weniger Tage Ihrem Export hinzufügen.
4 Wie kann ich spezifische Felder aus meiner Preisliste mit in den ITscope-Export bekommen?
Wenn die vordefinierten Felder nicht ausreichen, um die von Ihnen benötigten Daten in den Export zu bekommen, wenden Sie sich bitte mit Ihrer spezifischen Anforderung an den Support. Wir erstellen dann den Export exakt nach Ihren Angaben, selbst wenn die Felder an sich im MarketViewer gar nicht gelistet sind.
5 Wie transformiere ich XML-Exporte on demand in mein benötigtes Zielformat?
Sie können direkt auf unserem Server das erzeugte XML per XSLT in Ihr Zielformat transformieren lassen. Dadurch enthält der ITscope XML-Export jede beliebige Gestalt. Im entsprechenden Profil müssen Sie unter "Formatdetails" den Link zu Ihrem XSLT Stylesheet angeben. Das Sheet darf keine Sonderzeichen enthalten und muß XHTML-konformen Code liefern (da dies sonst von unserem XSLT-Prozessor als nicht korrekt zurückgewiesen wird, also statt
<br>
muß
<br/>
geschrieben werden).
Die entsprechend verwendeten XML-Felder müssen unter "Datensatz modellieren" ausgewählt werden, d.h. Sie können in Ihrem Stylesheet natürlich nur Knoten per Xpath referenzieren, die im erzeugten XML vorhanden sind - und dies stellen Sie im Datensatzmodell ein. Beispiele hierzu liefern Ihnen die bereits vorhandenen HTML-Templates wie HTML Preisvergleich. Ein Beispiel-Stylesheet hierzu finden Sie unter XSLT Stylesheet.
6 Wie kann ich Spalten/Felder im Export selbst definieren?
Das Ändern der Ausdrücke eines Felds ist nur im Rahmen von Developerprofilen und einigen wenigen anderen möglich. Wenden Sie sich an unseren Vertrieb, damit Sie dafür freigeschaltet werden.
Im tabellarischen Export (CSV/Excel): Im Datenprofil auf "Datensatz modellieren" gehen und "Neues Feld hinzufügen" aus der Tabelle wählen bzw. die Ausdrucksspalte eines bestehenden Felds bearbeiten (Achtung: Je nach Profil ist dieses Feature nicht freigeschaltet).
Im XML-Export: "Datensatz modellieren". Sie können bei XML nur existierende Felder (d.h. Knoten in der XML-Hierarchie) aktivieren oder deaktivieren, um schemakonform zu bleiben. Jedoch können Sie den Ausdruck einer Spalte ändern - Sie müssen dabei aber aufpassen, daß der Datentyp nicht geändert wird.
7 Wie kann ich mehrere Dateien exportieren wie bei der CSV Multifile-Vorlage?
Geht nur bei CSV/Excel: Im Datenprofil auf "Datensatz modellieren", dann links in der Dateiübersicht Rechsklick -> Neues Exportobjekt erstellen. Die Relationsdateien Produkt -> Kategorie/Medien/Bezugsquellen etc. werden automatisch erstellt.
Es wird wärmestens empfohlen, in jede der einzelnen Dateien die ITscope - UID (Feld uid) aufzunehmen, um die Referenzen herstellen zu können.
8 Welche Möglichkeiten zum Ändern der einzelnen Exportfelder habe ich?
Lesen Sie dazu auch den Eintrag "Wie formatiere ich Bezeichnungen und Beschreibungen und Felder aller Art?".
Beim Ändern der Ausdrucksspalte unter "Datensatz modellieren" gelangen Sie in den Expression-Editor. Hier können Sie mit Javascript-Code formulieren, welche Daten in einer Spalte enthalten sein sollen. Sie können beliebige vordefinierte Javascript-Funktionen verwenden, die Sie im unteren Teil des Editors aufgelistet finden.
Die häufig anzutreffenden Methode Xpath.eval() wertet einen Xpath-Ausdruck aus und dient dazu, Daten des jeweiligen Exportobjekts zu erhalten. Die internen Bezeichner der Felder wie productName oder productType/name sind nicht veröffentlicht. Sie sollten hierbei nur vordefinierte Felder verwenden und diese abwandeln, da es keinerlei Referenz über den vollständigen internen Aufbau der Exportobjekte gibt.
Die in den vordefinierten Feldern angegeben internen Feldbezeichner stellen sozusagen die "öffentliche Schnittstelle" auf die Datenobjekte dar.
Beispiel:
Xpath.eval("productName")
liefert den Produktnamen des Produktobjekts der aktuellen Zeile.
Komplexere Auswertungen werden über interne Funktionen bereitgestellt, die Sie selbst nicht ändern können, z.B. Preiskalkulationen, Preisberechnungen etc. Sie verwenden meist die von Ihnen eingestellten Parameter, z.B. Lieferanten ($suppliers), Mindestverfügbarkeit ($minAvail) etc. Sie sollten diese Funktionen wie in den vordefinierten Feldern vorgesehen verwenden.
Beispiel:
Xpath.eval("its:priceCalc($pcId, $suppliers)/calcPrice")
Hier berechnet die Funktion its:PriceCalc den Preis mit vorgegeben Profil-Parametern, die als Variablen übergeben werden.
Warum werden diese Funktionen nicht per Javascript bereitgestellt? Ganz einfach: Sie enthalten komplexen Code und müssen Zugriff auf interne Datenstrukturen erhalten. So ist eine performante Abbildung als selbst konfigurierbares Javascript nicht möglich.
Wenn Sie selbst Hand anlegen und vordefinierte Felder verknüpfen oder komplett neue Datenspalten mit Ihren eigenen Daten erstellen möchten, müssen Sie beachten, daß es sich bei dem zu verfassenden Code um Inline-Code handelt, d.h. die letzte aufgerufene Zeile des Codestücks enthält den Ausdruck, der als Inhalt der Spalte ausgewertet werden soll.
Beispiele:
Xpath.eval("productType/name") <--- Rückgabewert
oder
var stock = Xpath.eval("its:priceCalc($pcId, $suppliers)/stock"); var status = Xpath.eval("its:priceCalc($pcId, $suppliers)/status"); if (status == 1) { if (stock == 0) { "10"; <--- Rückgabewert } else { stock; <--- Rückgabewert } } else { stock; <--- Rückgabewert }
Es gibt also hierbei keine "return"-Anweisung.
Achtung: Je mehr und je komplexere Ausdrücke Sie erstellen, desto länger dauert tendenziell der Exportvorgang.
9 Welche eindeutigen Produkt-IDs gibt es und welche sollte ich verwenden als eigene Artikelnummer?
Sie sollten unbedingt die ITscope-UID verwenden (Feld uid). Diese Nummer ist global eindeutig für jedes Produkt und ändert sich nie. Sie können darauf ein konsistentes Produktsortiment aufbauen. Nummern wie Hersteller-Artikelnummer und Distributor-Nummer sind nicht eindeutig. Auch die DCIPID sollte nicht verwendet werden, da sie nicht für jeden Artikel angelegt ist (über das Vorhandensein der DCIPID läßt sich neben dem Qual.grad im übrigen auch feststellen, ob ein Produkt DCI-qualifiziert ist).
10 Was tun, wenn ich spezielle Anforderungen habe oder die Felder nicht selbst abändern möchte?
Wir erstellen Ihnen gerne Ihr benötigtes Portfolio und Datenprofil: Wenden Sie sich dazu an den Support.
11 Wie formatiere ich Zahlen um?
Die Zahlen werden normalerweise mit einem Dezimalpunkt statt Komma exportiert (US-Notation). Eine Umformatierung geht derzeit nur über den Weg der toString und replace-Funktion.
Am Beispiel Preis 56,40 statt 56.40:
Xpath.eval("its:priceCalc($pcId, $suppliers)/calcPrice") .toString().replace(".", ",")