[GELÖST] Zeichen rechts abschneiden XML Export Zeilennummer

5. April 2018 13:22

Hallo,

stehe hier davor und soll ein XML Export durchgeführt werden.
Dabei wird als Knoten die "Line No." aus der T111 (Sales Shipment Line) exportiert

Zur Zeit wird ja die Line No. so exportiert.

Code:
<LineNumber>10000</LineNumber>
.
<LineNumber>20000</LineNumber>
.
<LineNumber>30000</LineNumber>
.
<LineNumber>40000</LineNumber>
.
<LineNumber>50000</LineNumber>
.
<LineNumber>60000</LineNumber>
.
<LineNumber>70000</LineNumber>
.
<LineNumber>80000</LineNumber>
.
<LineNumber>90000</LineNumber>
.
<LineNumber>100000</LineNumber>
.
<LineNumber>110000</LineNumber>
.
<LineNumber>120000</LineNumber>


Soll

Code:
<LineNumber>1</LineNumber>
.
<LineNumber>2</LineNumber>
.
<LineNumber>3</LineNumber>
.
<LineNumber>4</LineNumber>
.
<LineNumber>5</LineNumber>
.
<LineNumber>6</LineNumber>
.
<LineNumber>7</LineNumber>
.
<LineNumber>8</LineNumber>
.
<LineNumber>9</LineNumber>
.
<LineNumber>10</LineNumber>
.
<LineNumber>11</LineNumber>
.
<LineNumber>12</LineNumber>


Ich habe mir alle String Befehle unter http://www.navision24.de/befehle/index.html angeschaut und ausprobiert.
Bin aber nicht zum gewünschten Ergebnis gekommen.

Hat jemand eine Idee oder eine kleine Lösung wie man das umsetzen könnte?

Bin für jede Hilfe dankber

Beste Grüße
Robert
Zuletzt geändert von Raban am 20. April 2018 09:11, insgesamt 1-mal geändert.

Re: Zeichen rechts abschneiden XML Export Zeilennummer

5. April 2018 14:08

Du könntest natürlich die Zeilennummer einfach durch 10000 teilen und das Ergebnis exportieren.

Aber Vorsicht!
Was machst du, wenn ein Anwender eine weitere Zeile zwischen zwei bereits vorhandenen Zeilen einfügt (Strg+Einfg)?
Dann hast du eine Zeile mit Zeilennummer 15000.
Wiederholt er das, dann ergibt das die Zeilennummer 12500.

Was für eine Zeilennummer möchtest du dann exportieren?
Drei Zeilen mit Zeilennummer 1?
Zeilen mit Zeilennummer 1,25 und 1,5?

Meiner bescheidenen Meinung nach kommst du nicht um eine unabhängige Positionsnummer herum, welche du nach deinen Regeln ermitteln und ggfls. aktualisieren kannst.

Re: Zeichen rechts abschneiden XML Export Zeilennummer

5. April 2018 15:58

Wenn aus:
10000
11000
11500
12000
das werden kann:
1
2
3
4

kannst du auch einfach ein Integer pro Zeile hochzählen

Re: Zeichen rechts abschneiden XML Export Zeilennummer

5. April 2018 21:54

Timo Lässer hat geschrieben:Du könntest natürlich die Zeilennummer einfach durch 10000 teilen und das Ergebnis exportieren.

Aber Vorsicht!
Was machst du, wenn ein Anwender eine weitere Zeile zwischen zwei bereits vorhandenen Zeilen einfügt (Strg+Einfg)?
Dann hast du eine Zeile mit Zeilennummer 15000.
Wiederholt er das, dann ergibt das die Zeilennummer 12500.

Hallo,

ausgeben muss ich nur die Zeilen aus die Type = Item und No. nicht leer

Code:

IF "Sales Shipment Line".Type = "Sales Shipment Line".Type::Item THEN BEGIN
  IF "Sales Shipment Line"."No." <> '' THEN BEGIN
"Sales Shipment Line"."Line No." := "Sales Shipment Line"."Line No." / 10000;
  END;
END;


sollte dann denke ich schon passen. In der gebuchten Verkaufslieferzeile werden nach der Buchung keine Zeilen mehr eingefügt.

die Zeilennummer einfach durch 10000 teilen und das Ergebnis exportieren habe ich schon probiert. Leider wird dann man meine XML Datei mehrere Gigabyte groß und nimmt kein Ende.
Da muss ich den NAV Dienst stoppen auf meine Testmaschine damit es aufhört.

Ohne den o. g. Code ist die XML 4-7KB groß
hm..fehlt mir dann noch ein Filter, oder?

Gruß
Robert

Re: Zeichen rechts abschneiden XML Export Zeilennummer

6. April 2018 06:04

Ted hat geschrieben:Wenn aus:
10000
11000
11500
12000
das werden kann:
1
2
3
4

kannst du auch einfach ein Integer pro Zeile hochzählen


Guten Morgen,

wäre natürlich auch eine alternative. Würdest Du bitte hier eine kurze Anleitung dazu reinstellen wie man das umsetzen könnte?
Wäre Super Klasse.
Vielen Dank für deine Mühe
Beste Grüße
Robert

Re: Zeichen rechts abschneiden XML Export Zeilennummer

6. April 2018 09:44

Raban hat geschrieben:die Zeilennummer einfach durch 10000 teilen und das Ergebnis exportieren habe ich schon probiert. Leider wird dann man meine XML Datei mehrere Gigabyte groß und nimmt kein Ende.
Da muss ich den NAV Dienst stoppen auf meine Testmaschine damit es aufhört.


Wo hast du den Code denn hingeschrieben?

Ich würde eine globale Variable 'LineNo' vom Typ Decimal anlegen diese im XMLPort hinzufügen und dann im "Export::OnAfterGetRecord()" deinen Code schreiben
Code:
"Sales Shipment Line" - Export::OnAfterGetRecord()
IF "Sales Shipment Line".Type = "Sales Shipment Line".Type::Item THEN BEGIN
  IF "Sales Shipment Line"."No." <> '' THEN BEGIN
    LineNo := "Sales Shipment Line"."Line No." / 10000;
  END;
END;


Die von mir vorgeschlagene Lösung wäre ähnlich. Du musst nur LineNo als Integer machen und dann statt der Division einfach
Code:
LineNo += 1;

Re: Zeichen rechts abschneiden XML Export Zeilennummer

6. April 2018 13:43

Ted hat geschrieben:
Raban hat geschrieben:die Zeilennummer einfach durch 10000 teilen und das Ergebnis exportieren habe ich schon probiert. Leider wird dann man meine XML Datei mehrere Gigabyte groß und nimmt kein Ende.
Da muss ich den NAV Dienst stoppen auf meine Testmaschine damit es aufhört.


Wo hast du den Code denn hingeschrieben?


Ich würde eine globale Variable 'LineNo' vom Typ Decimal anlegen diese im XMLPort hinzufügen und dann im "Export::OnAfterGetRecord()" deinen Code schreiben
Code:
"Sales Shipment Line" - Export::OnAfterGetRecord()
IF "Sales Shipment Line".Type = "Sales Shipment Line".Type::Item THEN BEGIN
  IF "Sales Shipment Line"."No." <> '' THEN BEGIN
    LineNo := "Sales Shipment Line"."Line No." / 10000;
  END;
END;


Die von mir vorgeschlagene Lösung wäre ähnlich. Du musst nur LineNo als Integer machen und dann statt der Division einfach
Code:
LineNo += 1;


Hallo,

vielen Dank für deine Hilfe :)

Wo hast du den Code denn hingeschrieben?


Im Abschnitt
Code:
LineNumber - Export::OnBeforePassVariable()


Habe im XML Port eine globale Variable (Decimal) angelegt "LineNo"
Hier eingebunden

Code:
LineNumber - Export::OnBeforePassField()

IF "Sales Shipment Line".Type = "Sales Shipment Line".Type::Item THEN BEGIN
  IF "Sales Shipment Line"."No." <> '' THEN BEGIN
   LineNo +=1;
  END;
END;


In der XML habe ich als Ergebnis:

Code:
<Line>
        <Line-Item>
          <LineNumber />
          <EAN>4030716001042</EAN>
          <QuantityDespatched>1</QuantityDespatched>
          <UnitOfMeasure>PCE</UnitOfMeasure>
        </Line-Item>
</Line>



Knoten <LineNumber> wird nicht hochgezählt :(

Die Datei nach Export ist wieder nur 4-5Kb groß. Schon mal gut.

Vielen Dank für deine Mühe
Beste Grüße
Robert

Re: Zeichen rechts abschneiden XML Export Zeilennummer

20. April 2018 09:09

die Lösung / 10.000 ist wohl die die dazu passt.
eigentlich ganz einfach. Wenn man weiss wie ist alles einfach ....

LineNumber als Text im XML Port definiert

dann nur folgendes in "LineNumber - Export::OnBeforePassVariable()"

Code:
LineNumber := '';
                 
IF "Sales Shipment Line".Type = "Sales Shipment Line".Type::Item THEN BEGIN
  IF "Sales Shipment Line"."No." <> '' THEN BEGIN
  LineNumber := FORMAT("Sales Shipment Line"."Line No." / 10000);
  END;
END;


falls jemand mitliest

Beste Grüße
Robert