Seite 1 von 2

QR Code

Verfasst: 6. September 2013 09:26
von Matthias Vismann
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

Verfasst: 6. September 2013 10:18
von cmueller

Re: QR Code

Verfasst: 6. September 2013 14:07
von Matthias Vismann
Das ist ein Tool zum erzeugen von Normalem Barcode.
Ich benötige was zum erzeugen von QR Code

Re: QR Code

Verfasst: 6. September 2013 14:13
von Kowa
Dank gesetzlicher Anforderungen in Mexico:
QR Codes for Microsoft Dynamics NAV
[Nachtrag 07.06.21 neuer Link:] QR Codes for Microsoft Dynamics NAV
[Nachtrag 27.0.23] Die Links im Artikel sind verwaist, Download des Pakets für NAV 2009 (mit Hinweisen zum Downgrade für 5.x) hier.

Re: QR Code

Verfasst: 6. September 2013 14:33
von Matthias Vismann
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

Verfasst: 6. September 2013 16:23
von Kowa
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

Verfasst: 6. September 2013 17:50
von Kowa
Ich habe das Beispiel eben mal probiert, funktioniert einwandfrei, für die 5.x 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;

Re: QR Code

Verfasst: 3. Februar 2014 15:42
von Timo Lässer
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

Verfasst: 3. Februar 2014 18:56
von Natalie
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

Verfasst: 3. Februar 2014 19:07
von Timo Lässer
Natalie hat geschrieben:Wir können aber auch die englischsprachigen Links nehmen

Danke, die versteht man dann wenigstens auch ;-)

Re: QR Code

Verfasst: 3. Februar 2014 19:21
von h-d.neuenfeldt
Nebenfrage : wofür baut man die QR-Codes in die Belege ein ?

Re: QR Code

Verfasst: 3. Februar 2014 19:50
von Timo Lässer
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

Verfasst: 4. Februar 2014 13:29
von McClane
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

Verfasst: 4. Februar 2014 14:09
von Kowa
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 inklusive der msi-Datei sind im Anhang.

Re: QR Code

Verfasst: 4. Februar 2014 14:19
von McClane
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

Verfasst: 4. Februar 2014 14:41
von McClane
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

Verfasst: 4. Februar 2014 15:25
von Kowa
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

Verfasst: 5. Februar 2014 12:03
von Kowa
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

Verfasst: 6. Februar 2014 00:19
von McClane
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

Verfasst: 12. Juni 2015 09:55
von Kozure
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

Verfasst: 12. Juni 2015 10:29
von m_schneider
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.

Re: QR Code

Verfasst: 12. Juni 2015 11:39
von Kozure
Hallo Michael,

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

Gruß,

Kozure

Re: QR Code

Verfasst: 16. Februar 2016 12:29
von icarus
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

Verfasst: 16. Februar 2016 12:38
von JoergR
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

Verfasst: 16. Februar 2016 14:26
von icarus
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.