OBS/Stammdaten/Artikel: Automatischer Bilder Import: Unterschied zwischen den Versionen

Aus OBS Wiki
Zur Navigation springen Zur Suche springen
(Importing text file)
 
(28 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
<font face="Arial"><font size="20pt"></font></font>
{{Stammdaten}}
<font size="3" color="#000000" face="Arial">
Dieses Fenster dient dem Import von Bildern aus einem Verzeichnis. Dazu gibt es verschiedene Einstellungen ein Makro-Funktionen, mit denen aus den Dateinamen z. B. die Artikelnummer ermittelt werden kann. In der Regel kann dieser Import für die Bilder eigener Lieferanten problemlos genutzt werden, da sich die Bestellnummer meist innerhalb des Dateinamens finden lässt.
=Maske=
[[Image:MaskeBilderimportVz.png|thumb|Import-Maske]]<br/>
Die Maske kann in drei Bereiche unterteilt werden: Einstellungen (1), Bilddateien (2) und Makro (3). Die Einstellungen werden mit Standardwerten vorbelegt. Bilddateien werden erst angezeigt, nachdem über {{F7}} das Verzeichnis, dass importiert werden soll, ausgewählt wurde. Als Makro wird immer das zuletzt verwendete geladen. Wenn Sie verschiedene Lieferanten importieren ist es daher ratsam die verwendeten Makros in einer Datei abzuspeichern, um dies nicht jedesmal neu eingeben zu müssen. Sie können dann den Inhalt einfach ersetzen.<br />
==Einstellungen==
===Klasse===
Die Klasse wird für die Referenzierung innerhalb vom OBS benötigt. Zur Zeit gibt es nur die Verwendung als Artikelbilder und die Klasse sollte immer mit "AR" (Standard) gesetzt sein.
===Typ===
Es gibt für Bilder drei Standard-Typen. Dies sind 9000 (Freie Artikelbilder), 9001 (Shop Hauptbild) und 9002 (Shop Zusatzbild). Der Typ kann im Makro noch beeinflusst werden (mehr dazu unter [[#Befehle|''Befehle'']]). Wenn Sie eine [[OBS/Stammdaten/Schnittstellen/Internet-Shop|Shop-Schnittstelle]] des Typs VShop 4, modified eCommerce oder DoubleM verwenden, können die Typen 9001 und 9002 verwendet werden, um die Bilder für die entsprechende Schnittstelle zum Export freizugeben. Innerhalb vom OBS ist der Typ nur relevant, wenn Sie über diesen in der Positionserfassung die manuelle Bilderauswahl beeinflussen möchten.
{{Hinweis|Verfügen Sie nicht über eine der genannten Shop-Schnittstellen, so wird der Typ beim Import automatisch auf 9000 gesetzt.}}
===Lieferanten-Nr.===
Hier kann eine Lieferantennummer aus Ihrem Personenstamm eingetragen werden. Diese dient während des Imports dazu das Bild einem Artikel zuzuordnen. Sollte über die Artikelnummer kein Artikel gefunden werden, so wird die Artikelnummer als Bestellnummer interpretiert und die Artikelnummer über die in den Artikeln hinterlegten Lieferanten zusammen mit der Lieferantennummer ermittelt.
===Artikel muss im Artikelstamm vorhanden sein===
Aktivieren Sie diese Einstellung, um nur Bilder zu importieren, die auch einem Artikel Ihres Artikelstamms zugeordnet werden können.
===Bilder in Datenbank speichern===
Wenn Sie insgesamt nur wenig Bilder importieren, können diese auch direkt in der Datenbank gespeichert werden. Je nach Server und sonstiger Anwendungsbreiche kann hier die optimale Anzahl an Bildern stark variiren.
{{Achtung|Generell sollte mit dieser Einstellung vorsichtig umgegangen werden. Verzichten Sie lieber darauf Bilder in der Datenbank zu speichern, um diese nicht zu groß werden zu lassen. Bei zu großer Datenmenge könnten sonst Probleme mit der Speicherkapazität oder Geschwindigkeit auftreten.}}


<center>A Bilder importieren Verzeichnis<br /></center>
===Bilder in Positionseingabe verwenden===
Diese Einstellung sorgt dafür, dass Bilder beim Import auch für die Positionserfassung von Angeboten freigegeben werden. Es können mehrere Bilder pro Artikel freigegeben werden.


<font face="Arial"><font size="3"><br /><br /> Mit dieser Funktion können Bilder eines Lieferanten die im Verzeichnis ...obsdatabildarchiv*lieferant* gespeichert sind automatisch einem Artikel zugeordnet werden.<br /><br /></font></font><font face="Arial"><font size="3">[[Image:pict001.jpg]]</font></font><font face="Arial"><font size="3"><br /></font></font><font face="Arial"><font size="3"><br /> Klasse: Wird automatisch mit "AR" für Artikel vorbelegt.<br /><br /> Typ: Alle zu übernehmenden Artikel können einem "Bild-/Text-Typ" zugeornet werden. (z. B. "Zentral Spicers")<br /><br /> HINWEIS: Klasse und Typ sind Pflichtangaben.<br /><br /> Lieferanten-Nr.: Bei Eingabe der Lieferantennummer wirde im ARTIKELSTAMM geprüft, ob es für diesen Lieferanten einen Artikel gibt. Iste dies der Fall, wird das bild hinzugefügt. Ist dies nicht der Fall, wird das Bild nicht übernommen. Bleibt die Lieferantennummer unausgefüllt und die Bestell-Nr. ist nicht die Artikelnummer, dann wird kein Bild übernommen.<br /><br /></font></font><font face="Wingdings"><font size="13pt">¨</font></font><font face="Webdings"><font size="9pt"> </font></font><font face="Arial"><font size="3">Artikel muss im Artikelstamm vorhanden sein<br /></font></font>Wenn dieses Feld markiert ist, wird geprüft, ob es für das Bild auf Grund der REFERENZ-NR einen Artikel gibt. Hierbei wird bei angegeführter Liferantennummer die Bestellnummer oder die Artikelnummer gesucht.<br /><br /><font face="Wingdings"><font size="13pt">¨</font></font><font face="Webdings"><font size="9pt"> </font></font><font face="Arial"><font size="3">Bilder in Datenbank speichern<br /></font></font>Bei mehr als 100 Bildern pro Übernahme sollte man dieses Feld nicht markieren, da sonst die Datenbank zu schnell anwächst.<br /><br /><font face="Wingdings"><font size="13pt">¨</font></font><font face="Webdings"><font size="9pt"> </font></font><font face="Arial"><font size="3">Bilder in Positionseingabe verwenden<br /></font></font>Ist dieses Feld gesetzt wird das gefundene Bild dieser Übernahme für die Positionserfassung genutzt.<br /><br /> In dem nachfolgenden Textfeld werden die zu übernehmenden Bilder angezeigt. Wenn die Taste <font face="Arial">'''<font size="3">[F7]</font>'''</font><font face="Arial"><font size="3"> Verzeichnis betätigt und das Verzeichnis der Bilder augewählt wurde.<br /></font></font><br /> Danach wird ein MACRO für die Übernahme der Bilder dargestellt. Dieses MACRO kann bei Bedarf geändert werden. Z. B. kann die REFERENZ-NR die mit der Funktion ArtikelNummer() ermittelt wird von 6 auf 8 Stellen geändert werden, wenn die Bilddaten des Liferanten dies erfordert.<br /><br /> Um das MACRO wieder in den ursprünglichen Zustand zu versetzten, muss es gelöscht und gespeichert werden.<br /><br /><font face="Arial">'''<font size="3">[F2] Importieren:</font>'''</font><font face="Arial"><font size="3"> Diese Funktion startet den Bildimport nur wenn mit </font></font><font face="Arial">'''<font size="3">[F7]</font>'''</font><font face="Arial"><font size="3"> Bilder ausgewählt wurden.<br /><br /><br /></font></font><font face="Arial">'''<font size="3">Diese Funktionen müssen pro Lieferant abgeändert werden!<br /></font>'''</font><font face="Arial"><font size="3"><br /> Beispiel Spicers:<br /><br /> Diese Funktion ermittelt die ArtikelNummer des Bildes.<br /> Der Artikel muss im Stamm vorhanden sein wenn das Bild angelegt werden soll<br /><br /></font></font><font face="Courier New"><font size="2">function ArtikelNummer(cBildName : String) : String;<br /> begin<br /> cBildName := ExtractFileName(cBildName);<br /><nowiki> cBildName := StrTran(cBildName,'.JPG','');</nowiki><br /> Result := LeftStr(cBildName,6);<br /> end;<br /><br /> //----------------------------------------------------<br /><br /></font></font><font face="Arial">'''<font size="3">Diese Funktion ermittelt den ArtikelTyp des Bildes.<br /> Der Typ muss vorhanden sein.<br /><br /> 9001 ist Shop Hauptbild<br /> 9002 ist Shop Zusatzbild<br /></font>'''</font><font face="Courier New"><font size="2"><br /> function ArtikelTyp(cBildName : String) : String;<br /> var cBildTyp : String;<br /> begin<br /> cBildTyp := '9001'<br /> cBildName := UpperCase(ExtractFileName(cBildName));<br /><nowiki> cBildName := StrTran(cBildName,'.JPG','');</nowiki><br /><br /> if (RightStr(cBildName,1) = 'S') then begin<br /> cBildTyp := '9002';<br /> end;<br /><br /> Result := cBildTyp;<br /> end;<br /><br /> //----------------------------------------------------<br /><br /></font></font><font face="Arial">'''<font size="3">Diese Funktion ermittelt den Artikelnamen des Bildes.<br /></font>'''</font><font face="Courier New"><font size="2"><br /> function ArtikelName(cBildName : String) : String;<br /> begin<br /> cBildName := UpperCase(ExtractFileName(cBildName));<br /><nowiki> cBildName := StrTran(cBildName,'.JPG','');</nowiki><br /> Result := 'Art-Nr:'+ExtractFileName(cBildName);<br /> end; <br /></font></font><font face="Arial"><font size="3"><br /><br /><br /><br /><br /><br /></font></font>[[Category:hilfe]]
===Standard===
----
Diese Einstellung bezieht sich auf [[#Bilder in Positionseingabe verwenden|''Bilder in Positionseingabe verwenden'']] und gibt Ihnen die Möglichkeit ein Bild als Standard zu definieren. Bei mehreren Artikelbildern wird das Standard-Bild in der Positionserfassung automatisch gezogen.
[[Spezial:Beiträge/Auto import|Auto import]] 16:05, 5. Jul. 2011 (CEST)
===Bilder im Shop verwenden===
Um Bilder im Shop verwenden zu können, muss diese Einstellung aktiviert werden. Standardmäßig sollte dies der Fall sein.
===Vorhandene Shop-Bilder löschen===
Diese Einstellung gibt Ihnen die Möglichkeit über den Import die alten Bilder automatisch entfernen zu lassen.
===Import Shop-Hauptbilder bei Artikel===
Da es nur ein Hauptbild im Shop geben kann, können Sie hier über drei Möglichkeiten angeben, wie beim Importieren von neuen Shop-Hauptbildern verfahren werden soll, wenn bereits Eines existiert.
*überspringen: Das vorhandenes Bild wird beibehalten. Das neue Bild wird nicht importiert.
*ersetzen (vorhandenes Hauptbild wird Zusatzbild): Aus dem vorhandenen Bild wird ein Zusatzbild gemacht (Typ auf 9002 geändert).
*ersetzen (Hauptbild überschreiben): Der Eintrag für das vorhandene Bild wird aus der Datenbank gelöscht.
 
=Makro=
Die Makros orientieren sich an der Syntax der Sprache [https://de.wikipedia.org/wiki/Pascal_%28Programmiersprache%29 Pascal]. Alle vorgegebenen Funktionen haben den Parameter ''cBildname''. Diese Variable enthält immer den vollen Bildpfad (z. B. c:\\OBS\DATA\BILDARCHIV\700000\AB123456_1.jpg).
==Import-Funktionen==
===ArtikelNummer===
Diese Funktion dient dazu die Artikelnummer zu ermitteln. Bedenken Sie, dass das Ergebnis auch die Bestellnummer bei Ihrem Lieferanten sein kann.
===ArtikelEAN===
Mit dieser Funktion können Sie die EAN ermitteln lassen. In der Regel stellen Lieferanten Ihre Bilder jedoch mit Bestellnummer und nicht mit EAN zur Verfügung.
===ArtikelTyp===
Dies setzt den Referenz-Typ im Bild-Eintrag. Dies wird für die weitere Nutzung nicht zwangsweise benötigt, daher kann die Rückgabe gerne leer gelassen werden.
===ArtikelName===
Die Rückgabe dieser Funktion beeinfluss die Bezeichnung des Bildes. Wenn die Rückgabe leer ist, so wird die Bezeichnung automatisch mit "Art-Nr.: " und der ermittelten Artikelnummer gefüllt.
===BilderTyp===
Hier kann der Typ des Bildes nachträglich beeinflusst werden. So können Sie z. B. auch bei Angabe 9001 in den Einstellungen Bilder trotzdem als 9002 importieren lassen.
==Befehle==
Hier finden Sie einige nützliche Befehle/Funktionen, die Sie verwenden können, um das Makro so zu verändern, dass Sie das gewünschte Ergebnis erzielen können. Dadurch dass Sie von der Datei selbst jedoch nur Zugriff auf den Dateinamen haben, sind die Möglichkeiten allerdings begrenzt.
{{Hinweis|Im Normalfall werden Sie nur Variablen des Typs [[https://de.wikipedia.org/wiki/Zeichenkette#Pascal|'''string''']] benötigen.}}
===ExtractFileName===
Verwendung: Dateinamen aus Dateipfad auslesen.
Parameter: string
Rückgabe: string
Beispiel:<br />
cDatei := 'c:\\Ordner\Datei.txt';
cDatei := ExtractFileName(cDatei);
Erklärung: Der String-Variable ''cDatei'' wird der Wert ''c:\\Ordner\Datei.txt'' zugewiesen. Mit ''ExtractFileName'' wird der Dateiname herausgesucht und zurückgegeben. Danach enthält ''cDatei'' nur noch den Wert ''Datei.txt''.
===StrTran===
Verwendung: Sucht einen Text innerhalb eines Textes und ersetzte diesen durch einen andren Text (Suchen und ersetzen).
Parameter: string, string, string
Rückgabe: string
Beispiel:<br />
cDatei := 'Datei.txt';
cName  := StrTran(cDatei ,'.txt',<nowiki>''</nowiki>);
Erklärung: Der String-Variable ''cDatei'' wird der Wert ''Datei.txt'' zugewiesen. Mit ''StrTran'' wird im Text der Variable ''cDatei'' nach ''.txt'' gesucht. Der gefundene Teil wird mit einer leeren Zeichenkette ersetzt. Danach enthält ''cDatei'' nur noch den Wert ''Datei''.
 
===Length===
Verwendung: Ermittelt die Länge einer Zeichenkette.
Parameter: string
Rückgabe: integer
Beispiel:<br />
cDatei  := 'Datei';
nLaenge := Length(cDatei);
Erklärung: Der String-Variable ''cDatei'' wird der Wert ''Datei'' zugewiesen. Mit ''Length'' wird die Länge ermittelt. Das Wort "Datei" hat 5 Buchstaben. ''nLaenge'' hat also den Wert ''5''.
===LeftStr/RightStr===
Verwendung: Gibt den linken/rechten Teil einer Zeichenketten zurück. Es werden dabei maximal soviele Zeichen zurückgegeben, wie im zweiten Parameter angegeben.
Parameter: string, integer
Rückgabe: string
Beispiel:<br />
cDatei := 'Datei';
cLeft  := LeftStr(cDatei,2);
cRight := RightStr(cDatei,2);
Erklärung: Der String-Variable ''cDatei'' wird der Wert ''Datei'' zugewiesen. Mit ''LeftStr'' und ''RightStr'' werden jeweils die ersten zwei Zeichen von Links und Rechts zurückgegeben. ''cLeft'' enthält danach den Wert ''Da'' und ''cRight'' den Wert ''ei''.
{{Hinweis|Sollten mehr Zeichen ermittelt werden, als der ursprüngliche Wert Zeichen hat, so ist das Ergbenis gleich dem Ursprung. LeftStr(cDatei,8) hätte z. B. dazu geführt, dass cLeft ebenfalls ''Datei'' enthält.}}
 
===UpperCase/LowerCase===
Verwendung: Umwandeln einer Zeichenkette in Großbuchstaben/Kleinbuchstaben.
Parameter: string
Rückgabe: string
Beispiel:<br />
cDatei := 'Datei';
cUpper := UpperCase(cDatei);
cLower := LowerCase(cDatei);
Erklärung: Der String-Variable ''cDatei'' wird der Wert ''Datei'' zugewiesen. Mit ''UpperCase'' und ''LowerCase'' wird die Zeichenkette umgewandelt. ''cUpper'' enthält danach den Wert ''DATEI'' und ''cLower'' den Wert ''datei''.
===Token===
Verwendung: Teilt eine Zeichenkette anhand eines Zeichens auf und gibt den engebenen Teil zurück.
Parameter: string, string, integer
Rückgabe: string
Beispiel:<br />
cDatei := 'Datei_Name_Mit_Unterstrichen.txt';
cTeil  := Token(cDatei,'_',2);
Erklärung: Der String-Variable ''cDatei'' wird der Wert ''Datei_Name_Mit_Unterstrichen.txt'' zugewiesen. Mit ''Token'' wird die Zeichenkette aufgeteilt. Als Teiler ist ein Unterstrich angeben. Dies führt im angegebenen Beispiel zu vier Teilen: ''Datei'', ''Name'', ''Mit'' und ''Unterstrichen.txt''. Es wird der zweite Teil gefordert. Die Variable ''cTeil'' enthält demnach den Wert ''Name''.
 
==Beispiele==
Nachfolgend finden Sie Beispiele zu einigen bekannten Lieferanten.
{{Hinweis|Funktionalität der Makros ohne Gewähr. Es kann passieren, dass ein Lieferant Anpassungen seiner Daten vornimmt. Daher können wir die Funktionalität der angegebenen Makros nicht garantieren. Prüfen Sie nach dem Import die Daten stichprobenartig.}}
===Büroring===
<syntaxhighlight lang="Delphi">
    function ArtikelNummer(cBildName : String) : String;
    var cNr : String;
    begin
        cBildName := LowerCase(ExtractFileName(cBildName));
        cNr      := Token(cBildName,'_',1);
        Result    := cNr;
    end;
   
    //------------------------------------------------------------------------------
   
    function ArtikelEAN(cBildName : String) : String;
    begin
        Result := '';
    end;
   
    //------------------------------------------------------------------------------
   
    function ArtikelTyp(cBildName : String) : String;
    begin
        Result := '';
    end;
   
    //------------------------------------------------------------------------------
   
    function ArtikelName(cBildName : String) : String;
    begin
        cBildName := LowerCase(ExtractFileName(cBildName));
        cBildName := StrTran(cBildName,'.jpg','');
        Result    := 'Bildname:'+cBildName;
    end;
   
    //------------------------------------------------------------------------------
   
    function BilderTyp(cBildName : String) : String;
    var cBildTyp  : String;
        cTmp      : String;
    begin
        cBildTyp  := '';
        cBildName := LowerCase(ExtractFileName(cBildName));
        cTmp      := LeftStr(Token(cBildName,'_',2),2);
        if (cTmp = 'a1') then begin
            cBildTyp  := '9001';
        end else begin
            if (LeftStr(cTmp,1) = 'a') then begin
                cBildTyp  := '9002';
            end else if (LeftStr(cTmp,1) = 'p') then begin
                cBildTyp  := '9002';
            end else if (LeftStr(cTmp,1) = 's') then begin
                cBildTyp  := '9002';
            end;
        end;
        Result := cBildTyp;
    end;
</syntaxhighlight>
===Alka===
<syntaxhighlight lang="Delphi">
    function ArtikelNummer(cBildName : String) : String;
    begin
        cBildName := LowerCase(ExtractFileName(cBildName));
        cBildName := StrTran(cBildName,'.jpg','');
        cBildName := Token(cBildName,'-',1);
        Result    := StrTran(cBildName,'_',' ');
    end;
   
    //------------------------------------------------------------------------------
   
    function ArtikelEAN(cBildName : String) : String;
    begin
        Result := '';
    end;
   
    //------------------------------------------------------------------------------
   
    function ArtikelTyp(cBildName : String) : String;
    begin
        Result := '';
    end;
   
    //------------------------------------------------------------------------------
   
    function ArtikelName(cBildName : String) : String;
    begin
        cBildName := LowerCase(ExtractFileName(cBildName));
        cBildName := StrTran(cBildName,'.jpg','');
        Result    := 'Art-Nr:'+cBildName;
    end;
   
    //------------------------------------------------------------------------------
   
    function BilderTyp(cBildName : String) : String;
    var cBildTyp  : String;
    begin
        cBildName := LowerCase(ExtractFileName(cBildName));
        cBildName := StrTran(cBildName,'.jpg','');
        cBildName := Token(cBildName,'-',2);
        cBildTyp  := '9001';
        if (not Empty(cBildName)) then begin
            cBildTyp := '9002';
        end;
        Result := cBildTyp;
    end;
</syntaxhighlight>
===Adveo===
<syntaxhighlight lang="Delphi">
    function ArtikelNummer(cBildName : String) : String;
    var cArtNr : String;
    begin
        cArtNr := ExtractFileName(cBildName);
        cArtNr := LeftStr(cArtNr,6);
        Result := cArtNr;
    end;
   
    //------------------------------------------------------------------------------
   
    function ArtikelEAN(cBildName : String) : String;
    begin
        Result := '';
    end;
   
    //------------------------------------------------------------------------------
   
    function ArtikelTyp(cBildName : String) : String;
    begin
        Result := '';
    end;
   
    //------------------------------------------------------------------------------
   
    function ArtikelName(cBildName : String) : String;
    var cArtNr : String;
    begin
        cArtNr := UpperCase(ExtractFileName(cBildName));
        cArtNr := LeftStr(cArtNr,6);
        Result := 'Art-Nr:'+cArtNr;
    end;
   
    //------------------------------------------------------------------------------
   
    function BilderTyp(cBildName : String) : String;
    begin
        Result := '';
    end;
</syntaxhighlight>
===Intos===
<syntaxhighlight lang="Delphi">
    function ArtikelNummer(cBildName : String) : String;
    var cNr : String;
    begin
        cBildName := LowerCase(ExtractFileName(cBildName));
        cBildName := StrTran(cBildName,'.jpg','');
        cNr      := LeftStr(cBildName,6);
        Result    := cNr;
    end;
   
    //------------------------------------------------------------------------------
   
    function ArtikelEAN(cBildName : String) : String;
    begin
        Result := '';
    end;
   
    //------------------------------------------------------------------------------
   
    function ArtikelTyp(cBildName : String) : String;
    begin
        Result := '';
    end;
   
    //------------------------------------------------------------------------------
   
    function ArtikelName(cBildName : String) : String;
    begin
        cBildName := LowerCase(ExtractFileName(cBildName));
        cBildName := StrTran(cBildName,'.jpg','');
        Result    := 'Bildname:'+cBildName;
    end;
   
    //------------------------------------------------------------------------------
   
    function BilderTyp(cBildName : String) : String;
    var cBildTyp  : String;
        cTmp      : String;
    begin
        cBildName := LowerCase(ExtractFileName(cBildName));
        cBildName := StrTran(cBildName,'.jpg','');
        cBildTyp  := '9001';
        if (Length(cBildName)>6) then begin
            cBildTyp  := '9002';
        end;
        Result := cBildTyp;
    end;
</syntaxhighlight>
===Rössler===
{{Hinweis|Die uns bekannten Bildnamen sind nicht eindeutig strukturiert. Es kann daher sein, dass nicht alle Bilder über diesen Import zugeordnet werden können.}}
<syntaxhighlight lang="Delphi">
    function ArtikelNummer(cBildName : String) : String;
    var cNr  : String;
        nCnt : integer;
        i    : integer;
    begin
        cBildName := LowerCase(ExtractFileName(cBildName));
        cBildName := StrTran(cBildName,'.jpg','');
        cBildName := StrTran(cBildName,'.png','');
        nCnt      := NumToken('_',cBildName);
        cNr      := '';
        if (nCnt = 1) then begin
            cNr := cBildName;
        end else begin
            for i := 1 to nCnt-1 do begin
                if (not Empty(cNr)) then begin
                    cNr := cNr + '-';
                end;
                cNr := cNr + Token(cBildName,'_',i);
            end;
        end;
        Result    := cNr;
    end;
   
    //------------------------------------------------------------------------------
   
    function ArtikelEAN(cBildName : String) : String;
    begin
        Result := '';
    end;
   
    //------------------------------------------------------------------------------
   
    function ArtikelTyp(cBildName : String) : String;
    begin
        Result := '';
    end;
   
    //------------------------------------------------------------------------------
   
    function ArtikelName(cBildName : String) : String;
    begin
        cBildName := LowerCase(ExtractFileName(cBildName));
        cBildName := StrTran(cBildName,'.jpg','');
        cBildName := StrTran(cBildName,'.png','');
        Result    := 'Bildname:'+cBildName;
    end;
   
    //------------------------------------------------------------------------------
   
    function BilderTyp(cBildName : String) : String;
    var cBildTyp  : String;
        nTmp      : Integer;
        nCnt      : Integer;
    begin
        cBildTyp  := '9001';
        cBildName := LowerCase(ExtractFileName(cBildName));
        cBildName := StrTran(cBildName,'.jpg','');
        cBildName := StrTran(cBildName,'.png','');
        nCnt      := NumToken('_',cBildName);
        if (nCnt > 1) then begin
            nTmp := iVal(Token(cBildName,'_',nCnt));
            if (nTmp > 1) then begin
                cBildTyp  := '9002';
            end;
        end;
        Result := cBildTyp;
    end;
</syntaxhighlight>
 
</font>

Aktuelle Version vom 8. Juli 2019, 15:52 Uhr

Stammdaten

Erlöskonten
Eingabemaske
Textbausteine
Tasten und Schaltflächen
Eingabemaske
Schnittstellen
Internet-Shop
Menü: VShop 3.2
  • A Shop-Stammdaten
  • B Datenbankzugang
  • C Personen übertragen
  • D Preise aktualisieren
  • E eigene Artikel übertragen
  • F Preislisten verwalten
  • G Warengruppen verwalten
  • H Bestellvorlagen übertragen
  • Y leere Passworte füllen
  • Z FTP-Protokoll
Menü: VShop 4.0
  • A Shop-Stammdaten
  • B Datenbankzugang
  • C Personen übertragen
  • D Preise aktualisieren
  • E eigene Artikel übertragen
  • F Preislisten verwalten
  • G Warengruppen verwalten
  • H Bestellvorlagen übertragen
  • I Kundengruppen
  • K Zugang für Bildübertragung
  • Y leere Passworte füllen
  • Z FTP-Protokoll
Faxverwaltung
SMS-Verwaltung

Dieses Fenster dient dem Import von Bildern aus einem Verzeichnis. Dazu gibt es verschiedene Einstellungen ein Makro-Funktionen, mit denen aus den Dateinamen z. B. die Artikelnummer ermittelt werden kann. In der Regel kann dieser Import für die Bilder eigener Lieferanten problemlos genutzt werden, da sich die Bestellnummer meist innerhalb des Dateinamens finden lässt.

Maske

Import-Maske


Die Maske kann in drei Bereiche unterteilt werden: Einstellungen (1), Bilddateien (2) und Makro (3). Die Einstellungen werden mit Standardwerten vorbelegt. Bilddateien werden erst angezeigt, nachdem über F7 das Verzeichnis, dass importiert werden soll, ausgewählt wurde. Als Makro wird immer das zuletzt verwendete geladen. Wenn Sie verschiedene Lieferanten importieren ist es daher ratsam die verwendeten Makros in einer Datei abzuspeichern, um dies nicht jedesmal neu eingeben zu müssen. Sie können dann den Inhalt einfach ersetzen.

Einstellungen

Klasse

Die Klasse wird für die Referenzierung innerhalb vom OBS benötigt. Zur Zeit gibt es nur die Verwendung als Artikelbilder und die Klasse sollte immer mit "AR" (Standard) gesetzt sein.

Typ

Es gibt für Bilder drei Standard-Typen. Dies sind 9000 (Freie Artikelbilder), 9001 (Shop Hauptbild) und 9002 (Shop Zusatzbild). Der Typ kann im Makro noch beeinflusst werden (mehr dazu unter Befehle). Wenn Sie eine Shop-Schnittstelle des Typs VShop 4, modified eCommerce oder DoubleM verwenden, können die Typen 9001 und 9002 verwendet werden, um die Bilder für die entsprechende Schnittstelle zum Export freizugeben. Innerhalb vom OBS ist der Typ nur relevant, wenn Sie über diesen in der Positionserfassung die manuelle Bilderauswahl beeinflussen möchten.

HINWEIS: Verfügen Sie nicht über eine der genannten Shop-Schnittstellen, so wird der Typ beim Import automatisch auf 9000 gesetzt.

Lieferanten-Nr.

Hier kann eine Lieferantennummer aus Ihrem Personenstamm eingetragen werden. Diese dient während des Imports dazu das Bild einem Artikel zuzuordnen. Sollte über die Artikelnummer kein Artikel gefunden werden, so wird die Artikelnummer als Bestellnummer interpretiert und die Artikelnummer über die in den Artikeln hinterlegten Lieferanten zusammen mit der Lieferantennummer ermittelt.

Artikel muss im Artikelstamm vorhanden sein

Aktivieren Sie diese Einstellung, um nur Bilder zu importieren, die auch einem Artikel Ihres Artikelstamms zugeordnet werden können.

Bilder in Datenbank speichern

Wenn Sie insgesamt nur wenig Bilder importieren, können diese auch direkt in der Datenbank gespeichert werden. Je nach Server und sonstiger Anwendungsbreiche kann hier die optimale Anzahl an Bildern stark variiren.

ACHTUNG: Generell sollte mit dieser Einstellung vorsichtig umgegangen werden. Verzichten Sie lieber darauf Bilder in der Datenbank zu speichern, um diese nicht zu groß werden zu lassen. Bei zu großer Datenmenge könnten sonst Probleme mit der Speicherkapazität oder Geschwindigkeit auftreten.

Bilder in Positionseingabe verwenden

Diese Einstellung sorgt dafür, dass Bilder beim Import auch für die Positionserfassung von Angeboten freigegeben werden. Es können mehrere Bilder pro Artikel freigegeben werden.

Standard

Diese Einstellung bezieht sich auf Bilder in Positionseingabe verwenden und gibt Ihnen die Möglichkeit ein Bild als Standard zu definieren. Bei mehreren Artikelbildern wird das Standard-Bild in der Positionserfassung automatisch gezogen.

Bilder im Shop verwenden

Um Bilder im Shop verwenden zu können, muss diese Einstellung aktiviert werden. Standardmäßig sollte dies der Fall sein.

Vorhandene Shop-Bilder löschen

Diese Einstellung gibt Ihnen die Möglichkeit über den Import die alten Bilder automatisch entfernen zu lassen.

Import Shop-Hauptbilder bei Artikel

Da es nur ein Hauptbild im Shop geben kann, können Sie hier über drei Möglichkeiten angeben, wie beim Importieren von neuen Shop-Hauptbildern verfahren werden soll, wenn bereits Eines existiert.

  • überspringen: Das vorhandenes Bild wird beibehalten. Das neue Bild wird nicht importiert.
  • ersetzen (vorhandenes Hauptbild wird Zusatzbild): Aus dem vorhandenen Bild wird ein Zusatzbild gemacht (Typ auf 9002 geändert).
  • ersetzen (Hauptbild überschreiben): Der Eintrag für das vorhandene Bild wird aus der Datenbank gelöscht.

Makro

Die Makros orientieren sich an der Syntax der Sprache Pascal. Alle vorgegebenen Funktionen haben den Parameter cBildname. Diese Variable enthält immer den vollen Bildpfad (z. B. c:\\OBS\DATA\BILDARCHIV\700000\AB123456_1.jpg).

Import-Funktionen

ArtikelNummer

Diese Funktion dient dazu die Artikelnummer zu ermitteln. Bedenken Sie, dass das Ergebnis auch die Bestellnummer bei Ihrem Lieferanten sein kann.

ArtikelEAN

Mit dieser Funktion können Sie die EAN ermitteln lassen. In der Regel stellen Lieferanten Ihre Bilder jedoch mit Bestellnummer und nicht mit EAN zur Verfügung.

ArtikelTyp

Dies setzt den Referenz-Typ im Bild-Eintrag. Dies wird für die weitere Nutzung nicht zwangsweise benötigt, daher kann die Rückgabe gerne leer gelassen werden.

ArtikelName

Die Rückgabe dieser Funktion beeinfluss die Bezeichnung des Bildes. Wenn die Rückgabe leer ist, so wird die Bezeichnung automatisch mit "Art-Nr.: " und der ermittelten Artikelnummer gefüllt.

BilderTyp

Hier kann der Typ des Bildes nachträglich beeinflusst werden. So können Sie z. B. auch bei Angabe 9001 in den Einstellungen Bilder trotzdem als 9002 importieren lassen.

Befehle

Hier finden Sie einige nützliche Befehle/Funktionen, die Sie verwenden können, um das Makro so zu verändern, dass Sie das gewünschte Ergebnis erzielen können. Dadurch dass Sie von der Datei selbst jedoch nur Zugriff auf den Dateinamen haben, sind die Möglichkeiten allerdings begrenzt.

HINWEIS: Im Normalfall werden Sie nur Variablen des Typs [string] benötigen.

ExtractFileName

Verwendung: Dateinamen aus Dateipfad auslesen. Parameter: string Rückgabe: string Beispiel:

cDatei := 'c:\\Ordner\Datei.txt';
cDatei := ExtractFileName(cDatei);

Erklärung: Der String-Variable cDatei wird der Wert c:\\Ordner\Datei.txt zugewiesen. Mit ExtractFileName wird der Dateiname herausgesucht und zurückgegeben. Danach enthält cDatei nur noch den Wert Datei.txt.

StrTran

Verwendung: Sucht einen Text innerhalb eines Textes und ersetzte diesen durch einen andren Text (Suchen und ersetzen). Parameter: string, string, string Rückgabe: string Beispiel:

cDatei := 'Datei.txt';
cName  := StrTran(cDatei ,'.txt','');

Erklärung: Der String-Variable cDatei wird der Wert Datei.txt zugewiesen. Mit StrTran wird im Text der Variable cDatei nach .txt gesucht. Der gefundene Teil wird mit einer leeren Zeichenkette ersetzt. Danach enthält cDatei nur noch den Wert Datei.

Length

Verwendung: Ermittelt die Länge einer Zeichenkette. Parameter: string Rückgabe: integer Beispiel:

cDatei  := 'Datei';
nLaenge := Length(cDatei);

Erklärung: Der String-Variable cDatei wird der Wert Datei zugewiesen. Mit Length wird die Länge ermittelt. Das Wort "Datei" hat 5 Buchstaben. nLaenge hat also den Wert 5.

LeftStr/RightStr

Verwendung: Gibt den linken/rechten Teil einer Zeichenketten zurück. Es werden dabei maximal soviele Zeichen zurückgegeben, wie im zweiten Parameter angegeben. Parameter: string, integer Rückgabe: string Beispiel:

cDatei := 'Datei';
cLeft  := LeftStr(cDatei,2);
cRight := RightStr(cDatei,2);

Erklärung: Der String-Variable cDatei wird der Wert Datei zugewiesen. Mit LeftStr und RightStr werden jeweils die ersten zwei Zeichen von Links und Rechts zurückgegeben. cLeft enthält danach den Wert Da und cRight den Wert ei.

HINWEIS: Sollten mehr Zeichen ermittelt werden, als der ursprüngliche Wert Zeichen hat, so ist das Ergbenis gleich dem Ursprung. LeftStr(cDatei,8) hätte z. B. dazu geführt, dass cLeft ebenfalls Datei enthält.

UpperCase/LowerCase

Verwendung: Umwandeln einer Zeichenkette in Großbuchstaben/Kleinbuchstaben. Parameter: string Rückgabe: string Beispiel:

cDatei := 'Datei';
cUpper := UpperCase(cDatei);
cLower := LowerCase(cDatei);

Erklärung: Der String-Variable cDatei wird der Wert Datei zugewiesen. Mit UpperCase und LowerCase wird die Zeichenkette umgewandelt. cUpper enthält danach den Wert DATEI und cLower den Wert datei.

Token

Verwendung: Teilt eine Zeichenkette anhand eines Zeichens auf und gibt den engebenen Teil zurück. Parameter: string, string, integer Rückgabe: string Beispiel:

cDatei := 'Datei_Name_Mit_Unterstrichen.txt';
cTeil  := Token(cDatei,'_',2);

Erklärung: Der String-Variable cDatei wird der Wert Datei_Name_Mit_Unterstrichen.txt zugewiesen. Mit Token wird die Zeichenkette aufgeteilt. Als Teiler ist ein Unterstrich angeben. Dies führt im angegebenen Beispiel zu vier Teilen: Datei, Name, Mit und Unterstrichen.txt. Es wird der zweite Teil gefordert. Die Variable cTeil enthält demnach den Wert Name.

Beispiele

Nachfolgend finden Sie Beispiele zu einigen bekannten Lieferanten.

HINWEIS: Funktionalität der Makros ohne Gewähr. Es kann passieren, dass ein Lieferant Anpassungen seiner Daten vornimmt. Daher können wir die Funktionalität der angegebenen Makros nicht garantieren. Prüfen Sie nach dem Import die Daten stichprobenartig.

Büroring

    function ArtikelNummer(cBildName : String) : String;
    var cNr : String;
    begin
        cBildName := LowerCase(ExtractFileName(cBildName));
        cNr       := Token(cBildName,'_',1);
        Result    := cNr;
    end;
    
    //------------------------------------------------------------------------------
    
    function ArtikelEAN(cBildName : String) : String;
    begin
        Result := '';
    end;
    
    //------------------------------------------------------------------------------
    
    function ArtikelTyp(cBildName : String) : String;
    begin
        Result := '';
    end;
    
    //------------------------------------------------------------------------------
    
    function ArtikelName(cBildName : String) : String;
    begin
        cBildName := LowerCase(ExtractFileName(cBildName));
        cBildName := StrTran(cBildName,'.jpg','');
        Result    := 'Bildname:'+cBildName;
    end; 
    
    //------------------------------------------------------------------------------
    
    function BilderTyp(cBildName : String) : String;
    var cBildTyp  : String;
        cTmp      : String;
    begin
        cBildTyp  := '';
        cBildName := LowerCase(ExtractFileName(cBildName));
        cTmp      := LeftStr(Token(cBildName,'_',2),2);
        if (cTmp = 'a1') then begin
            cBildTyp  := '9001';
        end else begin
            if (LeftStr(cTmp,1) = 'a') then begin
                cBildTyp  := '9002';
            end else if (LeftStr(cTmp,1) = 'p') then begin
                cBildTyp  := '9002';
            end else if (LeftStr(cTmp,1) = 's') then begin
                cBildTyp  := '9002';
            end;
        end;
        Result := cBildTyp;
    end;

Alka

    function ArtikelNummer(cBildName : String) : String;
    begin
        cBildName := LowerCase(ExtractFileName(cBildName));
        cBildName := StrTran(cBildName,'.jpg','');
        cBildName := Token(cBildName,'-',1);
        Result    := StrTran(cBildName,'_',' ');
    end;
    
    //------------------------------------------------------------------------------
    
    function ArtikelEAN(cBildName : String) : String;
    begin
        Result := '';
    end;
    
    //------------------------------------------------------------------------------
    
    function ArtikelTyp(cBildName : String) : String;
    begin
        Result := '';
    end;
    
    //------------------------------------------------------------------------------
    
    function ArtikelName(cBildName : String) : String;
    begin
        cBildName := LowerCase(ExtractFileName(cBildName));
        cBildName := StrTran(cBildName,'.jpg','');
        Result    := 'Art-Nr:'+cBildName;
    end;
     
    //------------------------------------------------------------------------------
    
    function BilderTyp(cBildName : String) : String;
    var cBildTyp  : String;
    begin
        cBildName := LowerCase(ExtractFileName(cBildName));
        cBildName := StrTran(cBildName,'.jpg','');
        cBildName := Token(cBildName,'-',2);
        cBildTyp  := '9001';
        if (not Empty(cBildName)) then begin
            cBildTyp := '9002';
        end;
        Result := cBildTyp;
    end;

Adveo

    function ArtikelNummer(cBildName : String) : String;
    var cArtNr : String;
    begin
        cArtNr := ExtractFileName(cBildName);
        cArtNr := LeftStr(cArtNr,6);
        Result := cArtNr;
    end;
    
    //------------------------------------------------------------------------------
    
    function ArtikelEAN(cBildName : String) : String;
    begin
        Result := '';
    end;
    
    //------------------------------------------------------------------------------
    
    function ArtikelTyp(cBildName : String) : String;
    begin
        Result := '';
    end;
    
    //------------------------------------------------------------------------------
    
    function ArtikelName(cBildName : String) : String;
    var cArtNr : String;
    begin
        cArtNr := UpperCase(ExtractFileName(cBildName));
        cArtNr := LeftStr(cArtNr,6);
        Result := 'Art-Nr:'+cArtNr;
    end; 
    
    //------------------------------------------------------------------------------
    
    function BilderTyp(cBildName : String) : String;
    begin
        Result := '';
    end;

Intos

    function ArtikelNummer(cBildName : String) : String;
    var cNr : String;
    begin
        cBildName := LowerCase(ExtractFileName(cBildName));
        cBildName := StrTran(cBildName,'.jpg','');
        cNr       := LeftStr(cBildName,6);
        Result    := cNr;
    end;
    
    //------------------------------------------------------------------------------
    
    function ArtikelEAN(cBildName : String) : String;
    begin
        Result := '';
    end;
    
    //------------------------------------------------------------------------------
    
    function ArtikelTyp(cBildName : String) : String;
    begin
        Result := '';
    end;
    
    //------------------------------------------------------------------------------
    
    function ArtikelName(cBildName : String) : String;
    begin
        cBildName := LowerCase(ExtractFileName(cBildName));
        cBildName := StrTran(cBildName,'.jpg','');
        Result    := 'Bildname:'+cBildName;
    end; 
    
    //------------------------------------------------------------------------------
    
    function BilderTyp(cBildName : String) : String;
    var cBildTyp  : String;
        cTmp      : String;
    begin
        cBildName := LowerCase(ExtractFileName(cBildName));
        cBildName := StrTran(cBildName,'.jpg','');
        cBildTyp  := '9001';
        if (Length(cBildName)>6) then begin
            cBildTyp  := '9002';
        end;
        Result := cBildTyp;
    end;

Rössler

HINWEIS: Die uns bekannten Bildnamen sind nicht eindeutig strukturiert. Es kann daher sein, dass nicht alle Bilder über diesen Import zugeordnet werden können.
    function ArtikelNummer(cBildName : String) : String;
    var cNr  : String;
        nCnt : integer;
        i    : integer;
    begin
        cBildName := LowerCase(ExtractFileName(cBildName));
        cBildName := StrTran(cBildName,'.jpg','');
        cBildName := StrTran(cBildName,'.png','');
        nCnt      := NumToken('_',cBildName);
        cNr       := '';
        if (nCnt = 1) then begin
            cNr := cBildName;
        end else begin
            for i := 1 to nCnt-1 do begin
                if (not Empty(cNr)) then begin
                    cNr := cNr + '-';
                end;
                cNr := cNr + Token(cBildName,'_',i);
            end;
        end;
        Result    := cNr;
    end;
    
    //------------------------------------------------------------------------------
    
    function ArtikelEAN(cBildName : String) : String;
    begin
        Result := '';
    end;
    
    //------------------------------------------------------------------------------
    
    function ArtikelTyp(cBildName : String) : String;
    begin
        Result := '';
    end;
    
    //------------------------------------------------------------------------------
    
    function ArtikelName(cBildName : String) : String;
    begin
        cBildName := LowerCase(ExtractFileName(cBildName));
        cBildName := StrTran(cBildName,'.jpg','');
        cBildName := StrTran(cBildName,'.png','');
        Result    := 'Bildname:'+cBildName;
    end; 
    
    //------------------------------------------------------------------------------
    
    function BilderTyp(cBildName : String) : String;
    var cBildTyp  : String;
        nTmp      : Integer;
        nCnt      : Integer;
    begin
        cBildTyp  := '9001';
        cBildName := LowerCase(ExtractFileName(cBildName));
        cBildName := StrTran(cBildName,'.jpg','');
        cBildName := StrTran(cBildName,'.png','');
        nCnt      := NumToken('_',cBildName);
        if (nCnt > 1) then begin
            nTmp := iVal(Token(cBildName,'_',nCnt));
            if (nTmp > 1) then begin
                cBildTyp  := '9002';
            end;
        end;
        Result := cBildTyp;
    end;