Как понять файл EDI? - PullRequest
       6

Как понять файл EDI?

29 голосов
/ 16 сентября 2009

Я видел XML раньше, но никогда не видел ничего подобного EDI .

Как мне прочитать этот файл и получить данные, которые мне нужны? Я вижу такие вещи, как ~, REF, N1, N2, N4, но понятия не имею, что означает этот материал.

Я ищу примеры и документацию. Где я могу их найти?

АОЛО Руководство по EDI, которое я нашел, говорит, что оно основано на «ANSI ASC X12 / ver. 4010». Должен ли я искать форму X12?

Пожалуйста, помогите.

Ответы [ 4 ]

76 голосов
/ 22 октября 2009

Некоторые из этих ответов очень хороши. Я постараюсь заполнить некоторые вещи, которые они не упомянули.

EDI - это набор стандартов, наиболее распространенными из которых являются:

  • ANSI X12 (популярный в штатах)
  • EDIFACT (популярный в Европе)

Похоже, вы смотрите на X12 версии 4010. Это наиболее широко используемая (по моему опыту, во всяком случае) версия. Существует множество разных версий.

Файл, или, по сути, «обмен», состоит из сегментов и элементов (и иногда подэлементов). Каждый сегмент начинается с двух- или трехзначного идентификатора (ISA, GS, ST, N1, REF).

Структура всех документов начинается и заканчивается конвертом. Конверт обычно состоит из сегмента ISA и сегментов GS. В каждом файле может быть более одного сегмента GS, но в каждом файле должен быть только один сегмент ISA (обратите внимание, что не все играют по правилам).

ISA - это особый сегмент. В то время как все остальные сегменты разделены и, следовательно, могут иметь различную длину, сегмент ISA имеет фиксированную ширину. Это потому, что он говорит вам, как прочитать остальную часть файла.

Начните с последних трех символов сегмента ISA. Они расскажут вам разделитель элемента, разделитель подэлемента и разделитель сегмента. Вот пример строки ISA.

ISA: 00:: 00:: 01: 1515151515: 01: 5151515151: 041201: 1217: U: 00403: 000032123: 0: P: * ~

В этом случае «:» - это разделитель элемента, «*» - это разделитель субэлемента, а «~» - разделитель сегмента. Гораздо проще, если вы просто пытаетесь просмотреть файл, чтобы поставить разрывы строк после каждого разделителя сегмента (~).

ISA также сообщает, от кого и из какого документа, какая версия (00403, также известная как 4030), и контрольный номер обмена (0000321233). Другие вещи, вероятно, не важны для вас на данном этапе.

Этот документ от отправителя "01: 1515151515" и от получателя "01: 5151515151". Так что с "01:"? Что ж, это вводит важную концепцию в EDI, классификатор. Несколько элементов имеют квалификаторы, которые сообщают вам, к какому типу данных относится следующий элемент. В этом случае 01 должен быть числом Данна и Брэдстрита. Другими квалификаторами для элементов ISA05 и ISA07 являются 12 для номера телефона и ZZ для «пользовательского». Вы найдете концепцию классификаторов во всех сегментах EDI. Приличное эмпирическое правило: если это два символа, это квалификатор. Чтобы узнать, что означают все квалификаторы, вам потребуется руководство по стандартам (либо в печатном виде из органа по стандартам EDI, либо в каком-либо программном обеспечении).

Следующая строка - GS. Это функциональная группа (способ группировки похожих документов в рамках обмена). Например, у вас может быть несколько заказов на покупку и несколько функциональных подтверждений в ISA. Они должны быть помещены в отдельные функциональные группы (сегменты GS). Вы можете определить тип документов в сегменте GS, посмотрев на первый элемент GS01.

GS: РО: 9988776655: 1122334455: 20041201: 1217: 128: X: 004030 * * одна тысяча тридцать-один

Помимо типа документа, вы снова можете видеть от (9988776655) и до (1122334455). На этот раз они используют разные идентификаторы, что является законным, потому что вы можете получать обмен от имени кого-то другого (например, если вы посредник). Вы также можете увидеть номер версии снова, на этот раз с завершающим «0» (0004030). Используйте значительную логику цифр, чтобы убрать начальные нули. Почему здесь есть дополнительный ноль, а не в ISA? Я не знаю. Наконец, этот сегмент GS также имеет свой собственный идентификатор 128.

Вот и все для начала конверта. После этого будет цикл документов, начинающийся с ST. В этом случае все они будут PO, которые имеют код (850), поэтому строка будет начинаться с ST: 850: blablabla

Материал конверта заканчивается сегментом GE, который ссылается на идентификатор GS (128), чтобы вы знали, какой сегмент закрывается. Затем приходит IEA, который аналогичным образом закрывает ISA.

GE: 1: 128 ~ МЭА: 1: 000032123 ~

Это обзор структуры и как ее читать. Чтобы понять это, вам понадобится справочник или программное обеспечение, чтобы вы понимали коды, много-много времени и много-много практики. Удачи, и напишите снова, если у вас есть более конкретные вопросы.

28 голосов
/ 16 сентября 2009

Ух, воспоминания. Прошло более шестнадцати лет ...

В принципе, каждая строка представляет собой «сегмент», а идентификаторы начала строки представляют собой идентификатор сегмента. Каждый сегмент содержит «элементы», которые по существу являются позиционными полями. Они разделены «разделителями элементов».

Разные сегменты означают разные вещи и могут указывать циклические конструкции, повторы и т. Д.

Вам необходимо получить текущую версию стандарта для базового синтаксического анализа, а затем вам нужен словарь данных для описания содержания документа, с которым вы работаете, а затем вам может понадобиться профиль отрасли, руководство по внедрению или похоже на соглашения с конкретным типом документа в вашей среде.

Примеры? Не актуально, но я уверен, что вы можете найти целую кучу, используя выбранную вами поисковую систему. Как только вы закончите базовый анализ сегмента / элемента, вы будете иметь дело с данными уровня вашего приложения, и я не знаю, насколько вам поможет общий пример.

6 голосов
/ 16 сентября 2009

EDI - это формат файлов для структурированных текстовых файлов, который используется многими крупными организациями и компаниями для стандартного обмена базами данных. Он имеет тенденцию быть намного короче, чем XML, который был великолепен, когда пакеты данных должны были быть небольшими. Многие организации до сих пор используют его, так как многие мэйнфреймовые системы используют EDI вместо XML.

С сообщениями EDI вы имеете дело с текстовыми сообщениями, которые соответствуют определенному формату. Это было бы похоже на XML-схему, но EDI на самом деле не имеет стандартизированного языка схемы. Сами сообщения EDI на самом деле не читаются человеком, в то время как большинство спецификаций на самом деле не читаются машиной. В этом и заключается преимущество XML, поскольку и XML, и его схема могут быть прочитаны людьми и машинами.

Скорее всего, когда вы делаете электронные банковские операции через какое-либо клиентское программное обеспечение (не основанное на браузере), в вашей системе уже может быть несколько файлов EDI. Банки по-прежнему предпочитают EDI, а не XML, для отправки данных транзакций, хотя многие также используют свои собственные текстовые форматы.

Чтобы понять EDI, вам нужно сначала понять данные, а также стандарт EDI, которому вы хотите следовать.

1 голос
/ 16 сентября 2009

Предполагая, что поток данных начинается с «ISA», в начале должен быть раздел «~ ST *», за которым следуют три цифры. Если вы можете опубликовать эти три цифры, я, возможно, предоставлю вам больше информации. Кроме того, знание отрасли было бы полезно. Например, здравоохранение использует 270, 271, 276, 277 и несколько других.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...