OBS/Stammdaten/Artikel: Import Externe-Artikeltexte

Aus OBS Wiki
Version vom 26. Oktober 2018, 12:02 Uhr von Nimz (Diskussion | Beiträge) (→‎TISO.LanguageGetRefNo)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

Maske

Import-Maske


Die Maske kann in drei Bereiche unterteilt werden: Einstellungen (1), Dateiinhalt (2) und Makro (3). Die Einstellungen werden mit Standardwerten vorbelegt. Der Dateiinhalt wird erst angezeigt, nachdem eine xls-Datei für den Import ausgewählt wurde. Als Makro wird immer das zuletzt verwendete geladen. Wenn Sie verschiedene Dateien 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

Land

Geben Sie hier ein Land für den Import vor. Mit der Makro-Funktion ArtikelLand lässt sich die Vorgabe später übersteuern. Bei leerem Ergebnis wird jedoch der Wert dieses Feldes verwendet.

Typ

Geben Sie hier einen Text-Typ für den Import vor. Mit der Makro-Funktion ArtikelTyp lässt sich die Vorgabe später übersteuern. Bei leerem Ergebnis wird jedoch der Wert dieses Feldes verwendet.

Start-Zeile

Hier können Sie bestimmen, ab welcher Zeile die Daten übernommen werden sollen.

HINWEIS: Die Zählung der Zeilen beginnt hier bei 0. Die erste Zeile ist also nicht 1 sondern 0. Sollen die Daten ab Zeile 10 übernommen werden, so ist eine 9 einzugeben.

Lieferanten-Nr

Falls Sie Daten eines Lieferanten übernehmen, können Sie diesen hier angeben. Kann mit der Artikelnummer (siehe Makro-Funktion ArtikelNummer) kein Artikel im OBS-Artikelstamm gefunden werden, so wird die Artikelnummer als Bestellnummer interpretiert und die OBS-Artikelnummer über Liefernt und Bestellnummer ermittelt.

Dateiname

Mit # ist in diesem Feld die Datei auszuwählen. Sie können Dateien in den Formaten xls und xlsx verwenden. Nach der Auswahl wird Ihnen der Inhalt in der Tabelle (2) angezeigt.

Vorgang

Wird in das Feld Nummer übernommen. Es sind alphanummerische Angaben möglich.

Vorhandene Texte überschreiben

Ist das Häkchen in diesem Feld gesetzt, so werden bereits gepflegte externe Texte (identisch mit Land, Typ und Artikelnummer) mit dem Inhalt der Datei aktualisiert. Andernfalls werden die bisherigen Texte beibehalten.

Leere Texte in Datei überspringen

Dieses Feld ist nur interessant, wenn Vorhandene Texte überschreiben aktiv ist. Je nachdem woher die Daten für den Import bezogen werden, kann es sein, dass im eigenen Datenbestand bereits Texte vorhanden sind, die Datei jedoch an der Stelle nichts enthält. Um die Texte im eigenen System nicht zu löschen, können Sie hier ein Häkchen setzen.

Makro

Die Makros orientieren sich and der Syntax der Sprache Pascal.

Import-Funktionen

Alle vorgegebenen Funktionen haben die Parameter oXLS und nRow. Diese Variable oXLS enthält die Referenz auf das Excel-Dokument und nRow die aktuelle Zeile des Imports.

ArtikelNummer

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

ArtikelEAN

Diese Funktion dient dazu die EAN zu ermitteln. Die EAN wird als alternative für die Artikelnummer verwendet, um die OBS-Artikelnummer zu ermitteln.

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.

ArtikelText

Mit dieser Funktion wird der Text ermittelt.

ArtikelTyp

In dieser Funktion kann die Vorgabe der Einstellung Typ übersteuert werden.

ArtikelSprache

In dieser Funktion kann die Vorgabe der Einstellung Sprache übersteuert werden.

ShopZuord

Diese Funktion muss im Makro nicht vorkommen. Sie ist optional und dient der Angabe von Shop-Schnittstellen. Die Texte können somit direkt beim Import einer oder mehreren Shop-Schnittstellen zugeordnet werden. Die Nummern der Schnittstellen sind mit Komma getrennt anzugeben bzw. zurückzugeben.

Beispiel:

function ShopZuord(oXLS:TObject;nRow:Intgeger) : String;
begin
    Result := '001,002';
end;

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.

TISO.LanguageGetRefNo

Verwendung: Ermitteln der OBS-Referenz für eine Sprache per ISO-Code. Dafür wird der Sprach-Standard ISO 639 verwendet.
Parameter: TxDB (Datenbank-Verbindung, immer oDB !), TISOLanguageCodes (enummeration), string
Rückgabe: string
Beispiel:

cISO1  := TISO.LanguageGetRefNo(oDB,iso639_1 ,'en');
cISO2b := TISO.LanguageGetRefNo(oDB,iso639_2b,'eng');
cISO2t := TISO.LanguageGetRefNo(oDB,iso639_2t,'eng');
cISO3  := TISO.LanguageGetRefNo(oDB,iso639_3 ,'eng');

Erklärung: Die Standard-Sprache in OBS ist Deutsch. Bei Verwendung des Moduls Mehrsprachen, muss bei entsprechenden Texten die Sprache gesetzt werden. Für Importe haben Sie die Möglichkeit ISO-Codes in die OBS-Referenz umzuwandeln. Um die verschiedenen Codierungen zu verwenden, ist der zweite Parameter entscheidend. Dieser steht nämlich für den verwendeten ISO-639-Code. Das Beispiel würde jetzt also nacheinander für die Sprache Englisch die OBS-Referenz und schreibt diese in eine Variable.
Unterstütze Codes:

Code TISOLanguageCodes
ISO 639-1 iso639_1
ISO 639-2/B iso639_2b
ISO 639-2/T iso639_2t
ISO 639-3 iso639_3
HINWEIS: In der Regel wird beim Datenaustausch die zweistellige ISO 639-1 verwendet. Alle anderen Kodierungen sind dreistellig.

Beispiel

ACHTUNG: Die Funktion ArtikelSprache bis Version 002772 mit leerer Rückgabe (Result := '';) verwenden! Die Funktionalität über die internen ISO-Funktionen ist erst ab 002773 verfügbar.
function ArtikelNummer(oXLS:TObject;nRow:Intgeger) : String;
begin
    Result := LeftStr(GetCell(oXLS,nRow,0),6);
end;

//-----------------------------------------------------------------------------

function ArtikelEAN(oXLS:TObject;nRow:Intgeger) : String;
begin
    Result := GetCell(oXLS,nRow,1);
end;

//-----------------------------------------------------------------------------

function ArtikelName(oXLS:TObject;nRow:Intgeger) : String;
begin
    Result := GetCell(oXLS,nRow,2);
end;

//-----------------------------------------------------------------------------

function ArtikelText(oXLS:TObject;nRow:Intgeger) : String;
begin
    Result := GetCell(oXLS,nRow,3);
end;

//-----------------------------------------------------------------------------

function ArtikelTyp(oXLS:TObject;nRow:Intgeger) : String;
begin
    Result := GetCell(oXLS,nRow,4);
end;

//-----------------------------------------------------------------------------

function ArtikelSprache(oXLS:TObject;nRow:Intgeger) : String;
begin
    Result := TISO.LanguageGetRefNo(oDB,iso639_1,'de');
end;

//-----------------------------------------------------------------------------

function ShopZuord(oXLS:TObject;nRow:Intgeger) : String;
begin
    Result := '';
end;