OBS/Stammdaten/Artikel: Automatischer Bilder Import: Unterschied zwischen den Versionen
(Importing text file) |
Nimz (Diskussion | Beiträge) |
||
(28 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
<font face="Arial"> | {{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.}} | |||
===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|''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 [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
- Artikel
- Beispiel: Anlegen eines Artikels
- Anleitung für den Etikettendruck
- Brutto und Nettopreise in OBS
- Artikel Preispflege
- Tasten und Schaltflächen
- Weitere Funktionen Schaltfläche
- Eingabemaske
- Registerkarte: Allgemeine Artikelstammda
- Registerkarte: Umsatzstatistiken + Anderes
- Multisteuer
- Registerkarte: Langtext
- Registerkarte: Shop (xtcModified Shop)
- F5 EAN
- F6 Personenbezogene Preise
- F7 Kalkulation
- F8 EAN-Verwaltung
- F9 VK - Preise 1-9
- F10 EK Lieferanten für Artikel/
- Artikel / Lieferanten Einstellung
- Periodenumsatz
- Tasten und Schaltflächen
- Eingabemaske
- A Shop-Stammdaten
- C Personen übertragen
- D Kataloge verwalten
- E Kategorien verwalten
- F Preislisten-Update
- G Bestellungen abholen
- H Verfügbarkeit übertragen
- I Merkliste übertragen
- V Varianten übertragen
- W Artikelvarianten übertragen
- X Protokoll
- Y leere Passworte füllen
- Z Update-Informationen zurücksetzen
- 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
- 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
- Tasten und Schaltflächen
- Eingabemaske
- Registerkarte: 1 Vertrag
- Registerkarte: 2 Druckabrechnung
- Registerkarte: 3 Text Pauschale
- Registerkarte: 4 Text Druckabrechnung
- Registerkarte: 5 Text Zählerstandabfrage
- Registerkarte: 6 Zusatzkosten
- Weitere
- Tasten und Schaltflächen
- F10 Weitere Funktionen
- Eingabemaske
- Mail-Regeln
- Liste
- Eingabemaske
- Marketing
- Aufgaben-Gruppen
- Wiederkehrende Aufgaben
- Geteilte Aufgaben
- Termine
- Termine
- neuen Termin erstellen/Termin bearbeiten
- neuen Langzeittermin erstellen/Langzeittermin bearbeiten
- Geburtstag
- Geteilte Termine
- Technikersteuerung
- Tasten und Schaltflächen
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
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.
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.
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.
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.
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.
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
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;