QR Code

6. September 2013 09:26

Hallo zusammen,

ich möchte aus Navision 5.01 einen QR-Code erzeugen.
Hat das schon mal jemand gemacht, ich finde nichts dazu.

Gruß
Matthias

Re: QR Code

6. September 2013 10:18

Hallo Matthias,

schau mal hier
http://www.msdynamics.de/viewtopic.php?f=14&t=12065&p=76050&hilit=2D+Barcode#p76050

LG
Christian

Re: QR Code

6. September 2013 14:07

Das ist ein Tool zum erzeugen von Normalem Barcode.
Ich benötige was zum erzeugen von QR Code

Re: QR Code

6. September 2013 14:13

Dank gesetzlicher Anforderungen in Mexico:
QR Codes for Microsoft Dynamics NAV

Re: QR Code

6. September 2013 14:33

Hallo Kowa,

das habe ich auch gefunden, kann aber den Link nicht öffnen. Nach Absprache mit einem Kollegen hat er mir die Daten runtergeladen aber das geht immer noch nicht. :-(

Re: QR Code

6. September 2013 16:23

Matthias Vismann hat geschrieben:Hallo Kowa,

das habe ich auch gefunden, kann aber den Link nicht öffnen. Nach Absprache mit einem Kollegen hat er mir die Daten runtergeladen aber das geht immer noch nicht. :-(

Was geht nicht? Der 5er Link ist verwaist, aber der 2009er geht. Die msi-Datei ist für beide Versionen gleich.

Re: QR Code

6. September 2013 17:50

Ich habe das Beispiel eben mal probiert, funktioniert einwandfrei, für die 5er muss nur das ServiceTier-Klimbim aus dem Codeunit raus und die CREATEs angepasst werden (letzten Parameter löschen). Außerdem ist die TempBlob-Variable nicht wirklich "temporär".
Code:
QRCodeInput := CreateQRCodeInput('John,Doe','+555 1231231','john@doe.zzz','www.johndoe.zzz');
QRCodeFileName := GetQRCode(QRCodeInput);

// Load the image from file into the BLOB field
CLEAR(TempBlob);
TempBlob.Blob.IMPORT(QRCodeFileName);
TempBlob.CALCFIELDS(Blob);

IF SalesInvoiceHeader.FINDFIRST THEN BEGIN
  SalesInvoiceHeader."QR Code" := TempBlob.Blob;
  SalesInvoiceHeader.MODIFY;
END;
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Re: QR Code

3. Februar 2014 15:42

Kann mir jemand die aktuellen Links zu der MSI-Datei nennen?
Die alten Links zum CustomerSource funktionieren seit der Umstellung leider nicht mehr. :-(

Ich habe ihn selber gefunden:
https://mbs.microsoft.com/customersourc ... _Mexico_es

Re: QR Code

3. Februar 2014 18:56

Wir können aber auch die englischsprachigen Links nehmen (die darüber hinaus ein Word-Dokument mehr enthalten, warum auch immer):

Electronic Invoice for Microsoft Dynamics NAV 2009 SP1 - Mexico
Electronic Invoice for Microsoft Dynamics NAV 5.0 SP1 - Mexico

Re: QR Code

3. Februar 2014 19:07

Natalie hat geschrieben:Wir können aber auch die englischsprachigen Links nehmen

Danke, die versteht man dann wenigstens auch ;-)

Re: QR Code

3. Februar 2014 19:21

Nebenfrage : wofür baut man die QR-Codes in die Belege ein ?

Re: QR Code

3. Februar 2014 19:50

h-d.neuenfeldt hat geschrieben:Nebenfrage : wofür baut man die QR-Codes in die Belege ein ?

Ganz einfach:
Entweder es gibt - wie in Mexiko - gesetzliche Vorschriften, oder der Kunde wünscht es, weil er die ausgedruckten Belege einscannen möchte.
Beispiele gibt es sicher unzählige, unter Anderem die Versandadresse auf den Lieferscheinen, die eigenen Firmendaten in den Header/Footer der Belege, ...

Re: QR Code

4. Februar 2014 13:29

Natalie hat geschrieben:nnen aber auch die englischsprachigen Links nehmen

Im (2009er Link zumindest) fehlt die MXElectronicInvoice.msi. Ohne kriegt man die Automation-Variable nicht.

Kowa hat geschrieben:funktioniert einwandfrei

Hast du mal Umlaute probiert? Dann bekomme ich einen Fehler.

Re: QR Code

4. Februar 2014 14:09

McClane hat geschrieben:
Kowa hat geschrieben:funktioniert einwandfrei

Hast du mal Umlaute probiert? Dann bekomme ich einen Fehler.

Nein, ich hatte seinerzeit nur den Text aus dem Beispiel verwendet. Ohne Sonderzeichen geht es aber im Spanischen ja auch nicht, vermutlich ein Codepageproblem.
Im (2009er Link zumindest) fehlt die MXElectronicInvoice.msi. Ohne kriegt man die Automation-Variable nicht.

Die Dateien für NAV 2009 inkl. der msi-Datei sind im Anhang.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Re: QR Code

4. Februar 2014 14:19

Kowa hat geschrieben:Die Dateien für NAV 2009 inkl. der msi-Datei sind im Anhang.

Hab mich blöd ausgedrückt, pardon. Deine Objekte sind die aus dem spanischen Link. in dem englischsprachigen sind andere, und die MXElectronicInvoice.msi fehlt dort.

Re: QR Code

4. Februar 2014 14:41

Kowa hat geschrieben:Ohne Sonderzeichen geht es aber im Spanischen ja auch nicht, vermutlich ein Codepageproblem.

Die Fehlermeldung ist:
Diese Meldung ist für C/AL-Programmierer:

Der Aufruf zum Member GetBarCode ist fehlgeschlagen. Microsoft.Dynamics.Nav.MX gab die folgende Meldung zurück:
Conversion error. Only JIS X 0201 is supported.

Der JIS X 0201 kann anscheinend tatsächlich keine Umlaute.

Re: QR Code

4. Februar 2014 15:25

McClane hat geschrieben:Der JIS X 0201 kann anscheinend tatsächlich keine Umlaute.

Wenn das unverändert aus der japanischen Urversion übernommen wurde, dann wird es wohl schwierig :roll:.
ISO 8859-1 wäre als Codepage wesentlich angebrachter.

Re: QR Code

5. Februar 2014 12:03

McClane hat geschrieben:Conversion error. Only JIS X 0201 is supported.

Ich habe das im Blog kommentiert, vielleicht hilft es ja und es kommt noch eine ISO-Version.

Re: QR Code

6. Februar 2014 00:19

Kowa hat geschrieben:Ich habe das im Blog kommentiert, vielleicht hilft es ja und es kommt noch eine ISO-Version.

Das wäre natürlich klasse. Danke :)

Re: QR Code

12. Juni 2015 09:55

Hallo Forum,

wir möchten diese Lösung gerne für unsere Kanban Karten verwenden.

Das o.g. Beispiel schreibt den QR Code in ein Blob Tabellenfeld der VK Rechnung.

Ist es auch möglich den QR Code in einem Report dynamisch zu erstellen (Inhalt = Artikelnummer), also ohne Speicherung in einem Blob Tabellenfeld?

Danke&Gruß,

Kozure

Re: QR Code

12. Juni 2015 10:29

Also ein BlobFeld brauchts in jedem Fall, um das Bild auf dem Report anzuzeigen. Dieses kann aber auch aus einer temporären Tabelle stammen. Dafür gibt es die Tabelle "TempBlob". Diese als Temp Record eingebunden kann man in den Bericht beliebig einbinden.
Zuletzt geändert von McClane am 20. Juni 2015 00:16, insgesamt 1-mal geändert.
Grund: Bitte den Community-Knigge (Punkt 9) beachten und keine kompletten Beiträge zitieren.

Re: QR Code

12. Juni 2015 11:39

Hallo Michael,

danke für den Hinweis ... funktioniert Super!

Gruß,

Kozure
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Re: QR Code

16. Februar 2016 12:29

Ich hänge mich mal kurz in den alten Thread.

Zunächst vielen Dank, ich konnte testweise einen QR-Code erstellen. Jetzt ist nur die Frage, ob es eine zuverlässige Methode gibt, den Code zu vergrößern. Wir möchten den ggf. auf Palettenzettel andrucken. Da ist die gegebene Auflösung etwas gering. Ich setze bei diesem Kunden noch ein 2009er im Classic Client ein.

Re: QR Code

16. Februar 2016 12:38

Hi, du musst dazu den QRCode aus dem Blob binär in ein File laden und dann das 38. und 42. Byte (SEEK) für Horz+Vert. Auflösung eines Bitmaps verändern + zurück in das Blob-Feld schreiben.

mfg

Re: QR Code

16. Februar 2016 14:26

Das ist eine schnelle Antwort, klasse!

Für das Archiv:
Code:
GetBarCodeProvider(IBarCodeProvider);
QRCodeFileName := IBarCodeProvider.GetBarCode(QRCodeInput);

QRImage.TEXTMODE(FALSE);
QRImage.WRITEMODE(TRUE);
QRImage.OPEN(QRCodeFileName);

Resolution := 1890; // Standard ist 3780

QRImage.SEEK(38);
QRImage.WRITE(Resolution);

QRImage.SEEK(42);
QRImage.WRITE(Resolution);

QRImage.CLOSE();


Damit wird der QR-Code in der Größe verdoppelt. Der Wert ist die Anzahl der Pixel pro Meter, siehe Doku:
https://de.wikipedia.org/wiki/Windows_B ... enschaften

Nachtrag:

Die Größe des QRCodes schwankt ja mit der Menge an Informationen, die man da reinpackt. Wenn man variable Inhalte hat, aber die Code-Größe recht genau bestimmen muss (oder möchte), kann man das wie folgt umsetzen:

Code:
GetBarCodeProvider(IBarCodeProvider);
QRCodeFileName := IBarCodeProvider.GetBarCode(QRCodeInput);

IF Resolution <> 0 THEN BEGIN
  QRImage.TEXTMODE(FALSE);
  QRImage.WRITEMODE(TRUE);
  QRImage.OPEN(QRCodeFileName);

  QRImage.SEEK(18);
  QRImage.READ(Width);

  QRImage.SEEK(22);
  QRImage.READ(Height);

  IF Width = Height THEN BEGIN
    Resolution := ROUND((Width * 1000) / Resolution, 1, '>');
    QRImage.SEEK(38);
    QRImage.WRITE(Resolution);

    QRImage.SEEK(42);
    QRImage.WRITE(Resolution);
  END;

  QRImage.CLOSE();
END;


In "resolution" steht dann die Bildgröße in Millimeter. Und nicht wundern, dass das ausgedruckte Bild scheinbar kleiner ist: Den eigentlichen Code umgibt ein weißer Rand.