[GastForen Programmierung/Entwicklung AppleScript Bestellnummerstruktur Änderung

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Themen
Beiträge
Moderatoren
Letzter Beitrag

Bestellnummerstruktur Änderung

Anonym
Beiträge gesamt: 22827

4. Apr 2008, 11:44
Beitrag # 1 von 20
Bewertung:
(3058 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo zusammen, hallo - ganz speziell - Hans,

Habe hier ein Script, dass wir ab und an mal brauchen. Gerade aktuell sollen wir wieder QXPs damit überarbeiten.
WIr müssen einerseits Preis aktualisieren (kein Problem) und die Bestellnummer ändern (Schon ein Problem - für mich ;-)  )

die gelieferte Form sieht so aus:
01 23 456
vorne soll eine Null dazu kommen. Die letzte Stelle soll durch eine 2stellige Suffix "02" (bei allen Best.-Nr. gleich) ersetzt werden. => insgesamt 2 Stellen mehr.

Zusätzlich soll dann die Aufteilung aus optischen Gründen folgendermaßen aussehen:
2stellig 3stellig 4stellig

An diesem Beispiel:
00 123 4502
die erste Null und die letzten beiden Stellen sind dann neu.

Die Suffix wird weiter oben angegeben und unten dann entsprechend verwendet. KANN MIR DAS BITTE JEMAND UMSTELLEN? BEI MIR FUNZT DAS NICHT! Merci im voraus!!!
Gruß
Gerd

Hier der Teil des Codes:
Code
on checkStory() 
    set numKind to 0
    repeat 1 times
        try
            set someDigits to («event SATIFINd» "[0-9][0-9] [0-9][0-9] [0-9][0-9] [0-9][0-9]" with «class UsGR» given «class $in »:storyOne)
            set numKind to 8
            exit repeat
        end try
        try
            set someDigits to («event SATIFINd» "[0-9][0-9] [0-9][0-9] [0-9][0-9][0-9]" with «class UsGR» given «class $in »:storyOne)
            set numKind to 7
            exit repeat
        end try
        try
            set someDigits to («event SATIFINd» "[0-9][0-9] [0-9][0-9] [0-9][0-9]" with «class UsGR» given «class $in »:storyOne)
            set numKind to 6
            exit repeat
        end try
    end repeat
    return numKind
end checkStory

-- dieser Handler nimmt das Kürzen der Produktnummern und das Austauschen der Preise vor
on modNumChangePrice(i, numKind)
    global allPrices
    global defList
    -- der Text wird in XPress-Tags-Format in eine Datei exportiert
    tell document 1 of application "QuarkXPress Passport"
        save every text of story i in tempFilePath as "TEXT"
    end tell
   
    -- der exportierte Text wird in die Variable 'aString' gelesen
    set aString to read file tempFilePath
   
    -- ... die Änderungen der Produktnummern vornehmen ...
    if suffix is not "" then
        set suffix to "<\\\\!s>" & suffix
    end if
    if aString contains "<\\!s>" then
        if numKind = 8 then
            set newString to «event SATIRPLl» "([0-9][0-9]<\\\\!s>[0-9][0-9]<\\\\!s>[0-9][0-9])(<\\\\!s>[0-9][0-9])" with «class UsGR» given «class by  »:"\\1" & suffix, «class $in »:aString
        else if numKind = 7 then
            set newString to «event SATIRPLl» "([0-9][0-9]<\\\\!s>[0-9][0-9]<\\\\!s>[0-9][0-9])([0-9])" with «class UsGR» given «class by  »:"\\1" & suffix, «class $in »:aString
        else if numKind = 6 then
            set newString to «event SATIRPLl» "([0-9][0-9]<\\\\!s>[0-9][0-9]<\\\\!s>[0-9][0-9])" with «class UsGR» given «class by  »:"\\1" & suffix, «class $in »:aString
        end if
    else
        if numKind = 8 then
            set newString to «event SATIRPLl» "([0-9][0-9])( )([0-9][0-9])( )([0-9][0-9])( [0-9][0-9])" with «class UsGR» given «class by  »:"\\1<\\\\!s>\\3<\\\\!s>\\5" & suffix, «class $in »:aString
        else if numKind = 7 then
            set newString to «event SATIRPLl» "([0-9][0-9])( )([0-9][0-9])( )([0-9][0-9])([0-9])" with «class UsGR» given «class by  »:"\\1<\\\\!s>\\3<\\\\!s>\\5" & suffix, «class $in »:aString
        else if numKind = 6 then
            set newString to «event SATIRPLl» "([0-9][0-9])( )([0-9][0-9])( )([0-9][0-9])" with «class UsGR» given «class by  »:"\\1<\\\\!s>\\3<\\\\!s>\\5" & suffix, «class $in »:aString
        end if
    end if

X

Bestellnummerstruktur Änderung

TMA
Beiträge gesamt: 399

4. Apr 2008, 12:35
Beitrag # 2 von 20
Beitrag ID: #422379
Bewertung:
(3057 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hi Gerd,
für numKind = 7 sollte das so gehen (du hast ja nur 7-stellige Bestellnummern):
Code
on checkStory() 
    set numKind to 0
    repeat 1 times
        try
            set someDigits to (find text "[0-9]{2} [0-9]{2} [0-9]{2} [0-9]{2}" in storyOne with regexp)
            set numKind to 8
            exit repeat
        end try
        try
            set someDigits to (find text "[0-9]{2} [0-9]{2} [0-9]{3}" in storyOne with regexp)
            set numKind to 7
            exit repeat
        end try
        try
            set someDigits to (find text "[0-9]{2} [0-9]{2} [0-9]{2}" in storyOne with regexp)
            set numKind to 6
            exit repeat
        end try
    end repeat
    return numKind
end checkStory

-- dieser Handler nimmt das Kürzen der Produktnummern und das Austauschen der Preise vor
on modNumChangePrice(i, numKind)
    global allPrices
    global defList
    -- der Text wird in XPress-Tags-Format in eine Datei exportiert
    tell document 1 of application "QuarkXPress Passport"
        save every text of story i in tempFilePath as "TEXT"
    end tell
   
    -- der exportierte Text wird in die Variable 'aString' gelesen
    set aString to read file tempFilePath
   
    -- ... die Änderungen der Produktnummern vornehmen ...
    if suffix is not "" then
        set suffix to "<\\\\!s>" & suffix
    end if
   
    set tmpPrefix to "0"
   
    if aString contains "<\\!s>" then
        if numKind = 8 then
            set newString to change "([0-9]{2}<\\\\!s>[0-9]{2}<\\\\!s>[0-9]{2})(<\\\\!s>[0-9]{2})" into "\\1" & suffix in aString with regexp
        else if numKind = 7 then
            set newString to change "([0-9]{2}<\\\\!s>[0-9]{2}<\\\\!s>[0-9]{3})" into "\\1" & suffix in aString with regexp
        else if numKind = 6 then
            set newString to change "([0-9]{2}<\\\\!s>[0-9]{2}<\\\\!s>[0-9]{2})" into "\\1" & suffix in aString with regexp
        end if
    else
        if numKind = 8 then
            set newString to change "([0-9]{2})( )([0-9]{2})( )([0-9]{2})( [0-9]{2})" into "\\1<\\\\!s>\\3<\\\\!s>\\5" & suffix in aString with regexp
        else if numKind = 7 then
            set newString to change "([0-9])([0-9]) ([0-9])([0-9]) ([0-9])([0-9])([0-9])" into tmpPrefix & "\\1<\\\\!s>\\2\\3\\4<\\\\!s>\\5\\6" & suffix in aString with regexp
        else if numKind = 6 then
            set newString to change "([0-9]{2})( )([0-9]{2})( )([0-9]{2})" into "\\1<\\\\!s>\\3<\\\\!s>\\5" & suffix in aString with regexp
        end if
    end if
end modNumChangePrice


Hab die Variable "tmpPrefix" mal mit verbaut, für die Null vorne.
Kanns leider nicht testen, sollte aber laufen.

Gruß
TMA


als Antwort auf: [#422378]

Bestellnummerstruktur Änderung

Hans Haesler
  
Beiträge gesamt: 5826

4. Apr 2008, 12:51
Beitrag # 3 von 20
Beitrag ID: #422380
Bewertung:
(3057 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Gerd,

der gute TMA ist mir zuvorgekommen. Seine Lösung ist okay, aber nur für den Fall, dass zwischen den Ziffern ein normaler Leerraum ist.

Übrigens: Mit Deiner Satimage.osax stimmt etwas nicht. Es ist nicht normal, dass im Script der Code im Rohformat erscheint, z.B. «event SATIRPLl»  (sollte change sein).

Nachstehend habe ich im Handler modNumChangePrice nur die beiden Zeilen, welche die siebenstelligen Zahlenfolgen betreffen, geändert.

Achtung: die drei Zeilen ...
---
   if suffix is not "" then
      set suffix to "<\\\\!s>" & suffix
   end if
---
... müssen entfernt werden.

Der folgende Code kann zu Testzwecken alleinstehend ausgeführt werden. QuarkXPress muss nicht laufen. Wenn das Ergebnis okay ist, nur die if/else if-Schleife im Hauptscript auswechseln.
---
set aString to "01 23 456"
--set aString to "01<\\!s>23<\\!s>456"
set numKind to 7
set suffix to "02"

-- ... die Änderungen der Produktnummern vornehmen ...
if aString contains "<\\!s>" then
   if numKind = 8 then
      set newString to change "([0-9][0-9]<\\\\!s>[0-9][0-9]<\\\\!s>[0-9][0-9])(<\\\\!s>[0-9][0-9])" into "\\1" & suffix in aString with regexp
   else if numKind = 7 then
      set newString to change "([0-9])([0-9])(<\\\\!s>)([0-9][0-9])(<\\\\!s>)([0-9][0-9])([0-9])" into "0\\1x\\2\\4x\\6" & suffix in aString with regexp
   else if numKind = 6 then
      set newString to change "([0-9][0-9]<\\\\!s>[0-9][0-9]<\\\\!s>[0-9][0-9])" into "\\1" & suffix in aString with regexp
   end if
else
   if numKind = 8 then
      set newString to change "([0-9][0-9])( )([0-9][0-9])( )([0-9][0-9])( [0-9][0-9])" into "\\1<\\\\!s>\\3<\\\\!s>\\5" & suffix in aString with regexp
   else if numKind = 7 then
      set newString to change "([0-9])([0-9])( )([0-9][0-9])( )([0-9][0-9])([0-9])" into "0\\1<\\\\!s>\\2\\4<\\\\!s>\\6" & suffix in aString with regexp
   else if numKind = 6 then
      set newString to change "([0-9][0-9])( )([0-9][0-9])( )([0-9][0-9])" into "\\1<\\\\!s>\\3<\\\\!s>\\5" & suffix in aString with regexp
   end if
end if

newString
---
Gruss, Hans


als Antwort auf: [#422378]

Bestellnummerstruktur Änderung

Anonym
Beiträge gesamt: 22827

4. Apr 2008, 13:15
Beitrag # 4 von 20
Beitrag ID: #422381
Bewertung:
(3057 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Euch beiden,
zuerst Mal vielen Dank, für die schnelle Antwort.
Funktioniert aber nicht, da hier ein Problem mit nem String auftaucht.

Viele Grüße
Gerd


als Antwort auf: [#422378]

Bestellnummerstruktur Änderung

Hans Haesler
  
Beiträge gesamt: 5826

4. Apr 2008, 14:12
Beitrag # 5 von 20
Beitrag ID: #422382
Bewertung:
(3057 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Gerd,

wenn ein Problem auftaucht, muss man die Dinge in der richtigen Reihenfolge angehen.

1. Du musst Deine Arbeitsumgebung auf Vordermann bringen. Es ist nicht normal, dass im Script die Rohcodes der Satimage.osax auftauchen.

2. Bitte führe mein oben gepostetes Script – so wie es ist – aus und berichte dann, ob das Ergebnis korrekt ist.

Und dann werden wir schon klarer sehen.

Gruss, Hans


als Antwort auf: [#422378]

Bestellnummerstruktur Änderung

Anonym
Beiträge gesamt: 22827

7. Apr 2008, 09:12
Beitrag # 6 von 20
Beitrag ID: #422383
Bewertung:
(3057 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,
mach ich jetzt gleich. Meine Frau ist am Fr. die Außentreppen gestürzt, deshalb hab ich auch - überstürzt - den ganzen Code mal gepostet und bin dann mit ihr in KKH gefahren.

Ich werd das gleich mal angehen.

Viele Grüße
Gerd


als Antwort auf: [#422378]

Bestellnummerstruktur Änderung

Anonym
Beiträge gesamt: 22827

7. Apr 2008, 09:19
Beitrag # 7 von 20
Beitrag ID: #422384
Bewertung:
(3057 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hab's gerade getestet. Nun meckert er nach
set newString to change ....
das " an. Er erwartet ein Zeilenende...

Hast Du oder jemand anderes eine Idee? kann das doch mit dem SatImage aufruf zu tun haben??

Viele Grüße
Gerd


als Antwort auf: [#422378]

Bestellnummerstruktur Änderung

Anonym
Beiträge gesamt: 22827

7. Apr 2008, 10:14
Beitrag # 8 von 20
Beitrag ID: #422385
Bewertung:
(3057 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
kann es sein, dass hier ein "from" fehlt? Ich versuchs mal...

Gruß
Gerd


als Antwort auf: [#422378]

Bestellnummerstruktur Änderung

Hans Haesler
  
Beiträge gesamt: 5826

7. Apr 2008, 10:24
Beitrag # 9 von 20
Beitrag ID: #422386
Bewertung:
(3057 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Gerd,

1. Erst mal Deiner Frau eine gute Besserung.

2. Ich habe inzwischen den überstürzt geposteten Code-Dreiteiler gelöscht. Den können wir später wieder veröffentlichen, wenn das Satimage-Problem geklärt ist.

3. Bleibt das 'change' nach dem Übersetzen des Codes so lesbar erhalten? Oder wird es wieder zum Rohcode?

4. Ein 'from' kann nicht fehlen, weil es hier nicht gebraucht wird.


5. Hast Du meinen geposteten Test-Code komplett kopiert und unverändert verwendet?

Gruss, Hans


als Antwort auf: [#422378]

Bestellnummerstruktur Änderung

Anonym
Beiträge gesamt: 22827

7. Apr 2008, 11:02
Beitrag # 10 von 20
Beitrag ID: #422387
Bewertung:
(3057 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Zitat von author="Hans Haesler" date="1207556692" Hallo Gerd,

1. Erst mal Deiner Frau eine gute Besserung.

2. Ich habe inzwischen den überstürzt geposteten Code-Dreiteiler gelöscht. Den können wir später wieder veröffentlichen, wenn das Satimage-Problem geklärt ist.

3. Bleibt das 'change' nach dem Übersetzen des Codes so lesbar erhalten? Oder wird es wieder zum Rohcode?

4. Ein 'from' kann nicht fehlen, weil es hier nicht gebraucht wird.


5. Hast Du meinen geposteten Test-Code komplett kopiert und unverändert verwendet?

Gruss, Hans


Zu1: Danke!  Hatte Glück im Unglück; die rechte Körperseite wird sie noch 1-2 Wochen deutlich spüren...

Zu2: ja klar

Zu3: 'change' bleibt erhalten, wenn ich das aber übersetzen lassen will, erhalte ich den genannten Fehler.

Zu4: Wenn ich - nach einer allg. Sprachlogik change ... <b>from</b> ... into ... verwende, kann ich es übersetzen lassen.

Zu5: komplett kopiert, den Text darüber (die 3 Zeilen) auskommentiert.

Preisänderungen bei den Bildpreisen funktionieren; der Teil geht also. Im copytext passiert jedoch nix. (Preis auch nicht... ich versuch das mal an nem anderen Rechner). Unabhängig davon, funzt das 'change' so wie im code enthalten, nicht.


Gruß
Gerd


als Antwort auf: [#422378]

Bestellnummerstruktur Änderung

Anonym
Beiträge gesamt: 22827

7. Apr 2008, 12:00
Beitrag # 11 von 20
Beitrag ID: #422388
Bewertung:
(3057 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hab weiter getestet. Das Basis-Script funktioniert. Sobald ich die Änderung in der Zeile für die 7-stellige Variante (die zur 9-stelligen umgerechnet werden soll) einfüge, scheint das Script den copytext nicht mehr zu verarbeiten.

Ich probier mal weiter... falls Jemand noch Ideen hat, wäre ich seeeehr interessiert.

Merci,
Gerd


als Antwort auf: [#422378]

Bestellnummerstruktur Änderung

Hans Haesler
  
Beiträge gesamt: 5826

7. Apr 2008, 12:05
Beitrag # 12 von 20
Beitrag ID: #422389
Bewertung:
(3057 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Gerd,

der Suchen/Ersetzen-Befehl der Satimage.osax benötigt kein 'from'. Hier funktioniert mein geposteter Testcode problemlos.

Fragen:
1. Ist die Satimge.osax installiert?
2. Wo befindet sich die Satimge.osax-Datei? (Pfad)
3. Stimmen Rechnermodell und Satimage.osax überein?

Erklärung zu 3: Auf einem Intel-Rechner muss die Universal-Binary-Version der Satimage.osax verwendet werden.

Gruss, Hans


als Antwort auf: [#422378]

Bestellnummerstruktur Änderung

Anonym
Beiträge gesamt: 22827

7. Apr 2008, 12:49
Beitrag # 13 von 20
Beitrag ID: #422390
Bewertung:
(3057 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
oh man.... ich hab seit einiger Zeit einen neues PowerBook... mit Intel Proz und mein Admin hat mir auf Nachfrage gerade mitgeteilt, dass er einfach die "alte" Variante darauf kopiert hat. ich hole das gleich nach und teste weiter.

Hab jetzt versucht, schritt für Schritt weiter zu kommen. Also erst mal die führende Null ergänzt und dann die Stellen versucht, zu beeinflussen. Die Null wird natürlich akzeptiert, alles andere mag er dann nicht... Jetzt wird's klarer....

Merci, ich versuchs mal...
Gerd


als Antwort auf: [#422378]

Bestellnummerstruktur Änderung

Anonym
Beiträge gesamt: 22827

7. Apr 2008, 13:51
Beitrag # 14 von 20
Beitrag ID: #422391
Bewertung:
(3057 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hi, hab das jetzt auf dem aktuellen Stand.
Die drei Zeilen ausgeblendet, den Rest drin:
Fehler: "Importvorgang wurde wegen einer ungültigen Marke bzw. wegen beschädigten Informationen unterbrochen"

Nun hat aber das übersetzen des Codes geklappt!

Gruß
Gerd


als Antwort auf: [#422378]

Bestellnummerstruktur Änderung

Hans Haesler
  
Beiträge gesamt: 5826

7. Apr 2008, 14:00
Beitrag # 15 von 20
Beitrag ID: #422392
Bewertung:
(3057 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Gerd,

die passende Satimage.osax für einen Intel-Rechner kannst Du hier herunterladen:
http://www.fachhefte.ch / Link "AppleScripts" anklicken, dann den Ordner "z_additions_os_x" öffnen und die Datei "satimage_osax_UB.sit" wählen.

Weitere Versuche bitte nur mit meinem unveränderten Test-Script vornehmen. Und zwar ab Scripteditor ausführen. QuarkXPress muss nicht gestartet sein.

Solange dies nicht einwandfrei klappt, hat es keinen Sinn, das Originalscript abändern zu wollen.

Gruss, Hans


als Antwort auf: [#422378]
X