Типы данных
В стандарте X12 определяются такие типы данных, которые может содержать элемент:
AN (Alpha-Numeric) - строка, которая может содержать буквы, цифры, знаки препинания. Это может быть произвольная строка, например имя товара или название улицы на которую нужно доставить товар, и т.д. Примеры: «БАТОН НАРЕЗНОЙ, 1-ГО СОРТА», «САНКТ-ПЕТЕРБУРГ».
Для этого типа данных так же накладывается ограничение на длину строки, например 1/20 – от 1 до 20 символов, 2/2 – ровно 2 символа и т.д.
R (Real) - дробное число. Данный тип данных используется для информации о цене, весе продукта, расстоянии, размере скидки и т.д. Примеры: 1.23; 75.99. Начиная с версии 4010 поддерживается экспоненциальная нотация.
N[X] (Number) – специальный формат числа. [X] определяет, сколько знаков справа надо «отступить» чтобы поставить запятую. Например, для типа данных N2 для обозначения числа 1,23 значением элемента будет 123, а для 10,5 – 1050 (тоесть чтобы получить нужное значение мы берем значение элемента и делим его на 102). N0 соответствует целому числу, тоесть его значение остается как есть.
ID (Identity) – идентификатор. Об этом типе данных следует рассказать подробнее. Простейший пример идентификаторов из реальной жизни – это единицы измерения, например «ММ» (миллиметр), «СМ» (сантиметр), «РУБ» (рубль) и т.д. В X12 все идентификаторы собраны в логические группы (классификаторы), и этим группам присвоены уникальные идентификаторы – номера. Классификатор состоит из нескольких значений, и каждое значение имеет свое уникальное имя (обычно, 2-3 буквы и цифры) и расшифровку (определение).
Примеры классификаторов – единицы веса, типы валют, коды стран.
Рассмотрим, например, классификатор (группу идентификаторов) номер 90
90 Measurement Unit Qualifier Единицы Измерения |
|
TYPE=ID MIN=1 MAX=1 Тип – идентификатор, длина имени MIN = 1, MAX = 1 |
|
Code specifying the linear dimensional unit Код, определяющий единицу линейного размера |
|
CODE | DEFINITION & EXPLANATION |
C | Centimeters |
E | Feet |
N | Inches |
X | Meters |
Становится понятно, что если элемент сегмента у нас имеет тип ID из классификатора 90, то речь идет о длине.
И если значение этого элемента, например, «N», то длина определяется в дюймах (inches).
Особо отмечу, что если элемент имеет тип данных ID, то его значение может принадлежать только одному классификатору, определенному стандартом для этого элемента в данном сегменте. Иначе говоря, не может быть ситуации, когда элемент типа ID может быть единицей измерения массы (например, классификатор 188 Weight Unit Code) и в то же время – единицей измерения длины (например, классификатор 90 Measurement Unit Qualifier).
Так же часто в классификаторе существует специальное значение – «Z», «ZZ» или «ZZZ» в зависимости от ограничений по длине значения идентификатора. Это имя имеет расшифровку (определение) «Mutually Defined» (взаимно определенное), и используется для обозначения единиц, отсутствующих в стандарте для данного классификатора, о которых участники документооборота договорились заранее. Компании, которые обмениваются документами, когда встречают подобное значение идентификатора, в большинстве случаев знают, о чем идет речь – это могут быть «(33) попугая» или «(10) спичечных коробков».
Для этого типа данных так же накладывается ограничение на длину строки, например 3/3 – от 3 до 3 символов, или (проще говоря) 3 символа ровно. Данное ограничение исходит не от стандарта сегмента документа, а от типа используемого классификатора (если классификатор 90 определяет ограничение на длину значения как 1/1, то элемент-идентификатор который использует этот классификатор, так же будет иметь ограничение на длину 1/1).
Существуют специальные справочники (например, , по которым можно определить набор значений данного классификатора или по значению элемента и номеру классификатора найти определение этого значения.
DT (Date) – дата. Этот тип данных предназначен для хранения значения даты и имеет формат YYMMDD (начиная с версии 4010 – CCYYMMDD). Примеры: 20060625 (25 Июня 2006).
TM (Time) – время. Этот тип данных предназначен для хранения значения времени и имеет формат HHMM. Примеры: 1259 (12:59).Так же может включать секунды (опционально).
B (Binary) – бинарные данные, последовательность 8-ми битных байтов.
<composite> - композитный элемент. Это элемент, который содержит сразу несколько значений, разделенных специальным символом (этот символ указывается в сегменте ISA, элемент ISA-16). Примеры: 12345.67>12.55 (в данном примере разделителем является “>”). Элементы, из которых состоит композитный элемент, называются так же компонентами (component data element) или суб-элементами (sub-element).