Itgenxml091 im BARCODE-Feld

Während der Synchronisierung von Items mit Exact Online erhalten wir den folgenden Fehler:

itgenxml091
Die Spalte ‘BARCODE’ hat den Wert ‘10788942212008112505’, der nicht in den Datentyp Int64 konvertiert werden kann.
Der Wert ‘10788942212008112505’ ist keine gültige große Ganzzahl.
Der Wert war entweder zu groß oder zu klein für ein Int64.
Verwenden Sie das Komma ‘,’ als Tausendertrennzeichen.

Request-ID: 0HNN7G8UUIJP0:00000001

Dadurch schlägt die Synchronisierung fehl.

Kann überprüft werden, warum das BARCODE-Feld als Int64 behandelt wird, anstatt als Text (String)?

itgenxml091

Die Spalte BARCODE in Items hat den Wert ‘10788942212008112505’, der nicht in den Datentyp ‘int64’ konvertiert werden kann.

Der Wert ‘10788942212008112505’ ist keine gültige große Ganzzahl.
Der Wert war entweder zu groß oder zu klein für ein Int64.

Verwenden Sie das Komma ‘,’ als Tausendertrennzeichen.

Die Ursache ist ein zu großer möglicher Wert für den im Feld verwendeten Datentyp in der Invantive-Software. Es wird eine Anpassung vorgenommen, um dieses Problem zu lösen.

Bericht: gmr-eol-items

Call-Stack:

System.OverflowException
ValidationException
ValidationException
   at System.Number.ThrowOverflowException[TInteger]()
   at System.String.System.IConvertible.ToInt64(IFormatProvider provider)
   at Invantive.Data.DataUtility.ConvertToLong(GlobalState owner, ExecutionOptions executionOptions, Object val)

SQL-Abfrage:

select /*+ result_set_name('Items') */
       ...
,      itm.barcode
       ...
from   ( select to_number(itm.division_code) division
         ,      to_guid(replace(itm.id_attr, '{', '', '}', '')) id
         ,      itm.* 
         from   exactonlinexml..items@eol itm 
       ) itm
...

Exact Online gibt in den Metadaten vor, dass es sich um eine Ganzzahl handelt:

<xsd:element name="Barcode" type="xsd:integer" minOccurs="0"/>

Der größte mögliche Eingabewert in der Exact Online-Benutzeroberfläche sind 20 Neunen:

99999999999999999999

Die Zahl 10788942212008112505 hat 20 Ziffern und ist größer als der maximale Wert von 19 Ziffern eines Int64 (9223372036854775807).

Innerhalb der REST-APIs verwendet Exact Online einen Text statt eines Int64 wie bei XML. Ein Text ist auch besser wegen der möglichen führenden Nullen.

Eine Verbesserung wurde produktiv gesetzt, um dieses Problem zu lösen. Fünf Spalten sind durch den Übergang von XML- zu REST-Tabellen entfallen.

Für weitere Informationen siehe: